Files
hms/docs/discussions/2026-05-11-expert-brainstorm-session.md
iven 9487ccb62e docs(health): 六维度全面均衡分析报告 + 六专家组头脑风暴评审
- 新增六维度分析报告:架构(7.5)/代码质量(7.0)/业务完整度(7.5)/安全合规(7.5)/生产就绪(5.5)/可扩展性(6.5),综合 6.9/10 (B)
- 组织 6 位虚拟专家(架构师/后端/前端/安全/DevOps/产品)独立评审,综合 7.0/10 (B),较上次 6.4/10 提升 +0.6
- 识别 Top 5 行动优先级:OpenAPI 注解补全、性能基准、event.rs 拆分、小程序测试、冻结模块解冻
- 制定三个月路线图:Month 1 质量加固 → Month 2 功能补全 → Month 3 生产化
- 更新 wiki/index.md 关键数字(57 实体、999 测试、24 unwrap、75+ 权限码等)
2026-05-11 03:43:51 +08:00

14 KiB
Raw Blame History

HMS 多专家组头脑风暴 — 六维度全面均衡评审

日期: 2026-05-11 | 数据截止: commit c716cc0 (feat/media-library-banner) | 参与者: 架构/后端/前端/安全/运维/产品 六位虚拟专家 关联: 六维度全面均衡分析报告 上次会议: 2026-05-07 五专家组评审(综合 6.4/10 B-

背景

基于六维度全面均衡分析(架构合理性 + 代码质量 + 业务完整度 + 安全合规 + 生产就绪度 + 可扩展性),召集六位虚拟专家从不同视角对 HMS 系统进行独立评审。与上次2026-05-07相比系统完成了媒体库+轮播图管理上线、文章编辑器重设计、Design Token 全面推广、Clippy 清零、生产 unwrap 从 514 降至 24 等重要工作。


Phase A: 现状报告(数据驱动)

综合评分矩阵

维度 分析评分 专家共识 趋势
架构合理性 7.5 7.2
代码质量 7.0 6.5
业务完整度 7.5 7.0
安全合规 7.5 7.5
生产就绪度 5.5 6.5
可扩展性 6.5
综合 6.9 7.0 ↑ +0.6

Phase B: 专家独立评估

专家 A首席架构师

评分7.2 / 10B+

Top 3 优势:

  1. 严格的模块隔离 — 星型依赖图实现真正可拆分架构 — 所有 7 个业务模块只依赖 erp-core没有任何模块间直接依赖。任何一个模块可以独立抽出为微服务而不需要修改其他模块代码。ErpModule trait 定义了完整的模块生命周期钩子。

  2. 事件系统具备生产级可靠性 — Outbox + 幂等 + Dead-Letter 三重保障 — 两阶段提交(持久化 pending → 广播 → published配合 PostgreSQL NOTIFY 和 outbox relay。消费端有幂等检查和失败兜底。23 个消费者覆盖关键跨模块场景。

  3. 领域模型覆盖面广且一致性高 — 57 实体 / 31 handler / 36 service所有实体遵循统一标准字段规范id/tenant_id/created_at/updated_at/deleted_at/version所有 API 遵循 /api/v1/ 和 ApiResponse 统一包装。

Top 3 风险:

  1. event.rs 2871 行是架构腐化的定时炸弹 — 31 事件 + 23 消费者 + 测试集中在单文件任何消费者修改都需重编译整个文件多人协作时几乎必然产生合并冲突。module.rs1595 行)同理。

  2. 前端测试覆盖率严重不足 — 297 个 TS/TSX 文件仅 62 个测试文件,测试代码与业务代码比例 1:7.4。AdminDashboard730 行)等核心页面完全没有测试。

  3. 6 个冻结模块是"半活半死"的隐性技术债 — 有前后端实现但被冻结,路由仍注册、实体仍编译、表仍存在。既不能安全删除,也不能放心使用。

"如果只能做一件事" 拆分 event.rs 为独立的事件消费者子模块。收益最高:降低编译时间、消除合并冲突热点、为冻结模块清理扫清道路。


