17daf254cdfaa093194bc4bf104810e7f79233fa
Updated the onboarding page to include a navigation area with a step indicator and adjusted the progress bar styling. In the profile page, simplified the user section, added options for clearing cache and copying feedback email, and improved layout consistency. Enhanced overall visual design with a light green gradient theme.
戒烟助手小程序(smt)
基于 uni-app + Vue 3 + Pinia 的戒烟辅助小程序前端,核心目标是帮助用户记录抽烟/忍住行为,并通过首页看板、统计分析和 AI 建议逐步降低吸烟频率。
项目状态
- 当前分支:
master - 已落地核心流程:登录、引导、记录、历史、统计、首页整合接口渲染
- 部分页面能力仍在迭代(如个人中心部分菜单项)
功能概览
已实现
- 静默登录与会话持久化(
/auth/login+ 本地session_key) - 新用户引导(5 步问卷,提交
profile) - 首页 Dashboard(问候语、计时器、下次建议时间、今日统计、AI 提示卡)
- 记录能力
- 记录抽烟(数量、等级、备注、时间)
- 记录“想抽忍住了”
- 统一弹框组件:
smoke-record-dialog
- 历史记录页
- 分组展示(今天/昨天/日期)
- 按类型筛选(全部/已抽烟/已忍住)
- 下拉刷新、分页加载
- 编辑与删除
- 统计页
- 周/月/年切换
- 趋势柱状图、变化百分比、节省金额、健康恢复指标
规划中/开发中
- AI 助手页的深度交互(当前为基础展示)
- 个人中心多个菜单详情页(当前入口为占位)
技术栈
uni-appVue 3(<script setup>为主)Piniauni.request二次封装(401 自动重登后重试)easycom自动组件导入
页面与路由
在 pages.json 中注册了以下页面:
pages/index/index:首页pages/stats/index:统计pages/ai/index:AI 助手pages/logs/index:历史记录pages/profile/index:个人中心pages/onboarding/index:新用户引导
目录结构
smt/
├── api/ # 接口封装
├── components/ # 业务组件(含 smoke-record-dialog)
├── config/ # 环境配置(BASE_URL 等)
├── docs/ # PRD、API、算法与认证文档
├── hooks/ # 组合式逻辑(如 useLogin)
├── pages/ # 页面
├── stores/ # Pinia 状态管理
├── utils/ # 工具函数与本地存储封装
├── App.vue
├── main.js
├── manifest.json
└── pages.json
本地开发
1. 环境准备
- 推荐使用
HBuilderX打开项目目录 - 微信开发者工具(用于运行到微信小程序)
说明:本仓库当前未包含
package.json,默认按 HBuilderX/uni-app 工程方式运行。
2. 配置后端地址
编辑 config/index.js:
development.BASE_URL:开发环境 API 地址production.BASE_URL:生产环境 API 地址MINI_PROGRAM_ID:后端登录接口使用的小程序 ID
3. 小程序配置
manifest.json 中包含:
mp-weixin.appid- 微信端
urlCheck等基础配置
4. 运行
在 HBuilderX 中:
- 导入项目目录
- 运行到
微信开发者工具 - 确认接口可访问后开始联调
接口与文档
- 产品需求:
docs/PRD.md - 技术方案:
docs/TECH.md - 抽烟记录 API:
docs/api.md - 登录认证:
docs/auth.md - 算法说明:
docs/ALGORITHM.md - 组件文档:
components/smoke-record-dialog/README.md
关键实现说明
- 全局启动时在
App.vue发起静默登录 - 业务页面通过
useLogin().waitForLogin()确保登录完成后请求接口 api/request.js统一处理请求:- 自动注入
Authorization: Bearer <session_key> - 401 自动登录并重试一次
- 自动注入
注意事项
config/index.js里默认开发地址是局域网 IP,跨设备调试需改成可访问地址- 历史记录与统计页依赖后端返回格式,联调时请以
docs/api.md为准 - 仓库中
docs/*可能存在进行中的改动,提交前建议按需选择暂存文件
License
当前仓库未声明开源许可证;如需开源,请补充 LICENSE 文件。
Description
Languages
Vue
69.9%
HTML
16%
JavaScript
12.1%
SCSS
2%