# 代码质量审计报告 审计时间:2026-04-28 审计范围:server/、miniprogram/、admin-console/ 全部源码 + 设计文档合规性 ## 审计结果总览 ### 代码质量(修复前 -> 修复后) | 模块 | 修复前 CRITICAL | 修复后 CRITICAL | 修复的问题数 | |------|----------------|----------------|-------------| | Server 后端 | 4 | 0 | 13 | | 小程序 | 7 | 0 | 14 | | Admin 管理后台 | 5 | 0 | 16 | | 文档一致性 | 6 | 3 (已知差距) | 3 | 42 个文件修改,+495 / -1216 行(净减少 721 行),经两轮独立审查验证通过。 ### 文档合规校验 | 校验维度 | 符合 | 部分符合 | 未实现 | |----------|------|----------|--------| | BLE 通信协议 | 4/10 | 2/10 | 2/10 | | API 接口 | 9/17 | 6/17 | 2/17 | | 数据库表结构 | 0/8 | 6/8 | 2/8 | | 安全与鉴权 | 4/15 | 4/15 | 7/15 | | 小程序业务流程 | 3/9 | 6/9 | 0/9 | | 管理后台功能 | 5/9 | 4/9 | 0/9 | --- ## 已修复的问题 ### Server(13 项) 1. JWT 密钥生产环境强制校验(不允许默认值) 2. 订阅 verify 改为 admin-only(堵免费订阅漏洞) 3. 设备命令结果上报增加设备归属校验 4. 设备事件上报增加设备归属校验 5. 护理记录同步增加设备归属校验 6. 移除 admin token 从请求 body 读取 7. 管理员设置接口增加 key 白名单 8. 管理员创建订阅增加用户存在性校验 9. COS getObjectUrl 改为 callback-based Promise 10. 固件检查增加版本比较逻辑 11. 绑定返回真实订阅状态(替代硬编码 trial) 12. 分页参数增加边界保护(pageSize 上限 100) 13. 提取公共工具函数(limitClause, toMysqlDate, formatDate) ### 小程序(14 项) 1. 扫描 PD 假数据替换为占位符 2. 护理完成标记为 client_timer 来源 3. mock.js 禁用 4. auto-scan 增加 onUnload 清理 BLE 监听器 5. wear-check 增加 onUnload 清理 BLE 监听器 6. ble-connect 增加 onUnload 清理 BLE 监听器 7. index 页 ble.off 传入具体回调(不再清除所有监听器) 8. subscription status 类型统一为数字 9. BLE 扫描回调累积修复(offBluetoothDeviceFound) 10. 历史统计数据跨页累加 11. subscribe-success 从参数读取实际套餐信息 12. treatment-done 从参数读取实际护理模式 13. BLE 断连检测(onBLEConnectionStateChange) 14. 购买流程替换为联系管理员弹窗 ### Admin 管理后台(16 项) 1. AdminLayout 退出功能修复(require->import, logout->clearToken) 2. 删除全部 mock 数据和 getMockData 函数 3. Dashboard 假数据替换为真实 API 调用 4. Dashboard monthly_revenue 替换为 subscription_count 5. 订阅统计 || 改为 ?? 修复 0 值显示 6. Token 增加 7 天过期校验 7. 设备状态码统一("库存"改为"未激活") 8. 用户页"记录"链接指向正确页面 9. 订阅 createForm.user_id 类型修复 10. 所有 catch 块增加错误提示 Toast 11. 订阅状态文本统一 12. 删除无效的"记住登录状态"复选框 13. 提取公共 CSS 到 common.css(减少 900+ 行重复) 14. 提取 formatDate 到 utils/format.js 15. AdminLayout 显示真实管理员名称 16. 移除未使用的 uview-plus 依赖 --- ## 剩余差距 详见 `docs/planning/12-待办事项决策分类.md`,分为: - 需要硬件团队确认的 6 项(BLE 协议细节) - 需要产品团队确认的 6 项(功能范围) - 需要运维确认的 5 项(部署配置) - 可独立完成的 P0 共 6 项、P1 共 8 项、P2 共 6 项