7.7 KiB
7.7 KiB
需求缺口清单
基于 软件系统说明.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 校验。 - 服务 UUID:
FFE0设备信息服务,FFE1数据通信服务,FFE2OTA 升级服务。
云端已知能力
- 云端基础设施包括:
Tencent Cloud IoT Hub、SCF、MySQL、Redis、CLS、CMQ。 - 环境划分为三套:开发环境
IoT Hub + 云函数(测试),测试环境IoT Hub + 云函数 + MySQL,生产环境IoT Hub + 云函数 + MySQL + Redis。 - 云函数职责:用户认证、设备绑定/解绑、订阅管理、护理记录同步、设备注册、试用订阅管理、数据统计。
数据模型已知名称
usersdevicesbindingssubscriptionssessionstreatment_recordspd_dataoperation_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. 数据库字段设计缺失
当前只有表名,无法开始建库、写接口或定义查询。
缺失项:
- 每张表的字段列表
- 主键、外键、唯一约束
- 状态枚举
- 时间字段和时区约定
- 审计字段
- 软删/硬删策略
sessions与treatment_records的边界pd_data数据含义、采样频率、保留周期operation_logs的记录范围和保留周期
6. 管理后台规格不完整
当前只有模块清单,还不足以支持页面设计和接口定义。
缺失项:
- 管理员登录方式
- 角色定义与权限矩阵
- 页面路由和菜单结构
- 列表页筛选项、排序项、导出格式
- 详情页字段清单
- 仪表盘统计指标口径
- 日志查询维度
- 是否支持设备远程控制
7. 安全设计缺实现细节
当前停留在原则层面,无法转为工程方案。
缺失项:
- Token 格式、签名算法、刷新策略
DeviceSecret存储和轮换方式- 敏感字段加密范围
- API 防重放、防刷、限流策略
- 后台高权限操作的二次确认要求
- 审计日志保留和防篡改策略
- 隐私数据脱敏要求
8. 测试与运维方案缺失
缺少交付和验收所需的执行标准。
缺失项:
- BLE 联调测试方案
- 设备模拟方案
- API 测试样例
- MQTT 联调样例
- 真机测试范围
- 云函数发布流程
- 数据库迁移流程
- CLS 日志规范
- CMQ 重试和死信策略
- 告警、备份、恢复方案
- 验收标准与性能指标
歧义点
这些内容在文档中提到,但定义仍然模糊,后续需要先澄清再设计:
- 小程序与云端的
MQTT是直接连接还是仅通过服务端转发。 - “自动扫描”到底指肤质检测、佩戴检测、设备自检,还是其他扫描动作。
pd_data的PD含义和数据来源。- 护理记录“异步写入”是全量异步,还是仅明细异步。
- 管理后台中的“系统设置”是否只管理管理员与权限,还是还包含设备、订阅、公告等全局配置。
补规格优先级
建议按以下顺序补充规格,避免阻塞主链路开发:
- BLE 通信协议明细
- 小程序与云端 API 契约
- 数据库表结构设计
- 设备注册、绑定、订阅规则
- MQTT 消息规范
- 小程序状态机与异常流程
- 管理后台权限与页面规格
- 安全与运维方案
建议补充文档
建议在当前说明基础上继续补以下文档:
01-BLE通信协议明细.md02-小程序业务流程与状态机.md03-云函数API接口清单.md04-数据库表结构设计.md05-IoT设备注册与MQTT消息规范.md06-管理后台功能与权限设计.md07-安全与鉴权方案.md08-测试与验收标准.md
当前结论
当前说明已经足够确定系统边界、主要技术选型和一阶段开发主线,但还不足以直接进入实现。最关键的四个缺口是:
- BLE 协议明细
- API 契约
- 数据库字段设计
- 业务状态机
在这四项没有补齐前,代码实现和联调都将高度依赖猜测,返工风险很高。