docs: T40 UI 审计报告 + wiki 更新 + Docker 配置

- T40 UI 审计计划和结果文档(docs/qa/)
- wiki 更新:miniprogram 设计系统合规审计记录 + index 关键数字更新
- 审计 V2 完整报告(docs/audits/v2/)
- 讨论记录文档(docs/discussions/)
- 设计规格和实施计划(docs/superpowers/)
- 角色测试计划和结果(docs/qa/role-test-*)
- Docker 生产部署配置
This commit is contained in:
iven
2026-05-13 23:29:42 +08:00
parent 212c08b7ae
commit df1d85bfde
78 changed files with 10345 additions and 39 deletions

View File

@@ -0,0 +1,75 @@
# HMS 夯实基础设计规格
> 日期: 2026-05-05 | 版本: 1.0 | 状态: Approved
## 1. 概述
### 1.1 问题
HMS 已完成主体功能开发18 crate / 328 路由 / 46 health 实体 / 772 后端测试),但存在三个结构性问题:
1. **安全漏洞未清零** — 多专家组审查发现 5 CRITICAL + 10 HIGH + 8 MEDIUM + 5 LOW
2. **功能膨胀** — 20 个功能域中 7 个在当前定位下不是首发重点
3. **UX 不统一** — 各端视觉风格、交互模式、错误处理不一致;小程序 60 页面功能过度
### 1.2 目标
暂停新功能开发,用 6-8 周夯实安全基础、统一设计系统、打磨核心流程、精简小程序,产出可上生产的基础版本。
### 1.3 范围
**保留并完善12 个功能域):** 患者管理、健康数据/体征、告警系统、行动收件箱、AI 智能分析、随访管理、咨询管理、内容管理、积分商城、线下活动、统计仪表盘、设备与数据采集
**冻结推迟7 个模块):** 护理计划、班次管理、家庭代理、药物记录、透析管理、医生排班、预约管理
## 2. Phase 1安全清零2-3 周)
### 2.1 CRITICAL5 个)
| ID | 问题 | 修复方案 |
|----|------|----------|
| C1 | FHIR `allowed_patient_ids=None` 无限制访问 | None 视为空列表(拒绝所有) |
| C2 | AI 队列 `claim_next` 绕过 RLS 租户隔离 | 添加 tenant_idSET `app.current_tenant_id` |
| C3 | FHIR `$everything` 子查询缺 tenant_id | 每个子查询加 TenantId 过滤 |
| C4 | `.env.bak` 泄露 AES 密钥 | 删除文件、轮换密钥 |
| C5 | Docker 硬编码默认密码 | 改用 .env 注入 |
### 2.2 HIGH10 个)
| ID | 问题 | 修复方案 |
|----|------|----------|
| H1 | FHIR converter 输出加密密文 | 解密后再输出或脱敏 |
| H2 | 审计日志泄漏加密密文 | 加密字段记录 REDACTED |
| H3 | Refresh Token 验证缺 tenant_id | 添加 tenant_id 过滤 |
| H4 | Token revoke 无租户校验 | 增加 tenant_id 参数 |
| H5 | readiness_check 泄露内部信息 | 替换为 generic message |
| H6 | OAuth handler expect() panic | 改为返回 Internal Error |
| H7 | AI 提示词模板 Prompt Injection | 安全检查 + 限制权限 |
| H8 | Web JWT 存 localStorage | 评估迁移到 httpOnly cookie |
| H9 | 小程序加密密钥嵌入客户端 | 配合服务端 session 失效机制 |
| H10 | Debug 构建绕过 KEK 要求 | CI 检查 + 编译守卫 |
## 3. Phase 2冻结推迟模块2-3 天)
冻结 7 个模块(护理计划/班次/家庭代理/药物/透析/排班/预约),策略:
- 不删代码,保留后端路由和数据库迁移
- 菜单迁移新增 disabled 标记
- 前端路由守卫检查 enabled 标记
- 小程序同步隐藏入口
## 4. Phase 3设计系统统一1 周)
统一范围色板、StatusTag、错误提示、日期格式、表格布局模式。
适老化标准:正文 ≥ 16px、按钮 ≥ 48px、对比度 ≥ 4.5:1。
## 5. Phase 4核心流程打磨1-2 周)
12 个保留功能域的前后端闭环验证和 UX 打磨。
## 6. Phase 5小程序精简与分层2 周)
60 页 → ~20 页,砍掉 BLE 同步/知情同意/医生端重表单,适老化改造,多角色分层。
## 7. 验证标准
每个 Phasecargo check + test 通过、浏览器操作无 500、小程序可导航、冻结模块已隐藏、pnpm build 通过。