be6d579d41
- Added new sections in README.md for product documentation (PRD) and UI/UX design documentation, linking to `docs/smoke/PRODUCT.md` and `docs/smoke/UI.md` respectively, to enhance the overall documentation for the project.
戒烟/抽烟记录小程序
本小程序用于记录抽烟情况(日期、原因、烟瘾程度、数量等)。
时序图(前端流程)
见:docs/smoke/SEQUENCE.md
产品与 UI 文档
- 产品说明(PRD):
docs/smoke/PRODUCT.md - UI/UX 设计说明:
docs/smoke/UI.md
依赖
- 公共登录与认证:
docs/common/auth.md - 通用响应结构:
docs/common/response.md
数据表
主表:fa_smoke_log(DDL 见:docs/sql/smoke.sql)。
说明:
- 该表使用旧系统字段:
createtime/updatetime/deletetime(秒级时间戳),并非 GORM 默认的created_at/updated_at/deleted_at。 - 接口层通过 Token 识别用户,
uid由后端从登录用户推导,不允许前端传入。
用户基础信息(首次进入补全)
用于建立“初始基准/个性化策略”的用户信息表:
fa_smoke_user_profile(DDL 见:docs/sql/smoke.sql)
典型字段:
- 日均抽烟支数、烟龄、单包价格
- 抽烟动机、戒烟动力
- 起床/入睡时间(用于规避睡眠时间)
真实抽烟时间(推荐使用 smoke_at)
为支持“按时间节点分析”(例如:昨天哪些时段更容易想抽),建议在 fa_smoke_log 中新增:
smoke_at:真实抽烟时间(精确到时分秒,可补录)
数据约定建议:
- 前端若提供了真实时间:写入
smoke_at;并同步写smoke_time = date(smoke_at),方便沿用现有按天筛选。 - 前端未提供真实时间:
smoke_at=NULL,时间节点可用createtime作为近似(但补录会造成偏差)。
AI 戒烟建议(会员 + 广告解锁并行)
面向会员用户提供“昨日 AI 建议”;非会员用户在完成当日/指定日期的“看广告解锁”后也可生成建议。
涉及表(DDL 见:docs/sql/smoke.sql):
fa_smoke_ai_advice:按uid + advice_date + prompt_version缓存建议结果,避免重复调用 AI。fa_smoke_ai_advice_unlocks:非会员用户的“每日解锁”记录(按uid + unlock_date唯一)。fa_smoke_ai_next_smoke:保存“AI 下次抽烟时间节点”(每个时间点一条记录),AI 元信息复用fa_smoke_ai_advice(type=next_smoke_time)。
建议的权限判断顺序:
- 若用户是会员:直接允许生成/获取建议。
- 否则:查询
fa_smoke_ai_advice_unlocks是否已对unlock_date=昨天(或请求 date)解锁;已解锁则允许。 - 否则:拒绝并提示“开通会员或观看广告解锁”。
会员判断建议使用通用会员表:
user_memberships(DDL 见:docs/sql/users.sql)
无支付系统时,可用兑换码开通会员:
- API:
docs/membership/API.md - DDL:
docs/sql/membership.sql
给 AI 的输入(最小必需)建议包含:
- 昨日总量:
SUM(num) - 时间节点列表:按
COALESCE(smoke_at, FROM_UNIXTIME(createtime))排序的多条记录(每条带num/level/remark)