Files
wx_service/docs/smoke/PRD.md
T
nepiedg c9ebfd5873 Update algorithm and API documentation for smoking recovery and motivation features
- Added unified backend calculations for health recovery, savings, and motivation generation in the algorithm documentation.
- Updated API documentation to include new endpoints for retrieving statistics and motivation messages, enhancing clarity on data retrieval processes.
- Revised product documentation to reflect changes in API usage for health recovery and savings calculations, ensuring consistency across all related files.
2026-01-25 09:33:10 +00:00

7.1 KiB
Raw Blame History

戒烟小程序 - 产品需求文档 (PRD)

1. 产品概述

1.1 产品定位

一款基于 AI 辅助的科学戒烟小程序,通过记录抽烟行为、数据分析、智能递减计划帮助用户逐步减少吸烟量,最终实现戒烟目标。

1.2 核心价值

  • 记录追踪:精确记录每次抽烟/忍住行为
  • 数据洞察:可视化展示吸烟趋势与规律
  • AI 指导:个性化递减建议与时间节点规划
  • 正向激励:省钱计算、健康恢复、成就系统

1.3 目标用户

  • 有戒烟意愿的吸烟者
  • 想要减少吸烟量的用户
  • 需要科学方法辅助戒烟的人群

2. 功能模块

2.1 首页 (home_dashboard)

核心目标:快速记录 + 实时激励

元素 说明 数据来源
问候语 根据时段显示(早上好/下午好等) + 用户昵称 本地计算 + profile
AI 提示卡片 发现的抽烟规律/建议(可关闭) GET /ai/advice 缓存
计时环 距上次抽烟时间(时:分:秒) GET /next_smoke_timelast_smoke_at(前端计时)
下次建议时间 显示建议的下次抽烟时间点 GET /next_smoke_time
今日已抽 X / 目标数,较昨日 ±N next_smoke_time.today_count + next_smoke_time.reduced_from_yesterday(可为负) + next_smoke_time.exceeded_yesterday(标识“超出昨日”)
烟瘾发作已抵抗 忍住次数统计 next_smoke_time.resisted_count
激励语 当天一句话鼓励 GET /motivation
记录抽烟按钮 快速记录一次抽烟 POST /logs
想抽忍住了按钮 记录成功抵抗 POST /logs/resisted

性能要求

  • 首屏渲染 < 500ms
  • 关键数据(计时环)优先加载
  • 非关键数据(AI提示)异步延迟加载

2.2 统计页 (smoking_statistics)

核心目标:数据可视化 + 趋势分析

