文件
jw-beauty/docs/planning/需求缺口清单.md
T

7.7 KiB
原始文件 Blame 文件历史

需求缺口清单

基于 软件系统说明.docx 整理。本清单只记录两类内容:

  • 文档中已经明确、可作为后续设计输入的事实
  • 文档中缺失、会直接阻塞开发或联调的规格项

当前仓库没有源码、接口定义、数据库 schema、CI 或部署配置,因此本清单以产品说明为唯一依据,不补充未被文档证实的实现细节。

已确认事实

系统边界

  • 系统由微信小程序、光子美容仪设备端、腾讯云 IoT/云服务、管理后台组成。
  • 小程序与设备通过 BLE 5.0 GATT 通信。
  • 小程序与云端通过 HTTPS/MQTT 通信。
  • 设备通过 MQTT over TLS 连接腾讯云 IoT Hub。
  • 管理后台是独立前端,技术栈为 uniapp + Vue 3 + uView Plus,部署到腾讯云静态网站托管。
  • 小程序端是微信原生 WXML / WXSS / JS,不是 uniapp

小程序业务骨架

  • 页面包括:首页、护理历史、发现、我的。
  • 首次使用流程:扫码 -> 蓝牙授权 -> 设备绑定 -> 获得 7 天试用 -> 确认佩戴 -> 自动扫描 -> 开始治疗。
  • 日常使用流程:打开小程序 -> 连接设备 -> 确认佩戴 -> 自动扫描 -> 开始治疗。

BLE 已知协议事实

  • 协议帧格式:帧头 0xAA 0x55,随后是长度、类型、数据、XOR 校验。
  • 服务 UUIDFFE0 设备信息服务,FFE1 数据通信服务,FFE2 OTA 升级服务。

云端已知能力

  • 云端基础设施包括:Tencent Cloud IoT HubSCFMySQLRedisCLSCMQ
  • 环境划分为三套:开发环境 IoT Hub + 云函数(测试),测试环境 IoT Hub + 云函数 + MySQL,生产环境 IoT Hub + 云函数 + MySQL + Redis
  • 云函数职责:用户认证、设备绑定/解绑、订阅管理、护理记录同步、设备注册、试用订阅管理、数据统计。

数据模型已知名称

  • users
  • devices
  • bindings
  • subscriptions
  • sessions
  • treatment_records
  • pd_data
  • operation_logs

MQTT 已知事实

  • 设备上报主题:$iot/{product_id}/{device_name}/telemetry
  • 设备事件主题:$iot/{product_id}/{device_name}/event
  • 使用 CMQ 做异步处理。
  • 护理记录存在异步写入路径。

安全已知事实

  • 全链路使用 TLS 1.2+
  • 设备认证依赖 DeviceSecret
  • 用户认证是微信登录 + Token。
  • Token 有效期为 7 天。
  • 需要敏感数据加密存储、API 鉴权、角色权限、API 级别鉴权。

核心缺口

1. BLE 协议规格不完整

当前只有帧结构和服务 UUID,无法支持小程序、设备端和测试联调。

缺失项:

  • type 命令字完整定义
  • 请求/响应 payload 结构
  • 各字段长度、编码、字节序
  • 长度字段计算规则
  • XOR 校验计算范围
  • 错误码与 ACK/NACK 机制
  • 超时、重试、幂等策略
  • 主动上报与被动响应的区分
  • characteristic UUID 清单
  • MTU、分包、粘包处理规则
  • 断连重连与会话恢复策略
  • OTA 协议、分片、校验、回滚规则
  • 佩戴确认规则
  • 自动扫描的具体定义
  • 治疗开始、暂停、结束、状态同步命令

2. 小程序状态机与业务规则不完整

当前文档只描述了高层流程,没有足够的页面行为和异常流程定义。

缺失项:

  • 扫码内容定义:二维码中包含什么
  • 绑定是否必须扫码
  • 用户和设备的绑定约束:一对一、一对多、多对一
  • 解绑规则与限制
  • 试用订阅规则:按用户还是按设备发放,是否可重复领取
  • 订阅有效性校验时机
  • 设备未连接、蓝牙拒绝、治疗中断、同步失败等异常流
  • 小程序本地缓存与重试机制
  • 页面跳转关系与关键空态
  • 治疗前、中、后的状态枚举
  • 后台切换、来电、锁屏、断蓝牙时的处理规则

