Pārlūkot izejas kodu

添加研年艾灸椅APP需求文档_v2

caitianqi 3 mēneši atpakaļ
vecāks
revīzija
d5bb5fda3c

+ 3081 - 0
需求工作区/需求设计文档/研年艾灸椅APP需求文档_v2.md

@@ -0,0 +1,3081 @@
+# 研年艾灸椅APP需求文档(详细版)
+
+> 文档版本:v2.0  
+> 整理日期:2026-05-25  
+> 项目说明:后台和算法已完成,本文档用于指导APP前端开发  
+> 技术栈:UniApp框架(非UniAppX),支持iOS/Android/HarmonyOS跨平台  
+
+---
+
+## 目录
+
+- [1. 项目概述与架构](#1-项目概述与架构)
+- [2. 技术框架规范](#2-技术框架规范)
+- [3. 全局交互规范](#3-全局交互规范)
+- [4. 启动与引导模块](#4-启动与引导模块)
+- [5. 登录注册模块](#5-登录注册模块)
+- [6. 用户管理模块](#6-用户管理模块)
+- [7. 设备管理模块](#7-设备管理模块)
+- [8. 首页-设备控制模块](#8-首页-设备控制模块)
+- [9. 无艾灸模式(休闲模式)](#9-无艾灸模式休闲模式)
+- [10. 专业模式(一键艾灸)](#10-专业模式一键艾灸)
+- [11. 自定义模式](#11-自定义模式)
+- [12. 艾灸执行过程](#12-艾灸执行过程)
+- [13. 我的方案管理](#13-我的方案管理)
+- [14. 发现模块](#14-发现模块)
+- [15. 健康模块](#15-健康模块)
+- [16. 消息中心模块](#16-消息中心模块)
+- [17. 个人中心模块](#17-个人中心模块)
+- [18. 版本升级模块](#18-版本升级模块)
+- [19. 蓝牙通信规范](#19-蓝牙通信规范)
+- [20. 后台接口清单](#20-后台接口清单)
+- [21. 全局错误码与提示文案](#21-全局错误码与提示文案)
+- [22. 页面清单与路由表](#22-页面清单与路由表)
+
+---
+
+## 1. 项目概述与架构
+
+### 1.1 产品定义
+
+研年艾灸椅APP是一款配合智能艾灸椅硬件使用的移动控制应用。用户通过APP完成设备配对、艾灸方案选择/编辑、艾灸过程控制、设备状态监控等操作。APP通过蓝牙BLE与艾灸椅通信,通过HTTPS与后台服务交互。
+
+### 1.2 核心业务流程图
+
+```
++-------------------------------------------------------------+
+|  用户打开APP                                                  |
+|    ↓                                                         |
+|  首次使用? → 隐私政策 → 登录/注册 → 补充信息 → 首页            |
+|    ↓                                                         |
+|  已登录? → 检查蓝牙 → 连接设备 → 选择模式 → 开始艾灸          |
+|    ↓                                                         |
+|  艾灸中 ←→ 暂停/继续/结束 ←→ 查看记录                          |
++-------------------------------------------------------------+
+```
+
+### 1.3 系统架构
+
+```
++------------------+      BLE蓝牙      +------------------+
+|                  | <--------------> |                  |
+|   APP (UniApp)   |                   |   艾灸椅设备     |
+|                  |                   |   (主控端)       |
++--------+---------+                   +------------------+
+         | HTTPS RESTful
+         v
++------------------+                   +------------------+
+|                  | <--------------> |   算法服务       |
+|   后台服务       |                   |   (穴位计算)     |
+|   (业务API)      |                   +------------------+
+|                  |
+|  - 用户管理       |
+|  - 方案管理       |
+|  - 消息推送       |
+|  - 版本管理       |
+|  - 数据记录       |
+|  - 推荐算法       |
++------------------+
+```
+
+---
+
+## 2. 技术框架规范
+
+### 2.1 框架选型
+
+| 项目 | 规范 |
+|------|------|
+| 开发框架 | UniApp(Vue3语法,非UniAppX) |
+| 支持平台 | iOS / Android / HarmonyOS |
+| 蓝牙通信 | uni-app蓝牙API(BLE低功耗蓝牙) |
+| 网络请求 | uni.request(HTTPS) |
+| 本地存储 | uni.setStorageSync / plus.sqlite |
+| 推送服务 | uni-push 或厂商推送通道 |
+| 页面路由 | uni.navigateTo / uni.redirectTo |
+
+### 2.2 蓝牙通信要求
+
+- 蓝牙版本:BLE 4.0及以上
+- 通信协议:GATT协议
+- 数据帧格式:包头(1B) + 命令字(1B) + 数据长度(2B) + 数据内容(NB) + 校验(1B)
+- 坐标精度:毫米单位传输
+- 连接距离:有效范围内自动重连
+
+### 2.3 网络要求
+
+- 协议:HTTPS
+- 数据格式:JSON
+- 认证方式:Header携带Token(长期有效)
+- 超时设置:10秒
+- 重试策略:失败时自动重试1次
+
+---
+
+## 3. 全局交互规范
+
+### 3.1 页面加载规范
+
+| 场景 | 交互方式 |
+|------|---------|
+| 页面初始化 | 显示骨架屏,加载完成后展示内容 |
+| 数据加载中 | 显示loading动画,禁止重复提交 |
+| 数据为空 | 显示空状态插图+提示文字 |
+| 网络错误 | 显示错误状态,提供"重新加载"按钮 |
+| 请求失败 | Toast提示错误信息 |
+
+### 3.2 弹窗层级规范
+
+| 类型 | 使用场景 | 交互特性 |
+|------|---------|---------|
+| Toast | 轻提示(成功/失败/警告) | 2秒自动消失,不阻塞操作 |
+| 确认弹窗 | 需要用户确认的操作 | 阻断操作,必须选择 |
+| 底部弹窗 | 选项选择、信息展示 | 点击蒙层可关闭 |
+| 全屏弹窗 | 复杂表单填写 | 带返回/关闭按钮 |
+
+### 3.3 按钮状态规范
+
+| 状态 | 视觉表现 | 交互特性 |
+|------|---------|---------|
+| 正常 | 主色调填充 | 可点击 |
+| 禁用 | 灰色填充 | 不可点击,点击无响应 |
+| 加载中 | 显示loading图标 | 不可点击 |
+| 危险操作 | 红色填充 | 二次确认 |
+
+### 3.4 输入验证规范
+
+| 输入项 | 验证规则 | 错误提示 |
+|--------|---------|---------|
+| 手机号 | 1开头的11位数字 | "请输入正确的手机号码" |
+| 验证码 | 6位数字 | "请输入6位验证码" |
+| 用户姓名 | 1-20个字符 | "姓名长度不超过20个字符" |
+| 身高 | 50-250的数字 | "请输入50-250之间的数字" |
+| 体重 | 10-300的数字 | "请输入10-300之间的数字" |
+| 方案名称 | 1-30个字符 | "方案名称不超过30个字符" |
+
+### 3.5 下拉刷新与上拉加载
+
+| 页面 | 下拉刷新 | 上拉加载 |
+|------|---------|---------|
+| 我的设备 | 是(刷新连接状态) | 否 |
+| 我的方案 | 是 | 否 |
+| 发现首页 | 是 | 否 |
+| 专家方案 | 是 | 是 |
+| 消息中心 | 是 | 是 |
+| 使用记录 | 是 | 是 |
+| 健康推荐 | 是 | 是 |
+
+---
+
+## 4. 启动与引导模块
+
+### 4.1 冷启动流程
+
+**步骤说明:**
+
+```
+步骤1:用户点击APP图标
+  → 显示启动页(品牌LOGO,固定2秒)
+
+步骤2:判断是否为首次安装
+  → 是:进入隐私政策弹窗
+  → 否:进入步骤3
+
+步骤3:判断登录状态
+  → 本地存在有效Token:进入首页
+  → 本地无Token或Token失效:进入登录页
+```
+
+**错误处理:**
+| 异常场景 | 处理方式 |
+|---------|---------|
+| 启动时崩溃 | 记录日志,下次启动尝试恢复 |
+| 启动页加载超时 | 5秒后自动跳过 |
+| 本地数据损坏 | 清除本地缓存,视为首次启动 |
+
+### 4.2 隐私政策弹窗
+
+**页面元素:**
+- 弹窗标题:"服务协议与隐私政策"
+- 内容区域:滚动显示政策摘要
+- 关键条款高亮:
+  - 《用户协议》:协议适用范围、服务内容及形式、软件使用及许可、终端责任安全、用户权利与义务、用户行为规范、知识产权声明、用户信息保护
+  - 《隐私政策》:我们收集的信息(个人信息、设备信息、日志信息、位置信息)、我们如何使用信息
+- 底部按钮组:
+  - "不同意"按钮(灰色)
+  - "同意"按钮(主色调)
+
+**操作流程:**
+
+```
+步骤1:弹窗显示
+  → 用户阅读政策内容(可上下滚动)
+
+步骤2:用户点击"不同意"
+  → 弹出二次确认:"不同意将无法使用APP,是否退出?"
+  → 确认退出 → 关闭APP
+  → 取消 → 回到隐私政策弹窗
+
+步骤3:用户点击"同意"
+  → 记录同意状态(本地持久化)
+  → 关闭弹窗,进入登录页
+```
+
+**错误提示:**
+| 操作 | 错误提示 |
+|------|---------|
+| 未阅读直接点同意 | 无强制要求,但提供可滚动阅读 |
+| 点击内容中的链接 | 跳转对应的协议详情页面 |
+
+### 4.3 协议详情页面
+
+**页面元素:**
+- 顶部导航栏:返回按钮 + "隐私政策"/"用户协议"
+- 内容区域:完整协议文本
+- 支持字体缩放
+
+**操作流程:**
+```
+步骤1:从隐私政策弹窗点击协议链接 或 从设置页进入
+  → 打开协议详情页
+
+步骤2:用户阅读(可上下滚动)
+
+步骤3:点击返回按钮
+  → 返回上一页
+```
+
+---
+
+## 5. 登录注册模块
+
+### 5.1 登录页面
+
+**页面布局:**
+```
++----------------------------------+
+|  状态栏                            |
++----------------------------------+
+|                                    |
+|  HELLO,                            |
+|  欢迎使用研年健康平台               |
+|                                    |
+|  +------------------------------+  |
+|  | +86 | 请输入手机号            |  |
+|  +------------------------------+  |
+|                                    |
+|  +------------------------------+  |
+|  | 请输入验证码 | [获取验证码]   |  |
+|  +------------------------------+  |
+|                                    |
+|  +------------------------------+  |
+|  |           登录                |  |
+|  +------------------------------+  |
+|                                    |
+|  ---------- 其他登录方式 ---------  |
+|                                    |
+|     [微信图标]   [Apple图标]       |
+|                                    |
+|  [ ] 登录即代表同意隐私政策        |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+【整体流程】
+步骤1:进入登录页
+  → 手机号输入框自动获得焦点
+  → 唤起数字键盘
+
+步骤2:输入手机号
+  → 实时校验手机号格式(1开头的11位数字)
+  → 格式正确时,"获取验证码"按钮变为可用状态
+  → 格式不正确时,按钮保持禁用状态
+
+步骤3:点击"获取验证码"
+  → 按钮变为禁用状态,开始60秒倒计时
+  → 按钮文字变为"60s"(逐秒递减)
+  → 后台调用发送验证码接口
+  → 发送成功:Toast提示"验证码已发送"
+  → 发送失败:恢复按钮状态,Toast提示错误原因
+
+步骤4:输入验证码
+  → 限制输入6位数字
+  → 满6位后自动校验格式
+
+步骤5:点击"登录"按钮
+  → 按钮进入loading状态
+  → 调用登录接口(手机号+验证码)
+  → 登录成功:
+    - 保存Token到本地(持久化存储,永不过期)
+    - 保存用户信息
+    - 判断是否为首次登录
+      - 是:跳转到补充信息页
+      - 否:跳转到首页
+  → 登录失败:
+    - 恢复按钮状态
+    - Toast提示错误信息
+
+【第三方登录流程】
+步骤1:点击微信/Apple图标
+  → 唤起对应第三方登录SDK
+  → 用户完成授权
+  → 获取第三方授权码
+  → 调用后台绑定/登录接口
+  → 后续流程同手机号登录
+```
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 | 处理方式 |
+|------|---------|---------|
+| 手机号为空 | "请输入手机号" | 登录按钮禁用 |
+| 手机号格式错误 | "请输入正确的11位手机号" | 实时校验,红色边框提示 |
+| 手机号未注册 | 后台自动注册新用户 | 无需提示,直接进入补充信息 |
+| 验证码为空 | "请输入验证码" | 登录按钮禁用 |
+| 验证码格式错误 | "验证码为6位数字" | 实时校验 |
+| 验证码已过期 | "验证码已过期,请重新获取" | 清空验证码框,恢复获取按钮 |
+| 验证码错误 | "验证码错误,请重新输入" | 保留手机号,清空验证码框 |
+| 发送验证码频繁 | "发送过于频繁,请稍后再试" | 保持倒计时 |
+| 网络请求失败 | "网络连接失败,请检查网络" | 提供重试按钮 |
+| 服务器异常 | "服务器繁忙,请稍后再试" | 提供重试按钮 |
+| 第三方登录取消 | "登录已取消" | Toast提示,留在登录页 |
+| 第三方登录失败 | "登录失败,请尝试其他方式" | Toast提示 |
+
+**边缘场景处理:**
+
+| 场景 | 处理方案 |
+|------|---------|
+| 倒计时期间切换页面 | 保持倒计时,返回后显示剩余时间 |
+| 倒计时结束未获取 | 按钮恢复为"获取验证码" |
+| 登录过程中杀掉APP | 下次启动重新走登录流程 |
+| 同一账号多设备登录 | 允许多设备同时登录,各自独立 |
+
+### 5.2 补充信息页面(首次登录引导)
+
+**页面布局:**
+```
++----------------------------------+
+|  <  完善个人信息                  |
++----------------------------------+
+|                                    |
+|  请完善以下信息,以便我们为您      |
+|  提供更精准的艾灸服务              |
+|                                    |
+|  姓名                              |
+|  +------------------------------+  |
+|  | 请输入您的姓名                |  |
+|  +------------------------------+  |
+|                                    |
+|  性别                              |
+|  [ 男 ]  [ 女 ]                   |
+|                                    |
+|  年龄                              |
+|  +------------------------------+  |
+|  | 请选择年龄                    |  |
+|  +------------------------------+  |
+|                                    |
+|  身高(cm)                        |
+|  +------------------------------+  |
+|  | 请输入身高                    |  |
+|  +------------------------------+  |
+|                                    |
+|  体重(kg)                        |
+|  +------------------------------+  |
+|  | 请输入体重                    |  |
+|  +------------------------------+  |
+|                                    |
+|  +------------------------------+  |
+|  |          保存并进入           |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:新用户登录成功后自动跳转
+  → 表单所有字段为空
+
+步骤2:填写姓名
+  → 输入1-20个字符
+  → 超过20字符禁止继续输入
+
+步骤3:选择性别
+  → 点击男/女单选按钮
+  → 选中项高亮显示
+
+步骤4:选择年龄
+  → 点击弹出底部选择器
+  → 范围:1-120岁
+  → 默认选中25岁
+  → 滑动选择后点击确认
+
+步骤5:填写身高
+  → 输入50-250的数字
+  → 限制只能输入数字
+  → 输入范围外数字时红色提示
+
+步骤6:填写体重
+  → 输入10-300的数字
+  → 限制只能输入数字
+
+步骤7:点击"保存并进入"
+  → 校验所有字段是否已填写
+  → 未填写项红色提示并滚动到对应位置
+  → 校验通过:调用用户信息更新接口
+  → 保存成功:进入首页
+  → 保存失败:Toast提示错误信息
+```
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 姓名为空 | "请输入姓名" |
+| 姓名超过20字符 | "姓名不超过20个字符" |
+| 性别未选择 | "请选择性别" |
+| 年龄未选择 | "请选择年龄" |
+| 身高为空 | "请输入身高" |
+| 身高超出范围 | "请输入50-250之间的数字" |
+| 体重为空 | "请输入体重" |
+| 体重超出范围 | "请输入10-300之间的数字" |
+| 网络保存失败 | "保存失败,请检查网络后重试" |
+
+**边缘场景:**
+
+| 场景 | 处理方案 |
+|------|---------|
+| 用户点击返回 | 弹窗提示"完善信息可获得更精准的服务,是否跳过?",跳过则以默认参数进入首页 |
+| 保存过程中断网 | 提示网络错误,保留表单数据 |
+| 后台返回错误 | 保留表单数据,提示具体错误原因 |
+
+---
+
+## 6. 用户管理模块
+
+### 6.1 用户列表管理
+
+**入口:** 首页 → 设备详情页 → 点击用户切换按钮
+
+**页面布局:**
+```
++----------------------------------+
+|  <  用户管理          [+ 新增]   |
++----------------------------------+
+|  最多可添加10个用户                |
++----------------------------------+
+|  [========= 用户卡片 =========]   |
+|  头像  张三  男  28岁             |
+|       肩高:135cm 肩宽:42cm       |
+|       [编辑]  [删除]              |
+|  [============================]   |
+|                                    |
+|  [========= 用户卡片 =========]   |
+|  头像  李四  女  56岁             |
+|       肩高:128cm 肩宽:38cm       |
+|       [编辑]  [删除]              |
+|  [============================]   |
++----------------------------------+
+```
+
+**操作流程 - 查看用户列表:**
+
+```
+步骤1:进入用户管理页
+  → 调用接口获取用户列表
+  → 显示loading动画
+  → 加载完成显示用户卡片列表
+
+步骤2:用户切换
+  → 点击某个用户卡片
+  → 该卡片高亮显示(选中状态)
+  → 保存选中用户ID到本地
+  → Toast提示"已切换至用户:XXX"
+  → 自动返回设备详情页
+```
+
+**操作流程 - 新增用户:**
+
+```
+步骤1:点击右上角"+ 新增"按钮
+  → 进入体形数据录入页
+
+步骤2:填写用户信息
+  → 同5.2节补充信息表单
+
+步骤3:点击保存
+  → 校验:当前用户数量是否已达到10个
+  → 已达10个:Toast提示"最多可添加10个用户,请先删除其他用户"
+  → 未满10个:调用新增接口
+  → 成功:返回用户列表,显示新用户
+  → 失败:提示错误信息
+```
+
+**操作流程 - 编辑用户:**
+
+```
+步骤1:点击用户卡片的"编辑"按钮
+  → 进入编辑页面
+  → 表单回显当前用户信息
+
+步骤2:修改信息
+  → 同新增流程
+
+步骤3:点击保存
+  → 调用编辑接口
+  → 成功:返回列表页,刷新显示
+```
+
+**操作流程 - 删除用户:**
+
+```
+步骤1:点击用户卡片的"删除"按钮
+  → 弹出确认弹窗:"确定删除用户XXX?删除后将无法恢复"
+  → 按钮:"取消" / "确定删除"(红色)
+
+步骤2:点击确定
+  → 调用删除接口
+  → 删除成功:移除该卡片,Toast提示"删除成功"
+  → 删除失败:Toast提示错误
+```
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 用户达到上限(10人) | "最多可添加10个用户" |
+| 删除最后一个用户 | "至少保留一个用户" |
+| 删除失败 | "删除失败,请重试" |
+| 编辑时用户不存在 | "用户信息已过期,请刷新" |
+| 网络错误 | "网络连接失败,请检查网络" |
+
+### 6.2 体形数据录入
+
+**页面布局:**
+```
++----------------------------------+
+|  <  体形参数                      |
++----------------------------------+
+|  请录入体形参数,用于精准定位穴位   |
++----------------------------------+
+|                                    |
+|  肩高(地面到肩膀的高度,cm)       |
+|  +------------------------------+  |
+|  | 例如:135                     |  |
+|  +------------------------------+  |
+|  [========滑块========] 135cm    |
+|                                    |
+|  肩宽(两肩之间的宽度,cm)         |
+|  +------------------------------+  |
+|  | 例如:42                      |  |
+|  +------------------------------+  |
+|  [========滑块========] 42cm     |
+|                                    |
+|  体重(kg)                        |
+|  +------------------------------+  |
+|  | 例如:65                      |  |
+|  +------------------------------+  |
+|                                    |
+|  +------------------------------+  |
+|  |            保存              |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:进入体形参数页
+  → 如已有数据则回显
+
+步骤2:填写肩高
+  → 输入框输入数字
+  → 或拖动滑块调节
+  → 范围:50-250cm
+
+步骤3:填写肩宽
+  → 输入框输入数字
+  → 或拖动滑块调节
+  → 范围:20-80cm
+
+步骤4:填写体重
+  → 输入框输入数字
+  → 范围:10-300kg
+
+步骤5:点击保存
+  → 校验所有字段
+  → 调用体形数据保存接口
+  → 后台触发穴位坐标计算算法
+  → 保存成功:返回上一页
+  → 保存失败:提示错误
+```
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 肩高为空 | "请输入肩高" |
+| 肩高超出范围 | "肩高范围50-250cm" |
+| 肩宽为空 | "请输入肩宽" |
+| 肩宽超出范围 | "肩宽范围20-80cm" |
+| 体重为空 | "请输入体重" |
+| 体重超出范围 | "体重范围10-300kg" |
+| 保存失败 | "保存失败,请重试" |
+
+### 6.3 指纹录入绑定
+
+**操作流程:**
+
+```
+步骤1:在用户管理页选择"指纹录入"
+  → 进入指纹录入引导页
+
+步骤2:阅读操作说明
+  → 显示图文并茂的操作指引:
+    "请将手指放在艾灸椅扶手处的指纹采集器上,
+     听到'滴'声后抬起,重复3次完成录入"
+
+步骤3:点击"开始录入"
+  → 通过蓝牙发送指纹采集指令到设备
+  → 设备进入指纹录入模式
+  → APP显示"等待指纹录入..."
+
+步骤4:用户在设备上录入指纹
+  → 设备采集指纹
+  → 蓝牙回传指纹ID
+
+步骤5:绑定指纹
+  → APP收到指纹ID
+  → 调用后台接口绑定用户与指纹ID
+  → 显示"指纹录入成功"
+  → 返回用户管理页
+```
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 | 处理方式 |
+|------|---------|---------|
+| 设备未连接 | "请先连接艾灸椅设备" | 引导用户先连接设备 |
+| 指纹采集超时 | "指纹采集超时,请重试" | 提供"重新录入"按钮 |
+| 指纹质量不佳 | "指纹采集不清晰,请清洁手指后重试" | 重试 |
+| 指纹ID回传失败 | "设备通信异常,请检查蓝牙连接" | 重试 |
+| 后台绑定失败 | "绑定失败,请稍后再试" | 重试 |
+| 该指纹已被绑定 | "该指纹已被其他用户绑定,请更换手指" | 提示更换手指 |
+
+---
+
+## 7. 设备管理模块
+
+### 7.1 我的设备(首页默认页面)
+
+**页面布局:**
+```
++----------------------------------+
+|  我的设备             [+]添加    |
++----------------------------------+
+|  已添加的设备                      |
++----------------------------------+
+|  +---------------------------+    |
+|  |    [艾灸椅图片]            |    |
+|  |                           |    |
+|  |    我的艾灸椅              |    |
+|  |    ● 已连接               |    |
+|  +---------------------------+    |
+|                                    |
+|  +---------------------------+    |
+|  |    [艾灸椅图片]            |    |
+|  |                           |    |
+|  |    客厅艾灸椅              |    |
+|  |    ○ 未连接               |    |
+|  +---------------------------+    |
+|                                    |
++----------------------------------+
+|  [首页] [发现] [健康] [我的]      |
++----------------------------------+
+```
+
+**操作流程 - 进入页面:**
+
+```
+步骤1:点击底部Tab"首页"
+  → 检查本地是否有已绑定设备
+  → 无设备:显示空状态("暂无设备,点击添加" + 添加按钮)
+  → 有设备:显示设备列表卡片
+
+步骤2:自动刷新设备状态
+  → 遍历设备列表尝试蓝牙连接
+  → 已连接设备显示"已连接"绿色状态
+  → 未连接设备显示"未连接"灰色状态
+  → 连接中显示loading动画
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 蓝牙未开启 | 提示"蓝牙未开启,部分功能不可用" |
+| 刷新状态失败 | "状态刷新失败,下拉重试" |
+| 连接超时 | "连接超时,请确保设备在附近且已开机" |
+
+### 7.2 添加设备流程
+
+**完整操作流程:**
+
+```
+【步骤1:进入添加页面】
+操作:点击"+"按钮
+结果:跳转到添加设备页
+
+【步骤2:检查蓝牙状态】
+操作:页面自动检查手机蓝牙是否开启
+  → 蓝牙已开启:进入步骤3
+  → 蓝牙未开启:弹出引导弹窗
+    弹窗内容:"当前手机蓝牙未开启,是否打开以扫描附近蓝牙设备?"
+    按钮:"取消" / "去开启"
+    点击"取消":返回上一页
+    点击"去开启":跳转系统蓝牙设置
+      → 用户开启蓝牙后返回APP
+      → 自动进入步骤3
+
+【步骤3:搜索设备】
+页面显示:
+  - 中央:蓝牙信号搜索动画(波纹扩散效果)
+  - 文字:"正在搜索附近设备..."
+  - 下方:"请确保艾灸椅已接通电源并处于待连接状态"
+
+后台行为:
+  → 调用 uni.openBluetoothAdapter 初始化蓝牙
+  → 调用 uni.startBluetoothDevicesDiscovery 开始搜索
+  → 监听 uni.onBluetoothDeviceFound 事件
+  → 超时设置:30秒
+
+【步骤4:搜索结果处理】
+
+情况A:搜索到艾灸椅设备
+  → 底部弹出设备选择弹窗
+  → 弹窗标题:"搜索到以下设备"
+  → 列表显示发现的设备名称(过滤非艾灸椅设备)
+  → 点击设备项选中(高亮)
+  → 按钮:"取消" / "连接"
+
+  点击"连接"后:
+    → 显示"正在连接..."
+    → 调用 uni.createBLEConnection
+    → 连接成功:
+      → 停止搜索
+      → 发现GATT服务和特征值
+      → 显示"连接成功"
+      → 1秒后自动跳转到设备详情页
+    → 连接失败:
+      → 提示"连接失败,请重试"
+      → 保留在弹窗,可重新选择
+
+情况B:未搜索到设备(30秒超时)
+  → 停止搜索动画
+  → 显示"未扫描到设备"
+  → 提示文字:"请检查:\n1. 手机蓝牙是否已开启\n2. 艾灸椅是否已接通电源\n3. 艾灸椅是否在附近(10米内)"
+  → 按钮:"重新搜索" / "手动输入"
+  → 点击"重新搜索":回到步骤3
+
+情况C:搜索过程中蓝牙被关闭
+  → 停止搜索
+  → 提示"蓝牙已关闭,搜索已停止"
+  → 提供"开启蓝牙重新搜索"按钮
+
+【步骤5:绑定设备】
+操作:首次连接成功后自动绑定
+  → 调用后台接口:绑定设备到当前用户
+  → 保存设备信息到本地
+  → 保存蓝牙MAC地址用于自动重连
+  → Toast提示"设备添加成功"
+```
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 | 处理方式 |
+|------|---------|---------|
+| 蓝牙适配器初始化失败 | "蓝牙初始化失败,请重启手机蓝牙" | 引导重启蓝牙 |
+| 搜索被其他应用占用 | "蓝牙搜索被占用,请关闭其他应用后重试" | 提示关闭其他BLE应用 |
+| 连接被拒绝 | "连接被拒绝,请确认设备是否处于配对模式" | 引导检查设备 |
+| 连接超时 | "连接超时,请确保设备在有效范围内" | 重试 |
+| 服务发现失败 | "设备服务异常,请重启设备后重试" | 引导重启设备 |
+| 特征值获取失败 | "设备通信异常" | 断开重连 |
+| 绑定后台接口失败 | "设备绑定失败,请检查网络" | 本地保存,网络恢复后重试 |
+| 已达到最大绑定数 | "每个账号最多绑定5台设备" | 提示解绑旧设备 |
+
+### 7.3 设备详情页
+
+**页面布局:**
+```
++----------------------------------+
+|  <  我的艾灸椅        [≡]菜单   |
++----------------------------------+
+|                                    |
+|        [艾灸椅3D图]               |
+|              ● 大椎穴             |
+|                                    |
+|          蓝牙已连接               |
+|                                    |
++----------------------------------+
+|  选择模式                          |
+|  +----------------------------+   |
+|  | 专业模式           [切换→] |   |
+|  +----------------------------+   |
++----------------------------------+
+|  其他功能                          |
+|  [⭐我的方案] [📦艾灸余量] [🔧滤芯状态] |
++----------------------------------+
+|                                    |
+|  +------------------------------+  |
+|  |        [开始按钮]            |  |
+|  |         ●                     |  |
+|  |        开始                   |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+**页面布局 - 艾灸执行中状态:**
+```
++----------------------------------+
+|  <  我的艾灸椅        [≡]菜单   |
++----------------------------------+
+|  [设备] [穴位]                    |
+|        [艾灸椅3D图/穴位图]       |
+|              ● 大椎穴             |
+|                                    |
+|          蓝牙已连接               |
++----------------------------------+
+|  选择模式                          |
+|  +----------------------------+   |
+|  | 自定义模式           [切换→] |   |
+|  +----------------------------+   |
++----------------------------------+
+|  其他功能                          |
+|  [📦艾灸余量] [🔧滤芯状态]       |
++----------------------------------+
+|  正在艾灸  00:10:38               |
+|  [继续]  [暂停]  [结束]           |
++----------------------------------+
+```
+
+**Tab切换 - 设备/穴位:**
+
+| Tab | 显示内容 |
+|-----|---------|
+| 设备 | 艾灸椅3D模型图,当前施灸穴位红点标记 |
+| 穴位 | 人体背部穴位图,白色圆点标记所有穴位,红色标记当前穴位 |
+
+**操作流程 - 模式切换:**
+
+```
+步骤1:点击"选择模式"卡片
+  → 底部弹出模式选择弹窗
+
+步骤2:选择模式
+  → 无艾灸模式
+  → 专业模式
+  → 自定义模式
+
+步骤3:点击确认
+  → 关闭弹窗,更新显示的模式名称
+  → 同时更新下方功能区域显示
+```
+
+### 7.4 设备状态监控
+
+**操作流程 - 查看耗材状态:**
+
+```
+步骤1:点击"艾灸余量"图标
+  → 进入耗材管理页面
+
+步骤2:页面显示
+  → 尘盒滤芯:进度条 + 百分比(如75%)
+  → 艾灸柱:剩余数量(如5个)
+  
+步骤3:实时监控
+  → 通过蓝牙轮询读取传感器数据(每5秒)
+  → 数据变化时更新显示
+  → 艾材余量≤3:进度条变红色
+  → 废料舱≥80%:进度条变红色
+```
+
+**状态阈值与提示:**
+
+| 监控项 | 正常 | 预警 | 危险 | 操作限制 |
+|--------|------|------|------|---------|
+| 艾材余量 | >3个 | 1-3个 | 0个 | =0时禁止启动艾灸 |
+| 废料舱 | <80% | 80-99% | 100% | ≥100%时禁止启动 |
+| 滤芯寿命 | <80% | 80-99% | 100% | ≥100%时提醒更换 |
+
+**预警提示文案:**
+
+| 场景 | 提示方式 | 提示文案 |
+|------|---------|---------|
+| 艾材余量=3 | Toast | "艾材余量不足,剩余3个,请及时补充" |
+| 艾材余量=1 | 弹窗 | "艾材即将用完,只剩1个,建议补充后再使用" |
+| 艾材余量=0 | 弹窗 | "艾材已用完,无法启动艾灸,请补充艾材" |
+| 废料舱=80% | Toast | "废料舱即将满仓,请及时清理" |
+| 废料舱=100% | 弹窗 | "废料舱已满,无法启动艾灸,请清理废料舱" |
+| 滤芯=80% | Toast | "滤芯使用寿命即将到期,建议更换" |
+| 滤芯=100% | 弹窗 | "滤芯已到期,请更换滤芯以保证使用效果" |
+
+### 7.5 座椅角度调节
+
+**页面布局:**
+```
++----------------------------------+
+|  <  座椅角度调节                  |
++----------------------------------+
+|                                    |
+|       [艾灸椅侧视图]              |
+|       当前角度:100°               |
+|                                    |
+|  90° [========●===========] 150°  |
+|        拖动滑块调节角度            |
+|                                    |
+|  快捷角度:                        |
+|  [ 90° ] [ 110° ] [ 130° ] [ 150° ]|
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:进入座椅角度调节页
+  → 显示当前角度值
+  → 滑块定位到当前角度
+
+步骤2A:拖动滑块调节
+  → 实时显示角度值(整数)
+  → 松开手指后:通过蓝牙发送目标角度指令
+  → 设备执行角度调节
+  → 设备反馈到位信号后更新显示
+
+步骤2B:点击快捷角度按钮
+  → 直接设置到对应角度
+  → 蓝牙发送目标角度指令
+
+步骤3:调节完成
+  → 点击返回按钮回到设备详情页
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 设备未连接 | "设备未连接,无法调节角度" |
+| 调节超时 | "角度调节超时,请检查设备" |
+| 调节被中断 | "调节被中断,当前角度:XXX°" |
+
+---
+
+## 8. 首页-设备控制模块
+
+### 8.1 模式选择流程
+
+**操作流程:**
+
+```
+步骤1:在设备详情页点击"选择模式"区域
+  → 底部弹出模式选择面板
+
+步骤2:面板内容
+  → 单选列表:
+    ○ 无艾灸模式
+      副标题:"纯休闲模式,享受白噪音和座椅按摩"
+    ○ 专业模式  
+      副标题:"选择功效,自动匹配灸方"
+    ○ 自定义模式
+      副标题:"自选穴位,个性化艾灸方案"
+  → 底部:"模式说明"链接
+
+步骤3:选择一个模式
+  → 该选项高亮(单选)
+  → 其他选项取消选中
+
+步骤4:点击"确认"或点击蒙层关闭
+  → 更新首页显示的模式名称
+  → 根据模式切换下方功能区域
+
+模式说明弹窗内容:
+- 无艾灸模式:不启动艾灸功能,仅使用座椅角度调节和白噪音播放功能
+- 专业模式:选择八大功效之一,系统自动根据您的体形数据计算穴位并匹配灸方
+- 自定义模式:手动选择穴位、设置时长和温度,编辑个性化艾灸方案
+```
+
+### 8.2 开始艾灸流程
+
+**操作流程(通用):**
+
+```
+前置检查(点击开始按钮时自动执行):
+  1. 检查蓝牙连接 → 未连接:提示"请先连接设备"
+  2. 检查艾材余量 → =0:提示"艾材不足,请补充"
+  3. 检查废料舱 → =100%:提示"废料舱已满,请清理"
+  4. 检查滤芯 → =100%:提示"滤芯已到期,请更换"
+
+步骤1:点击"开始"按钮
+  → 按钮变为loading状态
+  → 根据当前模式准备艾灸数据
+
+步骤2:进入预热阶段
+  → 显示"正在预热 X%"
+  → 进度条动态增长
+  → 此阶段设备预热艾材
+  → 显示倒计时(如30秒预热)
+
+步骤3:预热完成
+  → 显示"已完成预热 100%"
+  → 弹窗:"已完成预热,即将开始艾灸5s"
+  → 3秒倒计时自动关闭,或点击"确认"
+
+步骤4:艾灸开始
+  → 更新UI为"正在艾灸"状态
+  → 显示倒计时
+  → 开始播放白噪音(如已选择)
+  → 开始接收设备状态上报
+
+步骤5:艾灸过程中
+  → 实时更新:当前穴位、剩余时长、当前温度、当前手法
+  → 穴位Tab显示当前施灸穴位红色标记
+```
+
+---
+
+## 9. 无艾灸模式(休闲模式)
+
+### 9.1 模式配置页
+
+**页面布局:**
+```
++----------------------------------+
+|  <  无艾灸模式                    |
++----------------------------------+
+|                                    |
+|  座椅角度(拖动滑块调整)           |
+|  [====●===========]  100°         |
+|                                    |
++----------------------------------+
+|  选择模式                          |
+|  +----------------------------+   |
+|  | 无艾灸模式           [切换→] |   |
+|  +----------------------------+   |
++----------------------------------+
+|  白噪音                            |
+|  +----------------------------+   |
+|  | [⏵] 河流        03:21 / --:--|  |
+|  |    夏雨                       |  |
+|  |    森林                       |  |
+|  |    鸟鸣                       |  |
+|  |    漂流                       |  |
+|  |    雨滴                       |  |
+|  |    炉火                       |  |
+|  |    海浪                       |  |
+|  +----------------------------+   |
+|                                    |
+|  音量                              |
+|  [--●----------]                   |
+|  [🔔] 一键静音                     |
++----------------------------------+
+|                                    |
+|  +------------------------------+  |
+|  |           开始               |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+### 9.2 音效控制详细操作
+
+**操作流程 - 选择音效:**
+
+```
+步骤1:在音效列表中点击某一项
+  → 该项高亮显示
+  → 自动开始播放
+  → 播放按钮变为暂停图标
+  → 显示播放进度条
+
+步骤2:播放控制
+  → 点击暂停:暂停播放,按钮变为播放图标
+  → 点击继续:继续播放
+  → 进度条可拖动快进/快退
+
+步骤3:切换音效
+  → 点击其他音效项
+  → 当前音效淡出
+  → 新音效淡入播放
+  → 更新进度条
+
+步骤4:停止播放
+  → 模式切换或退出页面时自动停止
+```
+
+**音量调节:**
+
+```
+步骤1:拖动音量滑块
+  → 实时调节音量(0-100%)
+  → 通过蓝牙发送音量控制指令
+
+步骤2:点击静音按钮
+  → 一键静音(音量设为0)
+  → 静音图标变为带斜杠
+  → 保留系统提示音不受静音影响
+
+步骤3:再次点击静音
+  → 恢复静音前的音量值
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 音效播放失败 | "音效播放失败,请重试" |
+| 蓝牙音量控制失败 | "音量调节失败,请检查设备连接" |
+
+---
+
+## 10. 专业模式(一键艾灸)
+
+### 10.1 功效选择页面
+
+**页面布局:**
+```
++----------------------------------+
+|  <  选择功效                      |
++----------------------------------+
+|  请选择您需要的艾灸功效            |
++----------------------------------+
+|  +------------+  +------------+  |
+|  |    ❄️      |  |    💨      |  |
+|  |   驱寒     |  |   祛风     |  |
+|  +------------+  +------------+  |
+|                                    |
+|  +------------+  +------------+  |
+|  |    💧      |  |    🩸      |  |
+|  |   祛湿     |  |   化瘀     |  |
+|  +------------+  +------------+  |
+|                                    |
+|  +------------+  +------------+  |
+|  |    🫁      |  |    ❤️      |  |
+|  |   化痰     |  |   活血     |  |
+|  +------------+  +------------+  |
+|                                    |
+|  +------------+  +------------+  |
+|  |    ☀️      |  |    🌸      |  |
+|  |   扶阳     |  |   养颜     |  |
+|  +------------+  +------------+  |
++----------------------------------+
+|  +------------------------------+  |
+|  |          确认选择            |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:进入功效选择页
+  → 显示8种功效网格
+  → 无默认选中项
+
+步骤2:选择功效
+  → 点击某个功效卡片
+  → 卡片高亮(选中状态)
+  → 再次点击取消选中
+
+步骤3:确认选择
+  → 点击"确认选择"按钮
+  → 校验:必须选中至少1个功效
+  → 未选中:提示"请至少选择一种功效"
+  → 已选中:进入艾灸准备流程
+
+步骤4:一键艾灸准备
+  → 显示loading:"正在为您计算穴位方案..."
+  → APP读取当前选中用户的体形数据
+  → 调用后台接口:用户穴位坐标计算
+    参数:用户ID、体形数据(肩高/肩宽/体重)
+    返回:各穴位坐标参数
+  → 调用后台接口:功效-灸方参数匹配
+    参数:功效类型、穴位坐标
+    返回:灸方参数(穴位/温度/手法/时长)
+  → 计算完成:显示方案摘要弹窗
+
+步骤5:方案确认弹窗
+  → 显示内容:
+    "为您匹配的艾灸方案:"
+    "施灸穴位:大椎穴、风池穴、肩井穴..."
+    "总时长:25分钟"
+    "温度:40℃"
+  → 按钮:"重新选择" / "开始艾灸"
+  → 点击"开始艾灸":进入预热流程
+```
+
+**功效说明:**
+
+| 功效 | 适用症状 | 灸方特点 |
+|------|---------|---------|
+| 驱寒 | 手脚冰凉、畏寒怕冷 | 温热灸法,重点督脉 |
+| 祛风 | 风寒感冒、头痛 | 祛风穴位组合 |
+| 祛湿 | 身体困重、水肿 | 健脾祛湿穴位 |
+| 化瘀 | 血瘀疼痛、经络不通 | 活血化瘀手法 |
+| 化痰 | 咳嗽痰多、胸闷 | 理气化痰穴位 |
+| 活血 | 血液循环不畅 | 促进血液循环 |
+| 扶阳 | 阳气不足、乏力 | 温补阳气穴位 |
+| 养颜 | 面色暗沉、皮肤松弛 | 面部相关穴位 |
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 | 处理方式 |
+|------|---------|---------|
+| 未选择功效 | "请至少选择一种功效" | 停留在选择页 |
+| 用户无体形数据 | "请先完善体形信息" | 跳转到体形录入页 |
+| 穴位计算接口失败 | "方案生成失败,请检查网络后重试" | 提供重试按钮 |
+| 灸方匹配失败 | "灸方匹配失败,请尝试其他功效" | 返回功效选择 |
+| 蓝牙未连接 | "设备未连接,无法开始艾灸" | 引导连接设备 |
+| 用户切换后无数据 | "当前用户无体形数据,请先录入" | 跳转体形录入 |
+
+### 10.2 多功效组合选择(扩展功能)
+
+如需支持多功效同时选择:
+
+```
+操作:点击多个功效卡片(多选)
+  → 多个卡片同时高亮
+  → 按钮显示"已选X种功效"
+限制:最多同时选择3种功效
+  → 选第4个时提示"最多同时选择3种功效"
+```
+
+---
+
+## 11. 自定义模式
+
+### 11.1 穴位选择页面
+
+**页面布局:**
+```
++----------------------------------+
+|  <  穴位编辑         [设备][穴位] |
++----------------------------------+
+|                                    |
+|         [人体背部穴位图]          |
+|              ○ ○ ○               |
+|            ○  ●  ○              |
+|              ○ ○ ○               |
+|            ○  ○  ○               |
+|                                    |
+|  ○ 大椎穴  ○ 风池穴  ○ 肩井穴    |
+|  (白色=未选 红色=已选 黄色=当前)|
+|                                    |
++----------------------------------+
+|  已选穴位(0/3):                   |
+|                                    |
+|  +------------------------------+  |
+|  |           开始               |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+**操作流程 - 穴位选择:**
+
+```
+步骤1:进入穴位编辑页
+  → 默认显示"穴位"Tab
+  → 显示人体背部穴位图
+  → 所有可用穴位显示白色圆点
+  → 底部显示"已选穴位(0/3)"
+
+步骤2:点击穴位
+  → 方式A:点击图上穴位点
+    → 该穴位变为红色(选中状态)
+    → 显示穴位名称标签
+    → 底部"已选穴位"计数+1
+    → 弹出时长温度设定面板
+  
+  → 方式B:点击下方穴位名称列表
+    → 同上效果
+
+步骤3:设置时长和温度(弹出面板)
+  → 温度选择:38℃ / 40℃ / 42℃ / 44℃(单选)
+  → 时长选择:5分 / 10分 / 15分 / ... / 50分(单选)
+  → 按钮:"取消" / "确认"
+  → 点击确认:保存该穴位参数,面板关闭
+
+步骤4:继续添加穴位(可选)
+  → 重复步骤2-3
+  → 最多3个穴位
+  → 选第4个时:弹窗"单次最多可选择3个穴位"
+
+步骤5:总时长校验
+  → 每次添加后校验总时长
+  → 总时长 = 所有穴位时长之和
+  → 总时长 > 30分钟:弹窗"总时长不超过30分钟,请重新分配"
+  → 超出时:要求用户减少某个穴位的时长
+
+步骤6:调整穴位顺序
+  → 在已选穴位列表中长按拖拽
+  → 调整执行顺序
+  → 蓝牙下发时按此顺序
+
+步骤7:二次修改穴位参数
+  → 点击已选的穴位
+  → 重新弹出时长温度面板
+  → 回显已设置的参数
+  → 修改后确认
+
+步骤8:删除穴位
+  → 在已选穴位列表中左滑
+  → 显示"删除"按钮
+  → 点击删除,该穴位恢复白色
+
+步骤9:点击"开始"按钮
+  → 校验:至少选择1个穴位
+  → 未选穴位:提示"请至少选择一个穴位"
+  → 已选穴位:进入艾灸预热流程
+```
+
+**穴位图交互说明:**
+
+| 状态 | 颜色 | 说明 |
+|------|------|------|
+| 未选中 | 白色 | 可选的穴位 |
+| 已选中 | 红色 | 已添加到方案的穴位 |
+| 当前施灸 | 黄色闪烁 | 艾灸执行中正在施灸的穴位 |
+
+**详细错误提示清单:**
+
+| 场景 | 错误提示 | 处理方式 |
+|------|---------|---------|
+| 未选穴位点开始 | "请至少选择一个穴位" | 停留页面 |
+| 穴位超过3个 | "单次最多可增加3个穴位" | 阻止添加 |
+| 总时长超30分钟 | "总时长不超过30分钟,请重新分配" | 弹出时长调整面板 |
+| 温度未设置 | "请为每个穴位设置温度" | 引导设置 |
+| 时长未设置 | "请为每个穴位设置时长" | 引导设置 |
+| 穴位坐标获取失败 | "穴位数据加载失败,请下拉刷新" | 下拉刷新 |
+
+### 11.2 保存自定义方案
+
+**操作流程:**
+
+```
+触发条件:自定义模式编辑完成后
+
+步骤1:编辑完成后不直接开始,可选择保存
+  → 显示"保存方案"按钮
+
+步骤2:点击"保存方案"
+  → 弹出输入框:"请输入方案名称"
+  → 默认名称:"自定义方案 + 当前日期"
+  → 最多30个字符
+
+步骤3:输入名称并确认
+  → 校验名称是否为空
+  → 调用后台接口保存方案
+    参数:用户ID + 方案名称 + 艾灸工艺数组 + 总时长
+  → 保存成功:Toast"方案保存成功",跳转到我的方案页
+  → 保存失败:提示错误
+```
+
+---
+
+## 12. 艾灸执行过程
+
+### 12.1 预热阶段
+
+**操作流程:**
+
+```
+步骤1:点击开始 → 进入预热
+  → 显示"正在预热 0%"
+  → 圆形/条形进度条动画
+  → 预计预热时间:30秒
+
+步骤2:预热进度更新
+  → 蓝牙接收设备预热进度上报
+  → 进度条动态增长:0% → 25% → 50% → 75% → 100%
+  → 显示预计剩余时间
+
+步骤3:预热完成
+  → 进度条达到100%
+  → 显示"已完成预热"
+  → 弹窗:"已完成预热,即将开始艾灸"
+  → 3秒倒计时,或点击"确认"立即开始
+  → 弹窗关闭,进入艾灸执行阶段
+
+异常情况 - 预热失败:
+  → 进度长时间不更新(超时60秒)
+  → 弹窗:"预热超时,请检查设备后重试"
+  → 按钮:"重试" / "取消"
+
+异常情况 - 预热中断:
+  → 蓝牙断开
+  → 提示"连接已断开,预热中断"
+  → 重新连接后可重新开始
+```
+
+### 12.2 艾灸执行阶段
+
+**设备Tab显示内容:**
+```
++----------------------------------+
+|  [设备] [穴位]                    |
+|        [艾灸椅3D图]              |
+|              ● 大椎穴             |
+|              (红色标记当前穴位)   |
++----------------------------------+
+|  正在艾灸                          |
+|  剩余时间:00:08:25                |
+|  当前穴位:大椎穴                   |
+|  当前温度:40℃                     |
+|  当前手法:悬定灸                   |
++----------------------------------+
+|  [⏵ 继续]  [⏸ 暂停]  [⏹ 结束]   |
++----------------------------------+
+```
+
+**穴位Tab显示内容:**
+```
++----------------------------------+
+|  [设备] [穴位]                    |
+|      [人体背部穴位图]             |
+|            ○ ○ ○                 |
+|          ○  🟡  ○               |
+|            ○ ○ ○                 |
+|          ○  ○  ○                 |
+|      (🟡黄色=当前施灸穴位)      |
++----------------------------------+
+```
+
+**操作 - 暂停:**
+
+```
+步骤1:点击"暂停"按钮
+  → 通过蓝牙发送暂停指令
+  → 设备:灸头后退2cm(安全距离)
+  → 设备:暂停计时
+  → APP状态更新:"已暂停"
+  → 按钮切换:显示"继续"按钮
+
+步骤2:暂停状态显示
+  → 倒计时停止
+  → 显示"已暂停 剩余XX:XX"
+  → 温度显示逐步降低(自然散热)
+```
+
+**操作 - 继续:**
+
+```
+步骤1:点击"继续"按钮
+  → 通过蓝牙发送继续指令
+  → 设备:灸头回到施灸位置
+  → 设备:恢复计时
+  → APP状态更新:"正在艾灸"
+  → 按钮切换:显示"暂停"按钮
+```
+
+**操作 - 结束:**
+
+```
+步骤1:点击"结束"按钮
+  → 弹出二次确认弹窗
+  → "确定结束本次艾灸?"
+  → 按钮:"取消" / "确定结束"(红色)
+
+步骤2:确认结束
+  → 通过蓝牙发送结束指令
+  → 设备:灸头归位,停止加热
+  → APP显示"艾灸已完成"
+  → 上报使用记录到后台
+  → 3秒后自动返回设备详情页(待机状态)
+
+步骤3:取消结束
+  → 关闭弹窗,继续艾灸
+```
+
+### 12.3 温度监控与安全防护
+
+**温度监控流程:**
+
+```
+实时上报:
+  → 设备每2秒上报一次温度数据
+  → APP更新温度显示
+  → 温度曲线可查看(可选功能)
+
+超温保护:
+  → 温度超过安全阈值
+  → 设备自动切换为"雀啄灸"手法(快速提插,避免持续高温)
+  → APP显示:"温度过高,已自动切换手法防止灼伤"
+  → 温度回落后恢复正常手法
+
+极端超温:
+  → 温度持续超限
+  → 设备自动暂停
+  → APP显示警告:"温度异常,艾灸已自动暂停,请检查"
+```
+
+### 12.4 艾灸完成
+
+**正常完成流程:**
+
+```
+步骤1:最后一个穴位施灸完成
+  → 设备发送完成信号
+  → 蓝牙上报完成状态
+
+步骤2:APP显示
+  → "艾灸已完成"
+  → 显示本次艾灸摘要:
+    - 施灸穴位列表
+    - 总时长
+    - 平均温度
+  → 播放完成提示音
+
+步骤3:数据上报
+  → 自动上报使用记录到后台
+  → 参数:用户ID/时间/功效/穴位/时长/温度
+
+步骤4:3秒后自动返回设备详情页(待机状态)
+```
+
+### 12.5 异常中断处理
+
+| 中断原因 | 处理方式 | 用户提示 |
+|---------|---------|---------|
+| 蓝牙断开 | 自动重连(3次),失败后暂停艾灸 | "蓝牙连接断开,正在尝试重连..." |
+| APP被杀掉 | 设备继续执行(独立运行) | 下次打开APP恢复状态 |
+| 设备断电 | 艾灸终止 | "设备已断电" |
+| 检测到异物 | 设备自动暂停 | "检测到有异物,已暂停艾灸,清理后重试" |
+| 艾材用完 | 设备自动暂停 | "艾材已用完,艾灸已暂停" |
+| 多手机操控 | 当前操控权被抢占 | "当前设备正在被其他手机操控" |
+
+---
+
+## 13. 我的方案管理
+
+### 13.1 方案列表页面
+
+**页面布局:**
+```
++----------------------------------+
+|  <  我的方案                      |
++----------------------------------+
+|                                    |
+|  +---------------------------+    |
+|  | 一套针对颈椎的艾灸方案      |    |
+|  | 王凤娇                      |    |
+|  |                    [使用]   |    |
+|  +---------------------------+    |
+|                                    |
+|  +---------------------------+    |
+|  | 艾灸方案二                  |    |
+|  |                    [使用]   |    |
+|  +---------------------------+    |
+|                                    |
+|  +---------------------------+    |
+|  | 艾灸方案三                  |    |
+|  |                    [使用]   |    |
+|  +---------------------------+    |
+|                                    |
+|         [更多方案]                 |
++----------------------------------+
+```
+
+**操作流程 - 查看列表:**
+
+```
+步骤1:从设备详情页点击"我的方案"
+  → 进入方案列表页
+  → 调用接口获取当前用户的方案列表
+  → 按创建时间倒序排列
+  → 显示loading → 显示列表
+
+步骤2:方案操作
+  → 点击方案卡片:进入方案详情
+  → 点击"使用"按钮:直接应用该方案开始艾灸
+  → 左滑方案卡片:显示"删除"按钮
+```
+
+**操作流程 - 删除方案:**
+
+```
+步骤1:左滑方案卡片
+  → 显示红色"删除"按钮
+
+步骤2:点击删除
+  → 弹出确认:"确定删除方案XXX?"
+  → 取消:关闭弹窗
+  → 确认:调用删除接口
+    → 成功:移除卡片,Toast"删除成功"
+    → 失败:Toast"删除失败"
+```
+
+### 13.2 方案详情页面
+
+**页面布局:**
+```
++----------------------------------+
+|  <  方案详情                      |
++----------------------------------+
+|                                    |
+|  方案名称:一套针对颈椎的艾灸方案  |
+|  作者:王凤娇                      |
+|                                    |
+|  艾灸穴位:                        |
+|  1. 大椎穴 - 15分钟 - 40℃         |
+|  2. 风池穴 - 10分钟 - 42℃         |
+|  3. 肩井穴 - 10分钟 - 40℃         |
+|                                    |
+|  总时长:35分钟                    |
+|                                    |
+|  [编辑方案]  [立即使用]            |
++----------------------------------+
+```
+
+**操作 - 立即使用:**
+
+```
+步骤1:点击"立即使用"
+  → 弹窗确认"使用该方案开始艾灸?"
+  → 确认:进入艾灸预热流程
+  → 取消:关闭弹窗
+```
+
+### 13.3 从发现页添加方案
+
+**操作流程:**
+
+```
+步骤1:在发现页浏览公用方案
+  → 进入方案详情页
+  → 显示"添加到我的方案"按钮
+
+步骤2:点击"添加到我的方案"
+  → 弹窗:"确认添加到我的方案?"
+  → 按钮:"取消" / "确认"
+
+步骤3:点击确认
+  → 调用后台接口:复制方案到个人方案(深拷贝)
+  → 成功:Toast"已添加到我的方案"
+  → 失败:提示错误
+
+权限控制:
+  → 公用方案:所有用户可见,可复制到个人方案
+  → 个人方案:仅本人可见
+  → 定向方案:仅指定用户可见
+```
+
+### 13.4 多用户方案同步
+
+**操作流程:**
+
+```
+步骤1:切换用户
+  → 进入用户管理页
+  → 选择另一个用户
+
+步骤2:方案自动切换
+  → 刷新方案列表
+  → 显示当前用户的方案
+  → 不同用户的方案完全隔离
+
+步骤3:方案同步到设备
+  → 选择方案后点击"同步到设备"
+  → 蓝牙发送方案数据包到设备
+  → 设备本地存储该方案
+  → 后续可通过指纹直接调用
+```
+
+### 13.5 离线方案使用
+
+```
+网络正常时:
+  → 方案列表从服务器获取
+  → 同时缓存到本地数据库
+
+网络异常时:
+  → 从本地数据库读取方案列表
+  → 可查看已保存的方案
+  → 已同步到设备的方案可直接通过蓝牙使用
+  → 无需网络即可完成艾灸
+
+蓝牙直连模式:
+  → 无需网络
+  → 直接使用已同步到设备的方案
+  → 通过指纹识别调用用户方案
+```
+
+---
+
+## 14. 发现模块
+
+### 14.1 发现首页
+
+**页面布局:**
+```
++----------------------------------+
+|  [LOGO]                          |
++----------------------------------+
+|  [======== Banner轮播 ========]  |
+|  源自天然古法精髓                  |
+|  手工艾灸,延传养生之道            |
++----------------------------------+
+|  热灸推荐                          |
+|  +---------------------------+    |
+|  | [图] 颈腰同治-督脉艾灸方案  |    |
+|  |      缓解颈椎僵硬与腰椎酸痛  |    |
+|  |      45分钟                 |    |
+|  +---------------------------+    |
+|  +---------------------------+    |
+|  | [图] 通络强背-脊柱养护方案  |    |
+|  |      改善胸背疼痛与脊柱侧弯  |    |
+|  |      60分钟                 |    |
+|  +---------------------------+    |
++----------------------------------+
+|  灸研室                    [更多] |
+|  +---------+  +---------+        |
+|  |[图]方案1|  |[图]方案2|        |
+|  +---------+  +---------+        |
+|  +---------+  +---------+        |
+|  |[图]方案3|  |[图]方案4|        |
+|  +---------+  +---------+        |
++----------------------------------+
+|  [首页] [发现] [健康] [我的]      |
++----------------------------------+
+```
+
+**操作流程 - 浏览首页:**
+
+```
+步骤1:点击底部Tab"发现"
+  → 加载发现页数据
+  → Banner轮播自动播放(每3秒切换)
+  → 显示热灸推荐列表
+  → 显示灸研室方案网格
+
+步骤2:Banner操作
+  → 左右滑动切换
+  → 点击Banner进入对应详情页
+
+步骤3:热灸推荐
+  → 上下滑动浏览
+  → 点击方案卡片进入方案详情
+
+步骤4:灸研室
+  → 点击"更多"进入专家方案列表
+  → 点击方案卡片进入方案详情
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 数据加载失败 | "内容加载失败,下拉刷新试试" |
+| Banner加载失败 | 显示默认占位图 |
+| 图片加载失败 | 显示默认占位图 |
+
+### 14.2 专家方案列表
+
+**页面布局:**
+```
++----------------------------------+
+|  <  专家方案                      |
++----------------------------------+
+|                                    |
+|  +--------+  +--------+           |
+|  |[图]    |  |[图]    |           |
+|  |方案一名|  |方案二名|           |
+|  |简介... |  |简介... |           |
+|  +--------+  +--------+           |
+|                                    |
+|  +--------+  +--------+           |
+|  |[图]    |  |[图]    |           |
+|  |方案三名|  |方案四名|           |
+|  |简介... |  |简介... |           |
+|  +--------+  +--------+           |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:从发现页点击"更多"进入
+  → 调用接口获取专家方案列表
+  → 2列网格布局展示
+
+步骤2:浏览方案
+  → 上下滑动浏览
+  → 上拉加载更多(分页加载)
+  → 下拉刷新
+
+步骤3:点击方案卡片
+  → 进入方案详情页
+```
+
+### 14.3 方案详情页
+
+**页面布局:**
+```
++----------------------------------+
+|  <                        分享   |
+|  [========= 方案大图 =========]  |
++----------------------------------+
+|  一套针对颈椎的艾灸方案            |
+|  王凤娇                            |
+|  [立即体验]                        |
++----------------------------------+
+|  简介                              |
+|  通过艾灸特定穴位,缓解颈椎病症状...|
+|  [展开]                            |
++----------------------------------+
+|  艾灸穴位                          |
+|  1. 风池穴                        |
+|    • 定位:枕骨下方,胸锁乳突肌与   |
+|      斜方肌上端之间的凹陷处        |
+|    • 作用:疏风散寒,缓解头痛、颈痛 |
+|  2. 大椎穴                        |
+|    • 定位:第七颈椎棘突下凹陷中     |
+|    • 作用:通阳解表,缓解颈肩疼痛   |
+|  ...                              |
++----------------------------------+
+|  适用人群                          |
+|  • 颈椎病患者                      |
+|  • 长期伏案工作者                  |
+|  • 颈部肌肉紧张者                  |
++----------------------------------+
+|  注意事项                          |
+|  1. 保暖:艾灸后避免受风受寒       |
+|  2. 时间控制:每次艾灸时间不宜过长 |
+|  3. 皮肤保护:艾灸前可在皮肤上涂   |
+|     少量凡士林,防止灼伤           |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:浏览方案详情
+  → 上下滚动查看完整内容
+  → 简介区域默认折叠,点击"展开"查看全部
+
+步骤2:点击"立即体验"
+  → 判断登录状态
+    → 未登录:跳转登录页
+    → 已登录:弹窗"确认添加到我的方案?"
+  → 点击"确认"
+    → 调用方案复制接口(深拷贝)
+    → 成功:Toast"已添加到我的方案"
+    → 可跳转"我的方案"或留在当前页
+  → 点击"取消":关闭弹窗
+
+步骤3:点击"分享"
+  → 唤起系统分享面板
+  → 可分享给微信好友/朋友圈
+```
+
+---
+
+## 15. 健康模块
+
+### 15.1 推荐列表页面
+
+**页面布局:**
+```
++----------------------------------+
+|  推荐                              |
++----------------------------------+
+|  +--------+  +--------+           |
+|  |[图]    |  |[图]    |           |
+|  |文章标题|  |文章标题|           |
+|  |官方 12-21| |官方 12-20|        |
+|  +--------+  +--------+           |
+|  +--------+  +--------+           |
+|  |[图]    |  |[图]    |           |
+|  |文章标题|  |文章标题|           |
+|  |官方 12-19| |官方 12-18|        |
+|  +--------+  +--------+           |
++----------------------------------+
+|  [首页] [发现] [健康] [我的]      |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:点击底部Tab"健康"
+  → 加载推荐文章列表
+  → 2列网格布局
+
+步骤2:浏览文章
+  → 上下滑动
+  → 下拉刷新
+  → 上拉加载更多
+
+步骤3:点击文章卡片
+  → 进入文章详情页
+```
+
+### 15.2 文章详情页
+
+**页面布局:**
+```
++----------------------------------+
+|  <  详情                          |
++----------------------------------+
+|                                    |
+|  [========= 文章配图 =========]  |
+|                                    |
+|  灸后调养做好这三点,效果会更好!  |
+|                                    |
+|  2024-12-21   研年健康贴士         |
+|                                    |
+|  --------------------------------  |
+|                                    |
+|  关注艾灸后调养的三个要素:休息...  |
+|                                    |
+|  1. 灸后休息有保障。               |
+|  艾灸后,尤其是重灸后对机体来说是  |
+|  一个较强的刺激...                  |
+|                                    |
+|  2. 灸后锻炼要适度。               |
+|  "生命在于运动",任何疗法也代替不  |
+|  了运动。但是...                    |
+|                                    |
+|  [展开全文]                        |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:进入文章详情
+  → 加载文章内容(富文本渲染)
+  → 图片懒加载
+
+步骤2:阅读文章
+  → 上下滚动
+  → 长文默认折叠,点击"展开全文"
+  → 展开后可继续阅读
+
+步骤3:返回
+  → 点击返回按钮
+  → 回到推荐列表(保持浏览位置)
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 文章加载失败 | "文章加载失败,请重试" |
+| 图片加载失败 | 显示默认占位图 |
+
+---
+
+## 16. 消息中心模块
+
+### 16.1 消息列表页面
+
+**页面布局:**
+```
++----------------------------------+
+|  <  消息中心                      |
++----------------------------------+
+|  [全部] [系统通知] [方案推送]      |
++----------------------------------+
+|  [头像] 系统消息                   |
+|         向您推荐了新的艾灸方案      |
+|         2025-03-27 21:37          |
+|         [●未读]                   |
++----------------------------------+
+|  [头像] 孙佳敏                     |
+|         向您推荐了新的艾灸方案      |
+|         2025-03-26 22:36          |
+|                                    |
++----------------------------------+
+|  [头像] 钱博雯                     |
+|         向您推荐了新的艾灸方案      |
+|         2025-03-26 00:57          |
+|                                    |
++----------------------------------+
+```
+
+**操作流程 - 查看消息:**
+
+```
+步骤1:进入消息中心
+  → 从个人中心点击"系统消息"进入
+  → 默认显示"全部"Tab
+  → 调用接口获取消息列表
+  → 显示未读消息红点
+
+步骤2:筛选消息
+  → 点击Tab切换:全部/系统通知/方案推送
+  → 切换时刷新列表
+
+步骤3:点击消息
+  → 标记为已读(红点消失)
+  → 调用已读接口
+  → 根据消息类型跳转:
+    - 方案推送:跳转到对应方案详情
+    - 系统通知:显示通知详情
+
+步骤4:下拉刷新
+  → 刷新消息列表
+  → 同步未读消息数
+```
+
+**操作流程 - 未读消息处理:**
+
+```
+APP启动时:
+  → 调用接口查询未读消息数量
+  → 数量>0:在个人中心"系统消息"项显示红点+数字
+  → 数量=0:不显示红点
+
+收到推送时:
+  → 显示系统通知栏推送
+  → APP内未读数+1
+  → 如果APP在前台,显示Toast提示
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 消息加载失败 | "消息加载失败,请重试" |
+| 标记已读失败 | 本地先标记,后台异步同步 |
+
+---
+
+## 17. 个人中心模块
+
+### 17.1 个人中心首页
+
+**页面布局:**
+```
++----------------------------------+
+|                                    |
+|  15066998888                       |
+|  这是简介                          |
+|                    [圆形头像]      |
+|                                    |
++----------------------------------+
+|  ⭐ 个性化方案              >      |
++----------------------------------+
+|  🔔 系统消息                >      |
++----------------------------------+
+|  ⬆️ 版本升级               >      |
++----------------------------------+
+|  ❓ 帮助                    >      |
++----------------------------------+
+|  📋 使用记录                >      |
++----------------------------------+
+|  ⬅️ 退出登录               >      |
++----------------------------------+
+|  [首页] [发现] [健康] [我的]      |
++----------------------------------+
+```
+
+### 17.2 个性化方案
+
+**操作流程:**
+
+```
+步骤1:点击"个性化方案"
+  → 跳转到"我的方案"列表页
+  → 同13.1方案列表操作
+```
+
+### 17.3 系统消息
+
+**操作流程:**
+
+```
+步骤1:点击"系统消息"
+  → 跳转到消息中心页
+  → 同16.1消息列表操作
+  → 进入后自动标记该类消息为已读
+```
+
+### 17.4 版本升级
+
+**页面布局:**
+```
++----------------------------------+
+|  <  版本信息                      |
++----------------------------------+
+|                                    |
+|         [APP图标]                  |
+|                                    |
+|      研年健康平台                   |
+|      V1.0                          |
+|                                    |
+|  +------------------------------+  |
+|  |         检查更新             |  |
+|  +------------------------------+  |
++----------------------------------+
+```
+
+**操作流程 - 检查更新:**
+
+```
+步骤1:点击"检查更新"
+  → 按钮变为loading
+  → 调用版本检测接口
+    参数:当前平台(iOS/Android/HarmonyOS)、当前版本号
+    返回:是否有更新、最新版本号、下载URL、更新类型
+
+步骤2:处理检查结果
+  
+  情况A:已是最新版
+    → 提示"当前已是最新版本"
+  
+  情况B:可选更新
+    → 弹窗:
+      标题:"发现新版本 VX.X.X"
+      内容:更新文案
+      按钮:"暂不更新" / "立即更新"
+    → 点击"立即更新":跳转应用商店/下载URL
+  
+  情况C:强制更新
+    → 弹窗(不可关闭):
+      标题:"重要更新"
+      内容:"当前版本已不可用,请更新到最新版本"
+      按钮:"立即更新"(唯一选项)
+    → 点击后跳转应用商店
+    → 不更新则无法继续使用APP
+
+步骤3:更新下载
+  → 显示下载进度
+  → 下载完成后自动安装(或提示安装)
+```
+
+**详细错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 检查更新失败 | "检查更新失败,请检查网络" |
+| 下载失败 | "下载失败,请重试" |
+| 安装失败 | "安装失败,请手动安装" |
+
+### 17.5 帮助中心
+
+**页面布局 - FAQ列表:**
+```
++----------------------------------+
+|  <  全部问题                      |
++----------------------------------+
+|  常见问题                          |
+|                                    |
+|  1. 如何注销                 >     |
++----------------------------------+
+|  2. 如何删除设备             >     |
++----------------------------------+
+|  3. 如何关闭消息推送         >     |
++----------------------------------+
+|  4. 搜索不到蓝牙             >     |
++----------------------------------+
+|  5. 连不上设备               >     |
++----------------------------------+
+```
+
+**页面布局 - 问题详情:**
+```
++----------------------------------+
+|  <  问题解答                      |
++----------------------------------+
+|  连不上设备                        |
+|                                    |
+|  1. 检查设备是否接通电源            |
+|  2. 确认设备是否收到过外力碰撞,    |
+|     若有可能已损坏,可联系售后      |
+|     维修,售后电话400-000-0000      |
+|  3. 检查手机蓝牙是否开启            |
+|  4. 确保设备在10米范围内            |
+|  5. 尝试重启设备和手机蓝牙          |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:点击"帮助"
+  → 进入FAQ列表页
+
+步骤2:点击问题项
+  → 进入问题详情页
+  → 显示完整的解答内容
+
+步骤3:返回
+  → 点击返回回到列表页
+```
+
+**FAQ内容清单:**
+
+| 序号 | 问题 | 答案要点 |
+|------|------|---------|
+| 1 | 如何注销 | 个人中心→退出登录 |
+| 2 | 如何删除设备 | 首页→长按设备卡片→删除,或进入设备详情解除绑定 |
+| 3 | 如何关闭消息推送 | 手机系统设置→通知管理→研年健康→关闭推送 |
+| 4 | 搜索不到蓝牙 | 检查蓝牙开启、设备电源、距离10米内、设备未被他手机连接 |
+| 5 | 连不上设备 | 检查电源、重启设备、重启蓝牙、确认设备未被占用 |
+
+### 17.6 使用记录
+
+**页面布局:**
+```
++----------------------------------+
+|  <  使用记录                      |
++----------------------------------+
+|  2025年3月                         |
++----------------------------------+
+|  我的艾灸椅                        |
+|  操作记录                          |
+|  2025-03-31 13:37                  |
++----------------------------------+
+|  我的艾灸椅                        |
+|  操作记录                          |
+|  2025-03-31 05:11                  |
++----------------------------------+
+|  我的艾灸椅                        |
+|  操作记录                          |
+|  2025-03-30 17:23                  |
++----------------------------------+
+```
+
+**操作流程:**
+
+```
+步骤1:点击"使用记录"
+  → 进入使用记录页
+  → 调用接口获取历史记录
+  → 按时间倒序排列
+  → 按月分组显示
+
+步骤2:浏览记录
+  → 上下滑动
+  → 上拉加载更多(分页)
+  → 下拉刷新
+
+步骤3:点击记录项
+  → 进入记录详情页(可选)
+  → 显示:设备/时间/功效/穴位/时长/温度
+```
+
+**错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 记录加载失败 | "加载失败,请重试" |
+| 暂无记录 | "暂无使用记录"(空状态) |
+
+### 17.7 退出登录
+
+**操作流程:**
+
+```
+步骤1:点击"退出登录"
+  → 底部弹出确认面板
+  → 标题:"确定退出登录?"
+  → 按钮:"取消" / "退出登录"(红色)
+
+步骤2:点击"取消"
+  → 关闭面板,留在当前页
+
+步骤3:点击"退出登录"
+  → 清除本地Token
+  → 清除本地用户信息(保留设备绑定信息)
+  → 跳转到登录页
+  → 下次需重新登录
+```
+
+**详细错误提示:**
+
+| 场景 | 错误提示 |
+|------|---------|
+| 退出时网络异常 | 本地清除数据,不影响退出 |
+| 清除数据失败 | 强制清除,跳转到登录页 |
+
+---
+
+## 18. 版本升级模块
+
+### 18.1 自动检查更新
+
+**操作流程:**
+
+```
+触发时机:
+  1. APP冷启动时(一天内只检查一次)
+  2. 用户手动点击"检查更新"
+
+步骤1:调用版本检测接口
+  → 参数:平台类型、当前版本号
+  → 返回:最新版本信息
+
+步骤2:版本对比
+  → 当前版本 < 最新版本:提示更新
+  → 当前版本 = 最新版本:不提示
+  → 当前版本 > 最新版本:不提示(可能是测试版)
+
+步骤3:更新策略
+  → 强制更新:阻断使用,必须更新
+  → 可选更新:用户可选择不更新
+  → 静默更新:后台下载,下次启动生效
+```
+
+### 18.2 版本管理后台配置
+
+后台支持配置的字段:
+
+| 字段 | 说明 |
+|------|------|
+| 平台 | iOS / Android / HarmonyOS |
+| 版本号 | 如 1.0.0 |
+| 更新类型 | 强制更新 / 可选更新 / 静默更新 |
+| 下载地址 | App Store链接 或 APK下载URL |
+| 更新文案 | 显示给用户看的更新说明 |
+| 最低支持版本 | 低于此版本必须更新 |
+
+---
+
+## 19. 蓝牙通信规范
+
+### 19.1 蓝牙连接状态机
+
+```
+[未初始化] --openAdapter--> [已初始化]
+[已初始化] --startScan--> [扫描中]
+[扫描中] --foundDevice--> [发现设备]
+[发现设备] --connect--> [连接中]
+[连接中] --success--> [已连接]
+[连接中] --fail--> [连接失败]
+[连接失败] --retry--> [连接中]
+[已连接] --disconnect--> [已断开]
+[已断开] --autoReconnect--> [连接中]
+[已连接] --switchDevice--> [连接中]
+```
+
+### 19.2 蓝牙操作流程
+
+**连接流程:**
+
+```
+步骤1:初始化蓝牙适配器
+  → uni.openBluetoothAdapter()
+  → 成功:进入步骤2
+  → 失败:提示用户开启蓝牙
+
+步骤2:开始搜索设备
+  → uni.startBluetoothDevicesDiscovery()
+  → 设置allowDuplicatesKey: false
+  → 设置interval: 1000
+
+步骤3:监听发现设备
+  → uni.onBluetoothDeviceFound()
+  → 过滤设备名称(包含"艾灸椅"或指定UUID)
+  → 收集设备列表
+
+步骤4:停止搜索
+  → uni.stopBluetoothDevicesDiscovery()
+  → 30秒超时自动停止
+
+步骤5:连接设备
+  → uni.createBLEConnection()
+  → 设置timeout: 10000
+  → 成功:进入步骤6
+  → 失败:提示重试
+
+步骤6:发现服务
+  → uni.getBLEDeviceServices()
+  → 找到指定Service UUID
+
+步骤7:发现特征值
+  → uni.getBLEDeviceCharacteristics()
+  → 找到:
+    - 写特征值(APP→设备指令)
+    - 读/通知特征值(设备→APP状态)
+
+步骤8:开启通知
+  → uni.notifyBLECharacteristicValueChange()
+  → 监听设备主动上报
+
+步骤9:监听数据
+  → uni.onBLECharacteristicValueChange()
+  → 解析设备上报数据,更新UI
+```
+
+### 19.3 蓝牙指令清单
+
+**连接管理类:**
+
+| 指令 | 命令字 | 说明 |
+|------|--------|------|
+| 设备发现 | 0x01 | 搜索附近艾灸椅 |
+| 建立连接 | 0x02 | 与指定设备建立BLE连接 |
+| 断开连接 | 0x03 | 主动断开连接 |
+| 心跳保活 | 0x04 | 维持连接状态 |
+| 操控权请求 | 0x05 | 请求设备操控权 |
+| 操控权释放 | 0x06 | 释放设备操控权 |
+
+**艾灸控制类:**
+
+| 指令 | 命令字 | 说明 |
+|------|--------|------|
+| 一键启动 | 0x10 | 参数:用户ID/指纹ID/方案ID |
+| 开始艾灸 | 0x11 | 启动当前方案 |
+| 暂停艾灸 | 0x12 | 灸头后退2cm,暂停计时 |
+| 继续艾灸 | 0x13 | 恢复施灸和计时 |
+| 结束艾灸 | 0x14 | 灸头归位,停止加热 |
+| 下发灸方 | 0x15 | 发送完整艾灸工艺数据包 |
+
+**参数控制类:**
+
+| 指令 | 命令字 | 说明 |
+|------|--------|------|
+| 座椅角度 | 0x20 | 参数:目标角度(90-150) |
+| 音量控制 | 0x21 | 参数:音量百分比(0-100) |
+| 音效选择 | 0x22 | 参数:音效编号(1-8) |
+| 音效播放控制 | 0x23 | 参数:播放/暂停/停止 |
+| 温度设置 | 0x24 | 参数:目标温度(38-44) |
+
+**数据采集类:**
+
+| 指令 | 命令字 | 说明 |
+|------|--------|------|
+| 读取艾材余量 | 0x30 | 返回剩余数量 |
+| 读取废料舱状态 | 0x31 | 返回容量百分比 |
+| 读取滤芯状态 | 0x32 | 返回寿命百分比 |
+| 读取温度 | 0x33 | 返回当前温度 |
+| 读取执行进度 | 0x34 | 返回当前穴位/剩余时长/手法 |
+| 读取设备状态 | 0x35 | 返回设备整体状态 |
+
+**用户管理类:**
+
+| 指令 | 命令字 | 说明 |
+|------|--------|------|
+| 指纹录入 | 0x40 | 启动设备指纹采集 |
+| 指纹查询 | 0x41 | 查询已绑定指纹列表 |
+| 方案同步 | 0x42 | 将方案同步到设备本地 |
+| 方案查询 | 0x43 | 查询设备已存储的方案 |
+
+### 19.4 数据上报格式
+
+**设备状态周期性上报(每2秒):**
+
+```
+数据格式:
+[当前穴位编号: 2B]
+[剩余时长(秒): 2B]
+[当前温度(℃): 1B]
+[当前手法: 1B]  (0=悬定灸, 1=雀啄灸, 2=回旋灸)
+[设备状态: 1B]  (0=待机, 1=预热, 2=运行, 3=暂停, 4=完成, 5=异常)
+[错误码: 1B]    (0=无错误, 1=艾材不足, 2=废料满, 3=超温, 4=异物)
+[艾材余量: 1B]
+[废料舱百分比: 1B]
+[滤芯百分比: 1B]
+[预热进度: 1B]  (0-100, 非预热时为0)
+[座椅当前角度: 1B]
+```
+
+**艾灸工艺数据包格式:**
+
+```
+[包头: 0xAA 0x55]  (2B固定)
+[命令字: 0x15]      (1B)
+[数据长度: 2B]
+[穴位数量: 1B]       (1-3)
+[
+  [穴位编号: 2B]
+  [施灸时长(秒): 2B]
+  [施灸温度: 1B]
+  [施灸手法: 1B]
+] × 穴位数量
+[校验和: 1B]
+```
+
+### 19.5 蓝牙错误处理
+
+| 错误码 | 说明 | 处理方式 |
+|--------|------|---------|
+| 10000 | 未初始化蓝牙适配器 | 重新初始化 |
+| 10001 | 当前蓝牙适配器不可用 | 提示开启蓝牙 |
+| 10002 | 没有找到指定设备 | 重新搜索 |
+| 10003 | 连接失败 | 重试连接 |
+| 10004 | 没有找到指定服务 | 设备不兼容 |
+| 10005 | 没有找到指定特征值 | 设备固件异常 |
+| 10006 | 当前连接已断开 | 自动重连 |
+| 10007 | 当前特征值不支持此操作 | 设备版本过低 |
+| 10008 | 其余所有系统上报的异常 | 通用提示 |
+| 10009 | Android系统特有,系统版本低于4.3不支持BLE | 提示升级系统 |
+
+---
+
+## 20. 后台接口清单
+
+### 20.1 认证模块
+
+```
+POST /api/auth/send-sms
+  请求参数:
+    phone: string (必填, 11位手机号)
+  响应:
+    code: 200成功
+    message: "验证码已发送"
+  错误:
+    400: 手机号格式错误
+    429: 发送过于频繁
+    500: 服务器内部错误
+
+POST /api/auth/verify-login
+  请求参数:
+    phone: string (必填)
+    code: string (必填, 6位验证码)
+    platform: string (ios/android/harmonyos)
+    deviceId: string (设备唯一标识)
+  响应:
+    token: string (长期有效)
+    userId: string
+    isNewUser: boolean
+    userInfo: object
+  错误:
+    400: 验证码错误或已过期
+    429: 验证次数过多
+
+POST /api/auth/third-party-login
+  请求参数:
+    type: string (wechat/apple)
+    authCode: string
+    platform: string
+  响应:同verify-login
+```
+
+### 20.2 用户模块
+
+```
+POST /api/user/profile
+  请求参数:
+    name: string (1-20字符)
+    gender: number (0=女, 1=男)
+    age: number (1-120)
+    height: number (50-250, cm)
+    weight: number (10-300, kg)
+  响应:userInfo对象
+
+GET /api/user/list
+  响应:
+    users: array [{id, name, gender, age, height, weight, bodyData}]
+    maxCount: 10
+
+POST /api/user
+  请求参数:同profile
+  响应:新建的用户对象
+  错误:
+    409: 用户数量已达上限(10人)
+
+PUT /api/user/{id}
+  请求参数:同profile
+  响应:更新后的用户对象
+
+DELETE /api/user/{id}
+  响应:204 No Content
+  错误:
+    400: 不能删除最后一个用户
+    404: 用户不存在
+
+POST /api/user/body-data
+  请求参数:
+    userId: string
+    shoulderHeight: number (肩高, cm)
+    shoulderWidth: number (肩宽, cm)
+    weight: number (kg)
+  响应:
+    success: true
+    acupoints: object (穴位坐标计算结果)
+```
+
+### 20.3 设备模块
+
+```
+GET /api/user/devices
+  响应:
+    devices: array [{
+      id, name, macAddress, 
+      connectStatus, lastConnectTime,
+      materialCount, wasteLevel, filterLevel
+    }]
+
+POST /api/user/devices/bind
+  请求参数:
+    deviceName: string
+    macAddress: string
+    model: string
+  响应:绑定的设备对象
+  错误:
+    409: 设备已被其他账号绑定
+    409: 绑定数量已达上限(5台)
+
+DELETE /api/user/devices/{id}
+  响应:204
+
+POST /api/user/devices/switch
+  请求参数:
+    deviceId: string
+  响应:当前设备对象
+```
+
+### 20.4 算法模块
+
+```
+POST /api/algorithm/acupoint-calculate
+  请求参数:
+    userId: string
+    bodyData: {
+      shoulderHeight: number
+      shoulderWidth: number
+      weight: number
+    }
+  响应:
+    acupoints: array [{
+      code: string (穴位编码)
+      name: string (穴位名称)
+      x: number (X坐标, mm)
+      y: number (Y坐标, mm)
+      z: number (Z坐标, mm)
+    }]
+
+POST /api/algorithm/moxa-plan
+  请求参数:
+    userId: string
+    efficacy: string (功效类型)
+    acupoints: array (穴位坐标)
+  响应:
+    plan: {
+      name: string
+      totalDuration: number (总时长, 秒)
+      acupoints: array [{
+        code, name, duration, temperature, technique
+      }]
+    }
+```
+
+### 20.5 方案模块
+
+```
+GET /api/plan/list
+  请求参数:
+    userId: string (可选, 不传则查询公用方案)
+    type: string (personal/public/directed)
+    page: number
+    pageSize: number
+  响应:
+    total: number
+    list: array [{
+      id, name, author, type,
+      totalDuration, acupointCount,
+      acupoints: array,
+      createTime
+    }]
+
+GET /api/plan/{id}
+  响应:方案详情对象
+
+POST /api/plan/save
+  请求参数:
+    userId: string
+    name: string (1-30字符)
+    acupoints: array [{
+      code, duration, temperature, technique, order
+    }]
+    totalDuration: number
+  响应:保存的方案对象
+
+POST /api/plan/copy
+  请求参数:
+    planId: string
+    userId: string
+  响应:复制的方案对象
+  错误:
+    403: 无权复制该方案
+    404: 方案不存在
+
+DELETE /api/plan/{id}
+  错误:
+    403: 无权删除(非本人方案)
+    409: 方案正在执行中
+```
+
+### 20.6 穴位模块
+
+```
+GET /api/acupoint/list
+  响应:
+    acupoints: array [{
+      code, name, 
+      location: string (定位描述)
+      effect: string (作用描述)
+      defaultX, defaultY, defaultZ
+    }]
+```
+
+### 20.7 消息模块
+
+```
+GET /api/message/list
+  请求参数:
+    type: string (all/system/plan)
+    page: number
+    pageSize: number
+  响应:
+    total: number
+    unreadCount: number
+    list: array [{
+      id, type, title, content,
+      sender, sendTime, isRead,
+      relatedId, relatedType
+    }]
+
+POST /api/message/read
+  请求参数:
+    messageIds: array
+  响应:更新的消息列表
+
+GET /api/message/unread-count
+  响应:{ count: number }
+```
+
+### 20.8 版本模块
+
+```
+GET /api/version/check
+  请求参数:
+    platform: string
+    currentVersion: string
+  响应:
+    hasUpdate: boolean
+    isForce: boolean
+    latestVersion: string
+    downloadUrl: string
+    updateLog: string
+    minSupportedVersion: string
+```
+
+### 20.9 记录模块
+
+```
+POST /api/record/report
+  请求参数:
+    userId: string
+    deviceId: string
+    planId: string (可选)
+    efficacy: string (可选)
+    acupoints: array
+    totalDuration: number
+    avgTemperature: number
+    startTime: timestamp
+    endTime: timestamp
+  响应:{ id: string }
+
+GET /api/record/list
+  请求参数:
+    userId: string
+    startDate: string
+    endDate: string
+    page: number
+    pageSize: number
+  响应:
+    total: number
+    list: array [{
+      id, deviceName, planName,
+      efficacy, acupoints, totalDuration,
+      avgTemperature, startTime, endTime
+    }]
+```
+
+### 20.10 推荐模块
+
+```
+GET /api/recommend/hot
+  请求参数:
+    userId: string (可选)
+    season: string (可选, 春夏秋冬)
+  响应:推荐方案列表
+
+GET /api/recommend/personal
+  请求参数:
+    userId: string (必填)
+  响应:
+    basedOn: string (推荐理由)
+    plans: array
+```
+
+### 20.11 内容模块
+
+```
+GET /api/article/list
+  请求参数:
+    category: string
+    page: number
+    pageSize: number
+  响应:文章列表
+
+GET /api/article/{id}
+  响应:文章详情
+```
+
+### 20.12 推送模块
+
+```
+POST /api/push/bind-token
+  请求参数:
+    platform: string
+    pushToken: string
+    deviceId: string
+  响应:{ success: true }
+```
+
+---
+
+## 21. 全局错误码与提示文案
+
+### 21.1 系统级错误码
+
+| 错误码 | 错误描述 | 用户提示 | 处理方式 |
+|--------|---------|---------|---------|
+| 200 | 成功 | - | 正常流程 |
+| 400 | 请求参数错误 | "请求参数有误,请检查后重试" | 检查表单 |
+| 401 | 未授权/Token失效 | "登录已过期,请重新登录" | 跳转登录页 |
+| 403 | 无权访问 | "无权进行此操作" | 阻止操作 |
+| 404 | 资源不存在 | "请求的内容不存在" | 返回上一页 |
+| 409 | 资源冲突 | "操作冲突,请刷新后重试" | 刷新页面 |
+| 429 | 请求过于频繁 | "操作过于频繁,请稍后再试" | 延迟重试 |
+| 500 | 服务器内部错误 | "服务器繁忙,请稍后再试" | 重试 |
+| 502 | 网关错误 | "网络连接不稳定,请重试" | 重试 |
+| 503 | 服务不可用 | "服务暂时不可用" | 稍后重试 |
+| 504 | 网关超时 | "请求超时,请检查网络" | 重试 |
+
+### 21.2 业务错误码
+
+| 错误码 | 场景 | 用户提示 |
+|--------|------|---------|
+| 1001 | 手机号格式错误 | "请输入正确的11位手机号" |
+| 1002 | 验证码错误 | "验证码错误,请重新输入" |
+| 1003 | 验证码过期 | "验证码已过期,请重新获取" |
+| 1004 | 发送验证码过于频繁 | "发送过于频繁,请{seconds}秒后重试" |
+| 1005 | 用户数量已达上限 | "最多可添加10个用户" |
+| 1006 | 不能删除最后一个用户 | "至少保留一个用户" |
+| 1007 | 设备绑定数量已达上限 | "每个账号最多绑定5台设备" |
+| 1008 | 设备已被其他账号绑定 | "该设备已被其他账号绑定" |
+| 1009 | 方案穴位数超限 | "单次最多可选择3个穴位" |
+| 1010 | 方案总时长超限 | "总时长不超过30分钟" |
+| 1011 | 艾材不足 | "艾材不足,无法启动艾灸" |
+| 1012 | 废料舱已满 | "废料舱已满,无法启动艾灸" |
+| 1013 | 设备正在被操控 | "当前设备正在被其他手机操控" |
+| 1014 | 蓝牙未连接 | "设备未连接,请连接后重试" |
+| 1015 | 方案正在执行中 | "该方案正在执行,无法删除" |
+| 1016 | 无权操作此方案 | "无权操作此方案" |
+| 1017 | 体形数据不完整 | "请先完善体形信息" |
+| 1018 | 预热超时 | "预热超时,请检查设备后重试" |
+
+### 21.3 网络错误提示
+
+| 场景 | 用户提示 | 处理方式 |
+|------|---------|---------|
+| 无网络连接 | "网络连接失败,请检查网络设置" | 提供设置入口 |
+| 网络超时 | "网络请求超时,请重试" | 提供重试按钮 |
+| 网络不稳定 | "网络不稳定,请稍后再试" | 自动重试1次 |
+| 服务器维护 | "系统维护中,请稍后再试" | 显示维护页面 |
+| DNS解析失败 | "网络连接异常,请检查网络" | 重试 |
+| SSL证书错误 | "网络安全验证失败" | 提示安全风险 |
+
+### 21.4 设备端错误提示
+
+| 错误码 | 触发条件 | 提示方式 | 提示文案 |
+|--------|---------|---------|---------|
+| D001 | 艾材余量=3 | Toast | "艾材余量不足,剩余3个,请及时补充" |
+| D002 | 艾材余量=1 | 弹窗 | "艾材即将用完,只剩1个,建议补充后再使用" |
+| D003 | 艾材余量=0 | 弹窗+禁用 | "艾材已用完,无法启动艾灸,请补充艾材" |
+| D004 | 废料舱=80% | Toast | "废料舱即将满仓,请及时清理" |
+| D005 | 废料舱=100% | 弹窗+禁用 | "废料舱已满,无法启动艾灸,请清理废料舱" |
+| D006 | 滤芯=80% | Toast | "滤芯使用寿命即将到期,建议更换" |
+| D007 | 滤芯=100% | 弹窗 | "滤芯已到期,请更换滤芯以保证使用效果" |
+| D008 | 检测到异物 | 弹窗+暂停 | "检测到有异物,已暂停艾灸,清理后重试" |
+| D009 | 无法启动 | 弹窗 | "无法启动设备,请检查艾灸盒状态或是否正确连接" |
+| D010 | 耗材ID不符 | 弹窗 | "艾灸耗材ID不符,请检查艾灸盒或尝试重启设备" |
+| D011 | 设备断电 | 弹窗 | "设备已断电,艾灸已终止" |
+| D012 | 温度超上限 | Toast | "温度过高,已自动切换手法防止灼伤" |
+| D013 | 蓝牙断开 | Toast | "蓝牙连接断开,正在尝试重连..." |
+| D014 | 操控权冲突 | Toast | "当前设备正在被其他手机操控" |
+| D015 | 指纹不匹配 | Toast | "指纹不匹配,请重试" |
+| D016 | 预热失败 | 弹窗 | "预热失败,请检查设备后重试" |
+
+### 21.5 操作确认弹窗文案
+
+| 操作 | 弹窗标题 | 弹窗内容 | 确认按钮 |
+|------|---------|---------|---------|
+| 删除方案 | 确认删除 | 确定删除方案"XXX"?删除后无法恢复 | 删除(红) |
+| 删除用户 | 确认删除 | 确定删除用户"XXX"? | 删除(红) |
+| 结束艾灸 | 确认结束 | 确定结束本次艾灸? | 结束(红) |
+| 退出登录 | 确认退出 | 确定退出登录? | 退出(红) |
+| 解绑设备 | 确认解绑 | 确定解绑设备"XXX"? | 解绑(红) |
+| 覆盖保存 | 确认覆盖 | 该名称方案已存在,是否覆盖? | 覆盖 |
+| 离开编辑页 | 确认离开 | 当前编辑未保存,确定离开? | 离开(红) |
+
+### 21.6 状态文案汇总
+
+| 状态 | 显示文案 |
+|------|---------|
+| 蓝牙未连接 | "蓝牙未连接" |
+| 蓝牙已连接 | "蓝牙已连接" |
+| 蓝牙连接中 | "蓝牙连接中..." |
+| 正在预热 | "正在预热 {X}%" |
+| 已完成预热 | "已完成预热 100%" |
+| 正在艾灸 | "正在艾灸" |
+| 已暂停 | "已暂停 剩余{XX:XX}" |
+| 等待开始 | "等待开始 {XX:XX}" |
+| 艾灸已完成 | "艾灸已完成" |
+| 设备异常 | "设备异常:{错误原因}" |
+| 加载中 | "加载中..." |
+| 数据同步中 | "数据同步中..." |
+| 方案保存成功 | "方案保存成功" |
+| 方案删除成功 | "方案删除成功" |
+| 用户切换成功 | "已切换至用户:{用户名}" |
+| 设备添加成功 | "设备添加成功" |
+| 设备解绑成功 | "设备解绑成功" |
+
+---
+
+## 22. 页面清单与路由表
+
+### 22.1 页面路由表
+
+| 页面ID | 页面名称 | 路径 | 类型 | 需登录 | 需蓝牙 |
+|--------|---------|------|------|--------|--------|
+| P001 | 隐私政策弹窗 | /pages/privacy/popup | 弹窗 | 否 | 否 |
+| P002 | 隐私政策详情 | /pages/privacy/detail | 页面 | 否 | 否 |
+| P003 | 登录页 | /pages/login/index | 页面 | 否 | 否 |
+| P004 | 补充信息 | /pages/user/profile-fill | 页面 | 是 | 否 |
+| P005 | 首页-设备列表 | /pages/home/index | Tab页 | 是 | 否 |
+| P006 | 添加设备 | /pages/device/add | 页面 | 是 | 是 |
+| P007 | 设备详情 | /pages/device/detail | 页面 | 是 | 是 |
+| P008 | 用户管理 | /pages/user/list | 页面 | 是 | 否 |
+| P009 | 体形录入 | /pages/user/body-data | 页面 | 是 | 否 |
+| P010 | 指纹录入 | /pages/user/fingerprint | 页面 | 是 | 是 |
+| P011 | 耗材管理 | /pages/device/consumable | 页面 | 是 | 是 |
+| P012 | 座椅角度 | /pages/device/seat-angle | 页面 | 是 | 是 |
+| P013 | 模式选择 | /pages/moxa/mode-select | 底部弹窗 | 是 | 否 |
+| P014 | 功效选择 | /pages/moxa/efficacy-select | 页面 | 是 | 否 |
+| P015 | 穴位编辑 | /pages/moxa/acupoint-edit | 页面 | 是 | 否 |
+| P016 | 艾灸执行 | /pages/moxa/executing | 页面 | 是 | 是 |
+| P017 | 音效选择 | /pages/moxa/sound-select | 底部弹窗 | 是 | 是 |
+| P018 | 方案确认 | /pages/moxa/plan-confirm | 弹窗 | 是 | 否 |
+| P019 | 预热中 | /pages/moxa/preheating | 页面 | 是 | 是 |
+| P020 | 我的方案 | /pages/plan/list | 页面 | 是 | 否 |
+| P021 | 方案详情 | /pages/plan/detail | 页面 | 是 | 否 |
+| P022 | 发现首页 | /pages/discover/index | Tab页 | 是 | 否 |
+| P023 | 专家方案 | /pages/discover/expert | 页面 | 是 | 否 |
+| P024 | 方案详情(发现) | /pages/discover/plan-detail | 页面 | 是 | 否 |
+| P025 | 健康推荐 | /pages/health/index | Tab页 | 是 | 否 |
+| P026 | 文章详情 | /pages/health/article-detail | 页面 | 是 | 否 |
+| P027 | 消息中心 | /pages/message/list | 页面 | 是 | 否 |
+| P028 | 消息详情 | /pages/message/detail | 页面 | 是 | 否 |
+| P029 | 个人中心 | /pages/mine/index | Tab页 | 是 | 否 |
+| P030 | 版本信息 | /pages/mine/version | 页面 | 是 | 否 |
+| P031 | 帮助中心 | /pages/mine/help | 页面 | 是 | 否 |
+| P032 | 问题详情 | /pages/mine/help-detail | 页面 | 是 | 否 |
+| P033 | 使用记录 | /pages/mine/records | 页面 | 是 | 否 |
+| P034 | 记录详情 | /pages/mine/record-detail | 页面 | 是 | 否 |
+
+### 22.2 路由跳转规范
+
+```
+页面跳转方式:
+- Tab切换:uni.switchTab()
+- 普通跳转:uni.navigateTo()
+- 重定向(不保留历史):uni.redirectTo()
+- 返回:uni.navigateBack()
+- 返回Tab页:uni.switchTab()
+
+页面返回规则:
+- 普通页面 → navigateBack()
+- 需要刷新上一页 → navigateBack() + 上一页onShow刷新
+- 跳转到Tab页 → switchTab()
+
+登录拦截:
+- 需登录页面:检查Token
+- 无Token → 保存当前路径 → 跳转登录页
+- 登录成功 → 恢复原路径
+```
+
+### 22.3 页面状态保持
+
+| 页面 | 状态保持策略 |
+|------|-------------|
+| 设备详情 | 保持蓝牙连接状态,onShow时刷新状态 |
+| 艾灸执行 | 后台运行保持连接,返回页面恢复状态显示 |
+| 方案编辑 | 页面隐藏时保存草稿,onShow时恢复 |
+| 消息列表 | onShow时刷新未读数 |
+| 使用记录 | 保持分页位置 |
+
+---
+
+## 附录
+
+### A. 功效与穴位映射表(参考)
+
+| 功效 | 推荐穴位 | 默认温度 | 默认手法 |
+|------|---------|---------|---------|
+| 驱寒 | 大椎、命门、关元 | 42℃ | 悬定灸 |
+| 祛风 | 风池、风门、肺俞 | 40℃ | 雀啄灸 |
+| 祛湿 | 足三里、阴陵泉、脾俞 | 40℃ | 悬定灸 |
+| 化瘀 | 血海、膈俞、肝俞 | 42℃ | 回旋灸 |
+| 化痰 | 丰隆、膻中、中脘 | 40℃ | 雀啄灸 |
+| 活血 | 心俞、厥阴俞、膻中 | 42℃ | 悬定灸 |
+| 扶阳 | 肾俞、命门、腰阳关 | 44℃ | 悬定灸 |
+| 养颜 | 百会、四白、迎香 | 38℃ | 雀啄灸 |
+
+### B. 音效列表详情
+
+| 编号 | 名称 | 时长 | 类型 |
+|------|------|------|------|
+| 1 | 河流 | 30分钟 | 自然水声 |
+| 2 | 夏雨 | 30分钟 | 雨声 |
+| 3 | 森林 | 30分钟 | 森林环境 |
+| 4 | 鸟鸣 | 30分钟 | 鸟鸣声 |
+| 5 | 漂流 | 30分钟 | 流水声 |
+| 6 | 雨滴 | 30分钟 | 细雨声 |
+| 7 | 炉火 | 30分钟 | 火焰声 |
+| 8 | 海浪 | 30分钟 | 海浪声 |
+
+### C. 温度与手法对照
+
+| 温度 | 适用手法 | 说明 |
+|------|---------|------|
+| 38℃ | 雀啄灸 | 温和,适合面部/敏感部位 |
+| 40℃ | 悬定灸 | 标准温度,适合大部分穴位 |
+| 42℃ | 悬定灸/回旋灸 | 较强刺激,适合背部大穴 |
+| 44℃ | 悬定灸 | 强刺激,适合耐受部位 |
+
+### D. 艾灸手法说明
+
+| 手法 | 描述 | 适用场景 |
+|------|------|---------|
+| 悬定灸 | 灸头固定于穴位上方不动 | 常规施灸 |
+| 雀啄灸 | 灸头快速上下提插 | 防灼伤/敏感部位 |
+| 回旋灸 | 灸头在穴位上方画圈 | 大面积温热 |
+
+### E. 开发排期建议
+
+| 阶段 | 内容 | 建议工期 |
+|------|------|---------|
+| 第一阶段 | 框架搭建 + 登录注册 + 用户管理 | 1周 |
+| 第二阶段 | 蓝牙模块 + 设备管理 + 连接绑定 | 1周 |
+| 第三阶段 | 艾灸功能(三种模式)+ 穴位编辑 | 1.5周 |
+| 第四阶段 | 方案管理 + 发现模块 | 1周 |
+| 第五阶段 | 消息中心 + 个人中心 + 版本升级 | 0.5周 |
+| 第六阶段 | 联调测试 + 优化修复 | 1周 |
+| **合计** | | **6周** |