功能 说明 数据来源
周/月/年切换 切换统计时间范围 `GET /stats?range=week
每周洞察 AI 分析本周表现 GET /ai/advice
吸烟趋势图 柱状图展示每日吸烟量 stats.trend
趋势对比 较上周期变化 stats.change_percent
日均吸烟量 统计周期内日均值 stats.daily_average
节省金额 后端统一计算 stats.money
肺部功能恢复 后端统一计算 stats.health
连续记录天数 用户活跃天数 stats.streak_days
已拒绝次数 累计忍住次数 stats.resisted_total

2.3 AI 助手页 (ai_quit_assistant)

核心目标:个性化指导 + 阶段管理

功能 说明 数据来源
减量计划卡片 当前阶段(第X/30天)、阶段名称、进度 profile + 本地计算
每日 AI 分析 对话式展示昨日分析与今日建议 GET /ai/advice
今日目标 任务清单(喝水、散步、阅读激励等) AI 生成 + 本地存储
记录按钮 快速记录吸烟或烟瘾 跳转记录流程

阶段划分

  1. 阶段1 - 记录期 (Day 1-7):建立基线数据
  2. 阶段2 - 减量期 (Day 8-21):逐步减少吸烟量
  3. 阶段3 - 巩固期 (Day 22-30):维持低量/零吸烟

2.4 历史记录页 (activity_history)

核心目标:记录管理 + 行为回顾

功能 说明 数据来源
筛选 Tabs 全部 / 已抽烟 / 已忍住 前端筛选
时间线 按日期分组展示 GET /logs
记录卡片 类型、时间、原因标签、间隔时间 logs 数据
左滑操作 编辑 / 删除 POST/DELETE /logs/:id
新增按钮 浮动按钮快速新增 跳转记录流程

2.5 个人中心 (profile_&_settings)

核心目标:用户信息 + 设置管理

功能 说明 数据来源
用户信息 头像、昵称 微信授权
目标展示 目标戒烟日期、连续天数 profile
目标设定 调整每日限额与戒烟日期 POST /profile
AI 计划调整 个性化辅导风格设置 profile 扩展
通知设置 提醒时间、频率 本地存储
会员解锁 PRO 功能 / 广告解锁 会员系统
基础设置 作息时间等 POST /profile
隐私与数据 数据导出、账号注销 待扩展

3. 用户流程

3.1 新用户引导流程

启动小程序
    ↓
微信登录 (wx.login)
    ↓
检查 profile (GET /profile)
    ↓
exists=false ? → 进入引导页
    ↓
Step 1: 每日吸烟量 (baseline_cigs_per_day)
    ↓
Step 2: 烟龄 (smoking_years)
    ↓
Step 3: 吸烟动机 (smoke_motivations)
    ↓
Step 4: 戒烟动力 (quit_motivations)
    ↓
Step 5: 作息时间 (wake_up_time, sleep_time)
    ↓
Step 6: 设置目标 (目标日期、每日限额)
    ↓
提交 profile (POST /profile)
    ↓
进入首页

3.2 日常使用流程

打开首页
    ↓
查看计时器 + 下次建议时间
    ↓
[想抽烟时]
    ├── 还没到建议时间 → 点击"想抽忍住了"
    └── 到了/忍不住 → 点击"记录抽烟"
    ↓
记录表单 (可选填原因)
    ↓
提交成功 → 更新首页数据

4. 数据模型

4.1 用户档案 (profile)

字段 类型 说明
baseline_cigs_per_day int 基准日吸烟量
smoking_years int 烟龄(年)
pack_price_cent int 单包价格(分)
smoke_motivations []string 抽烟动机
quit_motivations []string 戒烟动力
wake_up_time string 起床时间 HH:MM
sleep_time string 入睡时间 HH:MM
daily_target int 每日目标限额(扩展)
quit_date date 目标戒烟日期(扩展)

4.2 抽烟记录 (log)

字段 类型 说明
smoke_time date 记录日期
smoke_at datetime 实际抽烟时间
level int 烟瘾等级 0-5 (0=忍住)
num int 支数 (0=忍住)
remark string 原因备注

5. 性能优化策略

5.1 首页加载优化

目标:首屏 < 500ms

[并行请求]
├── GET /profile (用户信息,判断是否需引导)
├── GET /next_smoke_time (首页汇总 + 下次建议时间)
└── GET /dashboard (看板数据,可延迟)

[延迟加载]
└── GET /ai/advice (AI提示卡片,非关键)

缓存策略

  • profile: 登录后缓存,变更时更新
  • next_smoke_time: 每次进入刷新,下一次记录后刷新
  • dashboard: 进入看板时刷新
  • ai/advice: 按天缓存

5.2 数据预加载

  • 首页加载时预取统计页首屏数据
  • TabBar 切换时使用缓存 + 后台刷新

6. 权限与会员

6.1 免费功能

  • 记录抽烟/忍住
  • 基础统计(周视图)
  • 首页计时器
  • 基础递减算法

6.2 会员/广告解锁功能

  • AI 每日建议
  • AI 时间节点规划
  • 月/年统计视图
  • 数据导出

7. 待扩展功能

  • 成就系统 (连续X天、累计忍住X次等)
  • 社交分享 (戒烟打卡海报)
  • 提醒推送 (到达建议时间提醒)
  • 健康知识卡片
  • 紧急求助 (烟瘾强烈时的快速干预)