# 小程序业务流程与状态机 基于 `软件系统说明.docx` 整理。本文档用于把现有流程描述收敛成可继续细化的页面与状态框架,不补充未经确认的产品规则。 ## 已确认范围 ### 技术边界 - 小程序技术栈:微信原生 `WXML / WXSS / JS` - 与设备通过 `BLE 5.0 GATT` 通信 - 与云端通过 `HTTPS/MQTT` 通信 ### 页面范围 - 首页:设备连接、治疗开始 - 护理历史:记录和统计 - 发现:美容百科、公告 - 我的:用户中心、订阅管理 ### 已确认流程 首次使用: 1. 扫码 2. 蓝牙授权 3. 设备绑定 4. 获得 7 天试用 5. 确认佩戴 6. 自动扫描 7. 开始治疗 日常使用: 1. 打开小程序 2. 连接设备 3. 确认佩戴 4. 自动扫描 5. 开始治疗 ## 建议页面职责 ### 首页 承载主链路: - 设备连接状态展示 - 设备连接入口 - 佩戴确认结果 - 自动扫描结果或状态 - 开始治疗入口 - 治疗中状态展示 ### 护理历史 承载治疗结果查询: - 历史记录列表 - 单次治疗摘要 - 与云端同步状态 ### 发现 承载弱业务内容: - 美容百科 - 公告 ### 我的 承载账号与订阅信息: - 用户信息 - 设备绑定信息 - 订阅状态 - 试用状态 ## 建议最小状态机 以下状态用于支撑第一阶段开发,不代表最终产品态。 | 状态 | 含义 | 是否由文档直接确认 | | --- | --- | --- | | `UNAUTHORIZED_BLE` | 未完成蓝牙授权 | 是 | | `DISCONNECTED` | 未连接设备 | 是 | | `CONNECTED_UNBOUND` | 已连接但未绑定 | 间接确认 | | `BOUND_IDLE` | 已绑定,待治疗 | 间接确认 | | `WEARING_CHECK` | 佩戴确认中 | 是 | | `AUTO_SCAN` | 自动扫描中 | 是 | | `READY_TO_TREAT` | 可开始治疗 | 间接确认 | | `TREATING` | 治疗中 | 是 | | `SYNC_PENDING` | 治疗完成待同步 | 间接确认 | | `SYNC_FAILED` | 记录同步失败 | 间接确认 | ## 首次使用流程拆解 ### 1. 扫码 已知:首次使用从扫码开始。 待确认: - 扫码内容是设备 SN、激活码、绑定码还是 URL - 扫码失败后的兜底方式 ### 2. 蓝牙授权 已知:首次使用要求蓝牙授权。 待确认: - 是否还需要定位权限 - 拒绝授权后的引导方式 ### 3. 设备绑定 已知:首次使用需要绑定设备。 待确认: - 绑定前是否必须先 BLE 连接成功 - 绑定成功由本地判断还是服务端返回 - 一人多设备/一设备多用户规则 ### 4. 获得 7 天试用 已知:首次使用绑定后获得 7 天试用。 待确认: - 试用按用户发还是按设备发 - 是否有领取次数限制 - 试用到期后的处理 ### 5. 确认佩戴 已知:治疗前要确认佩戴。 待确认: - 由设备自动判断还是用户手动确认 - 失败时的提示和重试机制 ### 6. 自动扫描 已知:佩戴确认后进入自动扫描。 待确认: - 自动扫描的业务含义 - 扫描结果是否决定治疗参数 ### 7. 开始治疗 已知:自动扫描后可以开始治疗。 待确认: - 是否允许用户手动调节模式、时长、档位 - 是否需要先校验订阅状态 ## 日常使用流程拆解 日常使用与首次流程的区别在于不再强调扫码、绑定和试用发放,因此可视为: 1. 恢复登录态 2. 连接已绑定设备 3. 佩戴确认 4. 自动扫描 5. 开始治疗 6. 记录同步 ## 异常流清单 以下异常流文档尚未定义,但开发前必须明确: - 蓝牙授权被拒绝 - 扫描不到设备 - 设备连接中断 - 设备已被他人绑定 - 试用已到期 - 订阅无效 - 佩戴确认失败 - 自动扫描失败 - 治疗中断 - 记录同步失败 ## 页面与状态的最低接口需求 为了让小程序能继续设计,云端和 BLE 至少需要提供这些能力: - 查询当前用户信息 - 查询当前绑定设备 - 绑定/解绑设备 - 查询订阅状态 - 同步治疗记录 - BLE 读取设备状态 - BLE 执行佩戴确认、自动扫描、开始治疗 ## 待确认问题 - 小程序是否直接使用 MQTT - 首页是否需要展示实时传感器数据 - 护理历史中的“统计”是本地统计还是云端聚合统计 - 发现页内容是否来自 CMS 或静态配置 - 我的页面是否包含售后、反馈、设置等附加入口 ## 当前结论 当前说明已经给出主流程,但还没有给出完整状态机、异常流和页面交互规则。后续应优先把首页主链路和绑定/订阅规则细化清楚。