# 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 通过。