# 戒烟/抽烟记录小程序 本小程序用于记录抽烟情况(日期、原因、烟瘾程度、数量等)。 ## 产品与流程文档 - 产品说明(PRD):`docs/smoke/PRODUCT.md` - 算法与 AI 策略:`docs/smoke/ALGORITHM.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`)。 建议的权限判断顺序: 1) 若用户是会员:直接允许生成/获取建议。 2) 否则:查询 `fa_smoke_ai_advice_unlocks` 是否已对 `unlock_date=昨天(或请求 date)` 解锁;已解锁则允许。 3) 否则:拒绝并提示“开通会员或观看广告解锁”。 会员判断建议使用通用会员表: - `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`)