Files
hms/docs/superpowers/specs/2026-05-05-foundation-solidification-design.md
iven df1d85bfde 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 生产部署配置
2026-05-13 23:29:42 +08:00

76 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 通过。