16844d4a42
- Added AI configuration options to .env.example and config.go for OpenAI integration. - Implemented Redis caching for session management in main.go and auth middleware. - Updated smoke logging service to support real smoking time (`smoke_at`) and AI advice retrieval. - Enhanced API routes to include endpoints for AI advice and unlock functionality for non-members. - Improved database schema with new tables for AI advice and unlock records. - Expanded documentation to cover new AI features and Redis caching implementation.
戒烟/抽烟记录小程序
本小程序用于记录抽烟情况(日期、原因、烟瘾程度、数量等)。
依赖
- 公共登录与认证:
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由后端从登录用户推导,不允许前端传入。
真实抽烟时间(推荐使用 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_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)