3. 云端 API 契约缺失

当前只有功能名,没有接口定义,前后端和测试都无法并行推进。

缺失项:

  • API 列表和路由
  • HTTP 方法
  • 请求参数
  • 返回结构
  • 错误码
  • 鉴权方式
  • Token 刷新与吊销机制
  • 微信登录换取身份的流程
  • 绑定/解绑接口规则
  • 订阅接口的查询、创建、续期、停用规则
  • 护理记录同步接口格式
  • 幂等、防重、防刷设计

4. 设备注册与 IoT 流程缺失

文档提到设备注册和 DeviceSecret,但没有写清注册与认证流程。

缺失项:

  • 设备出厂、激活、绑定、上线的完整流程
  • DeviceSecret 的签发时机和保存方式
  • 小程序是否参与设备注册
  • IoT 事件如何触发云函数
  • 是否使用规则引擎或设备影子
  • MQTT 上下行消息结构
  • 设备控制指令的 topic 与 payload
  • 设备离线、禁用、换绑时的状态管理

5. 数据库字段设计缺失

当前只有表名,无法开始建库、写接口或定义查询。

缺失项:

  • 每张表的字段列表
  • 主键、外键、唯一约束
  • 状态枚举
  • 时间字段和时区约定
  • 审计字段
  • 软删/硬删策略
  • sessionstreatment_records 的边界
  • pd_data 数据含义、采样频率、保留周期
  • operation_logs 的记录范围和保留周期

6. 管理后台规格不完整

当前只有模块清单,还不足以支持页面设计和接口定义。

缺失项:

  • 管理员登录方式
  • 角色定义与权限矩阵
  • 页面路由和菜单结构
  • 列表页筛选项、排序项、导出格式
  • 详情页字段清单
  • 仪表盘统计指标口径
  • 日志查询维度
  • 是否支持设备远程控制

7. 安全设计缺实现细节

当前停留在原则层面,无法转为工程方案。

缺失项:

  • Token 格式、签名算法、刷新策略
  • DeviceSecret 存储和轮换方式
  • 敏感字段加密范围
  • API 防重放、防刷、限流策略
  • 后台高权限操作的二次确认要求
  • 审计日志保留和防篡改策略
  • 隐私数据脱敏要求

8. 测试与运维方案缺失

缺少交付和验收所需的执行标准。

缺失项:

  • BLE 联调测试方案
  • 设备模拟方案
  • API 测试样例
  • MQTT 联调样例
  • 真机测试范围
  • 云函数发布流程
  • 数据库迁移流程
  • CLS 日志规范
  • CMQ 重试和死信策略
  • 告警、备份、恢复方案
  • 验收标准与性能指标

歧义点

这些内容在文档中提到,但定义仍然模糊,后续需要先澄清再设计:

  • 小程序与云端的 MQTT 是直接连接还是仅通过服务端转发。
  • “自动扫描”到底指肤质检测、佩戴检测、设备自检,还是其他扫描动作。
  • pd_dataPD 含义和数据来源。
  • 护理记录“异步写入”是全量异步,还是仅明细异步。
  • 管理后台中的“系统设置”是否只管理管理员与权限,还是还包含设备、订阅、公告等全局配置。

补规格优先级

建议按以下顺序补充规格,避免阻塞主链路开发:

  1. BLE 通信协议明细
  2. 小程序与云端 API 契约
  3. 数据库表结构设计
  4. 设备注册、绑定、订阅规则
  5. MQTT 消息规范
  6. 小程序状态机与异常流程
  7. 管理后台权限与页面规格
  8. 安全与运维方案

建议补充文档

建议在当前说明基础上继续补以下文档:

  • 01-BLE通信协议明细.md
  • 02-小程序业务流程与状态机.md
  • 03-云函数API接口清单.md
  • 04-数据库表结构设计.md
  • 05-IoT设备注册与MQTT消息规范.md
  • 06-管理后台功能与权限设计.md
  • 07-安全与鉴权方案.md
  • 08-测试与验收标准.md

当前结论

当前说明已经足够确定系统边界、主要技术选型和一阶段开发主线,但还不足以直接进入实现。最关键的四个缺口是:

  • BLE 协议明细
  • API 契约
  • 数据库字段设计
  • 业务状态机

在这四项没有补齐前,代码实现和联调都将高度依赖猜测,返工风险很高。