基于 3 个并行探索代理的全面扫描结果,更新 wiki 数据至实际状态: - index.md: 18 crate / 76 迁移 / 44 实体 / 77k 行 / 409 提交 - erp-health.md: 44 实体 / 21 handler / 22 权限 / 25 事件 / 6 消费者 - erp-server.md: 9 后台任务 / RLS 中间件栈 - architecture.md: 新增 erp-ai/dialysis 到依赖图 / 测试覆盖表 - testing.md: 225 单元 + 159 集成 / 4 模块零测试警告 - database.md: 76 迁移 / RLS+哈希链+盲索引+Dead Letter - erp-core.md: PiiCrypto 加密体系 / EventBus 完整描述 - frontend.md: 163 文件 / 5 store / 10 API 文件 - CLAUDE.md: 新增 health/ai/dialysis/assessment scope 头脑风暴 4 个议题决策: - dialysis: 接入激活 - 测试: 按风险排序(workflow > ai > message > config) - AI: 数据桥接优先 - 路线图: AI 驱动 3 个月 5 Phase
6.1 KiB
6.1 KiB
HMS 系统全景梳理与多专家头脑风暴
日期: 2026-04-28 | 参与者: iven, Claude (多专家角色)
背景
系统经过快速迭代,代码库规模已显著增长(18 crate, 77k 行 Rust, 163 前端文件, 409 次提交)。wiki 数据严重滞后于实际状态。本次全面梳理后召开多专家头脑风暴,确定下一阶段方向。
系统现状全景
关键数据(实际值 vs 之前 wiki 值)
| 指标 | wiki 更新前 | 实际值 |
|---|---|---|
| Rust crate | 15 | 18 |
| 数据库迁移 | 72 | 76 |
| erp-health 实体 | 34 | 44 |
| Web 前端文件 | 133 | 163 |
| Rust 代码行 | ~63k | ~77k |
| Git 提交 | 301 | 409 |
| 后端测试 | 119 | 384(225 单元 + 159 集成) |
架构优势
- 模块化设计优秀 — ErpModule trait + 拓扑排序 + 依赖注入
- 事件驱动完整 — EventBus + Outbox + LISTEN/NOTIFY + 幂等消费 + Dead Letter
- 安全体系完善 — PII 加密(KEK/DEK) + HMAC 盲索引 + RLS + 审计哈希链
- 健康模块业务域覆盖全面 — 44 实体覆盖患者/体征/预约/随访/咨询/告警/积分/透析等
主要风险
- P1: AI 模块使用 placeholder 数据,HealthDataProviderImpl 全部 stub
- P1: erp-dialysis 已拆分但 erp-server 未注册激活
- P2: 4 个核心模块(config/message/workflow/ai)零单元测试
- P2: i18n 未实现,所有前端文本硬编码中文
议题 A:erp-dialysis 模块归属决策
现状审计
- erp-dialysis crate:17 个源文件,~1,490 行 Rust
- 2 个实体(dialysis_record, dialysis_prescription)
- 完整的 entity/service/handler/dto 四层架构
- DialysisModule 已实现 ErpModule trait
- 4 个权限码(但用了
health.health-data.list/manage而非专用health.dialysis.*) - 依赖仅 erp-core,无其他业务依赖
- erp-health 中已无 dialysis 的 entity/service/handler(已完全迁出)
- erp-health 中残留:stats 端点引用透析统计、validation 中引用透析验证
- erp-server 中未注册 DialysisModule
- 集成测试在 erp-server/tests/ 下(2 个文件)
决策
接入并激活。代码已完整拆分,只需在 erp-server 注册 DialysisModule、挂载路由、修复权限码和测试引用。约 2 小时工作量。
待办
- erp-server/Cargo.toml 添加 erp-dialysis 依赖
- erp-server/main.rs 注册 DialysisModule
- 修复权限码:使用
health.dialysis.list/manage替代借用的health.health-data.* - 迁移集成测试引用
- 清理 erp-health 中的残留引用
议题 B:测试覆盖率提升路径
现状
| Crate | 单元测试 | 集成测试 | 覆盖评估 |
|---|---|---|---|
| erp-health | 104 | 159 | 良好 |
| erp-core | 42 | - | 良好 |
| erp-auth | 38 | 3 | 中等 |
| erp-plugin | 31 | 2 | 中等 |
| erp-dialysis | 10 | - | 中等 |
| erp-config | 0 | - | 缺失 |
| erp-message | 0 | - | 缺失 |
| erp-workflow | 0 | - | 缺失 |
| erp-ai | 0 | - | 缺失 |
决策
按风险排序。优先补充业务风险最高、影响面最大的模块。
优先级
- P0 erp-workflow — BPMN 引擎是业务核心,parser + executor + expression evaluator 零测试
- P1 erp-ai — AI 输入脱敏 + Prompt 模板注入风险高
- P2 erp-message — SSE 推送 + 事件消费者影响通知可靠性
- P3 erp-config — CRUD 为主,风险最低
议题 C:AI 集成破局
现状
- erp-ai 4 个 SSE 分析端点(lab_report, trends, checkup_plan, report_summary)全部使用 placeholder 数据
- HealthDataProviderImpl 4 个方法全部 stub
- HealthDataProvider trait 定义在 erp-core,桥接实现放在 erp-health/src/health_provider_impl.rs
- AI 模块依赖 erp-health 但无法获取真实数据
决策
数据桥接优先。先实现 HealthDataProvider trait 的 4 个方法,从真实数据替换 placeholder。
数据桥接方向
- 化验单解读 (lab_report) — 查询患者的 lab_report + vital_signs,构造结构化输入给 Claude
- 趋势分析 (trends) — 查询时间序列体征数据(vital_signs + vital_signs_hourly),生成趋势描述
- 体检方案 (checkup_plan) — 查询患者基本信息 + 诊断 + 体征,生成个性化体检建议
- 报告摘要 (report_summary) — 查询健康档案 + 化验 + 诊断,生成综合健康报告
安全要求
- AI 输入必须经过 sanitization 模块脱敏
- AI 输出不可直接存入数据库,必须经过审核流程
- 患者数据跨模块传输通过 trait 接口,不直接依赖
议题 D:3 个月产品路线图
决策
AI 驱动路线。以 AI 数据桥接为核心主线,其他工作围绕它展开。
Phase 1:基础准备(第 1-2 周)
- 激活 erp-dialysis 模块(2 小时)
- 补充 erp-workflow 单元测试(P0)
- wiki 全面更新(已完成)
Phase 2:AI 数据桥接(第 3-6 周)
- 实现 HealthDataProviderImpl 4 个方法
- 替换所有 placeholder 数据为真实患者数据
- 补充 erp-ai 单元测试(Mock Claude API)
- AI 输入/输出安全脱敏完善
Phase 3:前端 AI 体验(第 7-8 周)
- AI 分析页面交互优化(流式响应 UI)
- 化验单解读结果展示组件
- 趋势图表 + AI 解读联动
Phase 4:小程序医护端(第 9-10 周)
- 医护端工作台完善
- 患者列表/详情/报告查看优化
- 随访管理流程打通
Phase 5:安全加固(第 11-12 周)
- 补充 erp-message 单元测试
- RLS 全面验证(多租户隔离测试)
- 安全扫描 + 修复
结论
4 个议题均已达成决策:
- dialysis → 接入激活(2 小时工作量)
- 测试 → 按风险排序(workflow > ai > message > config)
- AI → 数据桥接优先,实现 HealthDataProvider 4 个方法
- 路线图 → AI 驱动路线,3 个月分 5 个 Phase
产出物
- wiki 9 个文件更新(index/erp-health/erp-server/architecture/testing/database/frontend/erp-core + CLAUDE.md scope 表)
- 本讨论记录
- 后续:按路线图分阶段执行