专家 B后端工程负责人

评分6.5 / 10B-

Top 3 优势:

  1. 工程纪律严格 — Clippy 全 workspace 0 警告unwrap 从 514 降至 24统一 AppError 错误处理999 个测试函数提供扎实回归保护。

  2. PII 加密方案完整 — AES-256-GCM + HMAC-SHA256 + DEK 轮换,覆盖咨询内容/诊断/执业证/随访/手机号等敏感字段KEK/DEK 分层密钥管理。

  3. 无 N+1 查询,数据访问层性能基础良好 — SeaORM 的 Entity + Model + Relation 模式配合 tenant_id 过滤31+ 事件 Outbox + LISTEN/NOTIFY。

Top 3 风险:

  1. event.rs 2871 行 — 模块内聚性严重退化 — 每次事件定义变更触发 erp-health 全量重编译,合并冲突概率极高,违反 800 行上限规范。data_service.rs1907 行、manifest.rs1809 行)同理。

  2. erp-health OpenAPI 注解覆盖率 3%1/32 handler— API 文档几乎不可用 — 260+ 后端路由绝大部分在 Swagger UI 上不可见,文档缺失 = 接口契约不存在。

  3. 异步测试比例偏低184/999 = 18.4% — 数据库操作、事件总线、并发预约 CAS 等核心路径需异步测试才能覆盖真实竞态条件。

"如果只能做一件事" 拆分 event.rs 为按领域分组的小文件。这是编译性能瓶颈、协作摩擦点和架构退化的最先征兆。


专家 C前端/UX 工程负责人

评分7.2 / 10B+

Top 3 优势:

  1. API 层零绕过 + 零 console.log — 297 个文件没有任何直接 fetch 调用,全通过 52 个 API 模块文件封装。鉴权逻辑单点可控。

  2. Design Token 体系统一且覆盖完整 — 68 个 SCSS 文件全部接入 10 级字号 + 4 结构 token关怀模式/长者模式 58/58 页面 100% 覆盖。

  3. 文件粒度控制到位 — 最大文件 730 行,远低于 800 行红线。6 个 Zustand store 分散管理52 个 API 模块独立封装。

Top 3 风险:

  1. 小程序 124 文件零测试覆盖 — 质量保障真空 — 66 页面 / 29 service 文件完全无测试,回归验证全靠人工。

  2. TypeScript any 类型 67 处 — 类型安全网有系统性漏洞 — 医疗数据的类型安全是业务正确性最后防线any 导致编译期无法捕获字段拼写错误。

  3. 高频 .map() 渲染页面缺少 memoization — PluginDashboard12 次、DashboardWidgets11 次)等仪表盘组件数据频繁更新。

"如果只能做一件事" 给小程序补测试。先覆盖 29 个 service 文件的接口契约测试 — 投入产出比最高。


专家 D安全与合规官

评分7.5 / 10B+

Top 3 优势:

  1. PII 加密 KEK/DEK 分层架构成熟度高 — 生产构建强制要求 KEK 环境变量,密钥材料 Drop 时清零HMAC-SHA256 独立子密钥用于可搜索加密。

  2. 多租户隔离三层防线 — JWT 中间件 → SeaORM 过滤 → PostgreSQL RLSRLS SET 使用参数绑定不存在注入风险。

  3. FHIR 越权修复 + 审计日志哈希链 — enforce_patient_scope 系统性修复SHA-256 哈希链防篡改。

Top 3 风险:

  1. OAuth Token 端点缺少客户端级限流 — 凭据暴力破解向量 — Redis 不可达时 fail_close 默认 false 直接放行。OAuth client_secret 可被分布式暴力破解。

  2. 审计日志 fire-and-forget 写入 — 违反医疗合规不可抵赖性 — 写入失败仅 warn 不重试不阻断,哈希链断裂无检测。

  3. BLE 网关认证无速率限制和 API Key 轮换 — 一旦泄露攻击窗口永久,无法自动过期。

