Files
hms/docs/discussions/2026-04-28-system-review-and-brainstorm.md
iven 75cd305996
Some checks failed
CI / security-audit (push) Has been cancelled
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
docs(wiki): 全景梳理 — 更新 9 个 wiki + CLAUDE.md scope + 头脑风暴记录
基于 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
2026-04-28 14:53:04 +08:00

167 lines
6.1 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-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 集成) |
### 架构优势
1. 模块化设计优秀 — ErpModule trait + 拓扑排序 + 依赖注入
2. 事件驱动完整 — EventBus + Outbox + LISTEN/NOTIFY + 幂等消费 + Dead Letter
3. 安全体系完善 — PII 加密(KEK/DEK) + HMAC 盲索引 + RLS + 审计哈希链
4. 健康模块业务域覆盖全面 — 44 实体覆盖患者/体征/预约/随访/咨询/告警/积分/透析等
### 主要风险
1. **P1**: AI 模块使用 placeholder 数据HealthDataProviderImpl 全部 stub
2. **P1**: erp-dialysis 已拆分但 erp-server 未注册激活
3. **P2**: 4 个核心模块config/message/workflow/ai零单元测试
4. **P2**: i18n 未实现,所有前端文本硬编码中文
## 议题 Aerp-dialysis 模块归属决策
### 现状审计
- erp-dialysis crate17 个源文件,~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** | - | 缺失 |
### 决策
**按风险排序**。优先补充业务风险最高、影响面最大的模块。
### 优先级
1. **P0 erp-workflow** — BPMN 引擎是业务核心parser + executor + expression evaluator 零测试
2. **P1 erp-ai** — AI 输入脱敏 + Prompt 模板注入风险高
3. **P2 erp-message** — SSE 推送 + 事件消费者影响通知可靠性
4. **P3 erp-config** — CRUD 为主,风险最低
## 议题 CAI 集成破局
### 现状
- 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。
### 数据桥接方向
1. **化验单解读** (lab_report) — 查询患者的 lab_report + vital_signs构造结构化输入给 Claude
2. **趋势分析** (trends) — 查询时间序列体征数据vital_signs + vital_signs_hourly生成趋势描述
3. **体检方案** (checkup_plan) — 查询患者基本信息 + 诊断 + 体征,生成个性化体检建议
4. **报告摘要** (report_summary) — 查询健康档案 + 化验 + 诊断,生成综合健康报告
### 安全要求
- AI 输入必须经过 sanitization 模块脱敏
- AI 输出不可直接存入数据库,必须经过审核流程
- 患者数据跨模块传输通过 trait 接口,不直接依赖
## 议题 D3 个月产品路线图
### 决策
**AI 驱动路线**。以 AI 数据桥接为核心主线,其他工作围绕它展开。
### Phase 1基础准备第 1-2 周)
- 激活 erp-dialysis 模块2 小时)
- 补充 erp-workflow 单元测试P0
- wiki 全面更新(已完成)
### Phase 2AI 数据桥接(第 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 个议题均已达成决策:
1. **dialysis** → 接入激活2 小时工作量)
2. **测试** → 按风险排序workflow > ai > message > config
3. **AI** → 数据桥接优先,实现 HealthDataProvider 4 个方法
4. **路线图** → AI 驱动路线3 个月分 5 个 Phase
## 产出物
- wiki 9 个文件更新index/erp-health/erp-server/architecture/testing/database/frontend/erp-core + CLAUDE.md scope 表)
- 本讨论记录
- 后续:按路线图分阶段执行