- T40 UI 审计计划和结果文档(docs/qa/) - wiki 更新:miniprogram 设计系统合规审计记录 + index 关键数字更新 - 审计 V2 完整报告(docs/audits/v2/) - 讨论记录文档(docs/discussions/) - 设计规格和实施计划(docs/superpowers/) - 角色测试计划和结果(docs/qa/role-test-*) - Docker 生产部署配置
76 lines
3.3 KiB
Markdown
76 lines
3.3 KiB
Markdown
# 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 CRITICAL(5 个)
|
||
|
||
| ID | 问题 | 修复方案 |
|
||
|----|------|----------|
|
||
| C1 | FHIR `allowed_patient_ids=None` 无限制访问 | None 视为空列表(拒绝所有) |
|
||
| C2 | AI 队列 `claim_next` 绕过 RLS 租户隔离 | 添加 tenant_id,SET `app.current_tenant_id` |
|
||
| C3 | FHIR `$everything` 子查询缺 tenant_id | 每个子查询加 TenantId 过滤 |
|
||
| C4 | `.env.bak` 泄露 AES 密钥 | 删除文件、轮换密钥 |
|
||
| C5 | Docker 硬编码默认密码 | 改用 .env 注入 |
|
||
|
||
### 2.2 HIGH(10 个)
|
||
|
||
| 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. 验证标准
|
||
|
||
每个 Phase:cargo check + test 通过、浏览器操作无 500、小程序可导航、冻结模块已隐藏、pnpm build 通过。
|