"如果只能做一件事" 将 rate_limit.fail_close 默认改为 true并为 OAuth Token 端点增加独立的客户端级速率限制。


专家 EDevOps/SRE 负责人

评分6.5 / 10B-

Top 3 优势:

  1. 安全设计层层设防 — 默认密钥拒绝启动、release 模式拒绝 CORS 通配符、Redis 驱动登录锁定、审计哈希链。

  2. 可观测性基础设施已落地 — Prometheus 指标导出HTTP 请求/延迟直方图)、独立 9090 端口 metrics、连接池采样、健康检查分层设计。

  3. 事件驱动架构具备清晰微服务拆分路径 — broadcast → Kafka/NATS 平滑迁移outbox relay → Debezium应用层零修改。

Top 3 风险:

  1. 文件存储是单点故障 — 医疗数据合规红线 — 本地 uploads 目录无异地备份、无对象存储、无版本控制。磁盘损坏 = 患者数据不可恢复。

  2. 单 PostgreSQL 实例无读写分离 — 性能和可用性单点 — 连接池 max 20、无读副本、无 PgBouncer、无自动故障转移。

  3. 后台任务缺乏监控和死锁保护 — 静默失败风险 — 定时任务执行状态无指标暴露,失败仅 warn 无告警。

"如果只能做一件事" 立即建立 PostgreSQL 自动备份 + 上传文件定期同步到对象存储。数据丢失是医疗平台唯一不可逆、不可辩护的事故。


专家 F产品经理

评分7.0 / 10B

Top 3 优势:

  1. 医疗业务覆盖完整度在同类产品中领先 — 57 实体覆盖患者全生命周期 12 个业务子域5 角色定制化工作台,形成完整的健康管理和运营闭环。

  2. 内容运营基础设施已形成可闭环能力 — 媒体库 + 轮播图 + 文章编辑器三位一体,配合小程序访客首页动态化,运营人员无需开发介入即可完成完整内容发布流程。

  3. 多终端一致性与无障碍设计超出预期 — 4 套主题、Design Token 全面接入、关怀/长者模式 100% 覆盖,说明团队把无障碍内嵌到设计系统中。

Top 3 风险:

  1. 6 个冻结模块构成"功能幻觉",损害客户信任 — 用户能看到但无法使用。透析管理尤其关键(产品定位"血透中心首发"但透析被冻结)。

  2. AI 分析是核心差异化卖点,但用户触达路径断裂 — 后端 4 个 SSE 端点已实现,前端有列表页,但缺少"触发分析"操作入口。

  3. 接近完成但缺少可部署方案 — 85% 功能完成度但无法进入商业化验证阶段,所有功能完善都是"在实验室里打磨"。

"如果只能做一件事" 补全 AI 分析触发入口 + 生成生产级 Docker 镜像,让核心差异化功能可以被客户实际体验。


Phase C: 交叉讨论

共识点

  1. event.rs 拆分是第一优先 — 架构师和后端负责人同时将其列为"如果只能做一件事",说明跨角色认同度高
  2. 数据保护是生产前提 — DevOps 和安全专家同时强调文件存储和数据库备份的紧迫性
  3. 冻结模块需要一次性决策 — 要么解冻要么删除,不允许"半活半死"状态持续
  4. 小程序测试空白是共识风险 — 前端负责人和架构师都标记了这个问题

分歧点

  1. OpenAPI 注解 vs 性能基准 — 后端负责人优先补文档DevOps 优先建基准。折中:先做注解(成本低收益大),第二个月建基准
  2. 冻结模块策略 — 产品经理建议解冻透析+排班(业务价值),架构师建议删除或完整实现。折中:解冻高价值模块(透析、排班),其余添加"即将推出"提示
  3. fail_close 默认值 — 安全专家建议改为 trueDevOps 提醒 Redis 不可达会导致服务完全不可用。折中:先为 OAuth 和 BLE 端点单独添加限流层,月 2 再全局改 fail_close

资源冲突

  • 后端资源有限event.rs 拆分和 OpenAPI 注解需要同一批开发者。优先拆分(消除瓶颈),然后批量补注解
  • 小程序测试需要前端资源:与功能开发竞争。建议测试框架搭建后由 CI 自动化提醒覆盖率变化

Phase D: 行动清单

P0 — 阻塞性(必须 2 周内完成)

# 行动 负责人 工时 验收标准
1 拆分 event.rs 为 6-8 个领域文件 架构师+后端 2-3 天 零文件 >800 行
2 fail_close 改 true + OAuth/BLE 独立限流 安全+DevOps 1 天 OAuth token 端点有客户端级限流
3 PostgreSQL 自动备份 + 文件异地同步 DevOps 2 天 pg_dump 每日全量 + WAL 增量

P1 — 高优先级Month 1 内完成)

# 行动 负责人 工时 验收标准
4 拆分 module.rs 为路由子模块 架构师 1-2 天 零文件 >800 行
5 erp-health handler OpenAPI 注解补全 后端 5-7 天 80%+ handler 有注解
6 小程序 service 层测试框架搭建 前端 2-3 天 29 个 service 有基础测试
7 AI 分析触发入口补全 产品+前端 2 天 患者详情/化验报告页可发起分析
8 解冻透析管理和排班模块 产品+架构 1 天 + 验证 路由解冻E2E 验证通过

P2 — 中优先级Month 2 内完成)

# 行动 负责人 工时 验收标准
9 性能基准测试建立 DevOps 3 天 核心 API p50/p95/p99 基线
10 Grafana 监控仪表盘 DevOps 3 天 HTTP/DB/EventBus 指标可视化
11 TypeScript any 清零 前端 3-5 天 Web any 降至个位数
12 审计日志写入可靠性(重试+哈希链验证) 安全+后端 2 天 写入失败有重试,每日自动验证链完整性
13 前端核心页面测试补全 前端 5-7 天 5 个核心页面有测试

P3 — 持续改进Month 3

# 行动 负责人 工时 验收标准
14 媒体存储抽象(本地/S3 切换) 架构+DevOps 3-5 天 Storage trait + S3 实现
15 数据库读写分离准备 DevOps 5 天 PgBouncer + 读副本配置
16 异步测试比例提升至 35% 后端 5 天 关键并发路径有异步测试
17 BLE API Key 轮换机制 安全 2 天 Key 有 TTL 和自动过期
18 前端性能优化memoization + bundle 前端 5 天 LCP < 2s

综合评分汇总

专家 角色 评分 "如果只能做一件事"
A 首席架构师 7.2 拆分 event.rs
B 后端工程负责人 6.5 拆分 event.rs
C 前端/UX 工程负责人 7.2 小程序补测试
D 安全与合规官 7.5 fail_close 改 true + OAuth 限流
E DevOps/SRE 负责人 6.5 PostgreSQL 备份 + 文件异地同步
F 产品经理 7.0 AI 触发入口 + 生产 Docker 镜像
综合 7.0/10 (B) 较上次 6.4/10 (B-) 提升 +0.6

三个月路线图

Month 1 — 质量加固 + 安全加固(提升到 7.5+

结构治理: event.rs 拆分 → module.rs 拆分 → OpenAPI 注解补全 安全加固: fail_close + OAuth/BLE 限流 + 审计日志可靠性 数据保护: PostgreSQL 备份 + 文件异地同步 测试补全: 小程序 service 层测试框架

Month 2 — 功能补全 + 可观测性(提升到 8.0+

功能: 解冻透析+排班 → AI 触发入口 → 剩余冻结模块处理 可观测性: 性能基准 → Grafana 仪表盘 → 后台任务监控 质量: TypeScript any 清零 → 前端核心页面测试

Month 3 — 生产化 + 扩展性(提升到 8.5+

存储: 媒体存储抽象 → S3/OSS 支持 数据库: PgBouncer + 读写分离准备 安全: BLE Key 轮换 → 安全态势可视化 性能: 前端 bundle 优化 → memoization → LCP 基线