docs(analysis): 六维度全面均衡分析 + wiki 关键数字校正

- 6 专家组并行分析:架构 8.5 / 安全 7.5 / 测试 5.5 / 前端 7.2 / DevOps 3.8 / 产品 8.0
- 综合评分 6.8/10 (B),分析报告 + 讨论记录
- wiki 关键数字校正:源文件 652、迁移 147、权限码 128、Web 307 TS/TSX 等
This commit is contained in:
iven
2026-05-17 12:01:15 +08:00
parent c38967a36e
commit 8d3c5915c9
3 changed files with 468 additions and 16 deletions

View File

@@ -0,0 +1,56 @@
# 六维度全面均衡分析 + 多专家组头脑风暴
> 日期: 2026-05-17 | 参与者: 首席架构师 / 安全工程师 / QA测试专家 / 前端UX架构师 / DevOps SRE / 产品经理
## 背景
系统经历 3 个月密集开发800+ 提交),功能完整度达 87%,但上一轮分析(2026-05-11)后未做全面校正。需要从多维度审视系统现状,识别改进空间。
## 讨论要点
### 方法论
- 6 个专家组并行分析,每个专家独立给出评分和建议
- 4 个探索 Agent 并行收集代码级数据(后端统计、前端统计、文档架构、代码质量)
- 所有数据经过代码级核实,与 wiki 关键数字交叉验证
### 核心发现
1. **架构是最大优势 (8.5/10)**
- 星型拓扑、零循环依赖、新模块接入 1-2 天
- 事件系统 Outbox 模式可靠性 7/10
2. **DevOps 是最大短板 (3.8/10)**
- 无 HTTPS、无监控告警、无灾备演练
- 代码层 Prometheus exporter 已实现但未接入
3. **小程序零单元测试是最大质量风险**
- 42 个 service 文件、5 个 store 全部无测试
- 历史上 35 次 fix 源于前后端接口不同步
4. **产品"有弹药没上膛"**
- AI 分析 4 个 SSE 端点缺前端入口(可触达率仅 30%
- 6 个冻结模块解冻仅需改 frozen: false
5. **安全发现 2 个新 P0**
- 文件上传无 MIME 白名单(存储型 XSS 风险)
- OAuth JWT 密钥读取路径不统一(空密钥绕过)
### 各专家 TOP 建议
| 专家 | 最优先建议 | 工作量 |
|------|-----------|--------|
| 架构师 | main.rs 拆分 + version.unwrap 消除 | 2.5天 |
| 安全工程师 | 文件上传 MIME + OAuth JWT 统一 | 4h |
| QA 专家 | MP 核心层单元测试 + CI 安全扫描 | 5.5天 |
| 前端架构师 | OpenAPI TS 类型自动生成 | 3天 |
| DevOps | 最小可观测性 + HTTPS | 5-7天 |
| 产品经理 | AI 分析前端入口 + 积分商城修复 | 5-7天 |
## 结论
综合评分从 6.9 微降至 6.8B但内部结构变化显著
- 前端/UX 因统一组件库迁移从 6.0 大幅提升到 7.2
- 测试因小程序零单元测试从 6.5 降至 5.5
- DevOps 维持 3.8 的低位
**下一步行动优先级:** P0 安全修复(4h) → P0 AI 入口(3-5天) → P1 MP 测试+可观测性
**报告位置:** `docs/superpowers/specs/2026-05-17-system-six-dimension-analysis-design.md`

View File

@@ -0,0 +1,396 @@
# HMS 六维度全面均衡分析报告2026-05-17
> 日期: 2026-05-17 | 方法: 6 专家组并行分析 + 代码级核实 | 数据基准: feat/media-library-banner 分支
## 1. 概述
### 1.1 分析方法
本次分析采用"6 专家组并行头脑风暴"模式,每个专家从不同维度审视系统:
| 专家 | 角色 | 分析维度 |
|------|------|----------|
| 首席架构师 | Senior Developer | 架构演进、事件系统、技术债务 |
| 安全工程师 | Security Engineer | 漏洞修复、合规差距、密钥管理 |
| QA 测试专家 | Senior Developer | 测试覆盖、质量门禁、工具链 |
| 前端/UX 架构师 | Frontend Developer | 前端架构、Design Token、性能 |
| DevOps/SRE | DevOps Automator | 生产就绪度、监控、CI/CD |
| 产品经理 | Senior Project Manager | 产品完整度、用户价值、路线图 |
数据来源652 个 Rust 源文件136,908 行、307 个 Web TS/TSX 文件、161 个小程序 TS/TSX 文件、147 个数据库迁移、128 个权限码,全部经过代码级核实。
### 1.2 六维度综合评分
| 维度 | 评分 | 等级 | 上次(2026-05-11) | 变化 |
|------|------|------|-----------------|------|
| 架构 | 8.5/10 | A- | 7.5 | +1.0 |
| 安全 | 7.5/10 | B+ | 7.0 | +0.5 |
| 测试 | 5.5/10 | C+ | 6.5 | -1.0 |
| 前端/UX | 7.2/10 | B+ | 6.0 | +1.2 |
| DevOps | 3.8/10 | D+ | 4.0 | -0.2 |
| 产品 | 8.0/10 | B+ | 7.5 | +0.5 |
| **综合** | **6.8/10** | **B** | **6.9** | -0.1 |
**核心判断:** 架构和产品是系统最强维度DevOps 是最明显短板。综合评分与上次基本持平,但内部结构变化显著——前端/UX 因统一组件库迁移大幅提升,测试因小程序零单元测试被拉低。
---
## 2. 维度一:架构 (8.5/10)
### 2.1 架构健康度评估
**依赖拓扑:** 严格星型结构10 个 L2 crate 全部仅依赖 erp-core零循环依赖。erp-server 是唯一聚合点。这在 17 crate 规模下是完全合理的。
```
erp-core (零业务依赖)
/ | \ \ \
erp-auth config workflow message health ai dialysis
\ | /
erp-server
erp-plugin (依赖 erp-coreWASM 运行时)
```
**模块边界:** 所有业务 crate 通过 EventBus + trait 通信,不创建直接依赖。新模块(如 erp-billing接入仅需 1-2 天,遵循成熟的 crate 模板。
### 2.2 事件系统成熟度
| 指标 | 值 | 评价 |
|------|-----|------|
| Health 域事件类型 | 31 | 覆盖全面 |
| 全系统事件类型 | 51 | 跨模块联动完善 |
| 事件发布点 | 82 | 密度合理 |
| 消费者模块 | 12 | 主要业务域覆盖 |
| Outbox 可靠性 | 7/10 | 持久化+NOTIFY+兜底轮询三重保障 |
**待改进:** 事件 payload 使用 `serde_json::Value`(无类型约束),超过 50 个事件类型后 schema 演进会变危险。建议为每个事件定义 Typed payload struct。
### 2.3 技术债务 TOP 5
| 排名 | 目标 | 问题 | 优先级 | 工作量 |
|------|------|------|--------|--------|
| #1 | erp-server/main.rs (991行) | OpenAPI 注解+路由+启动全在一个文件65次clone | P1 | 2天 |
| #2 | erp-plugin 三巨头 (5,474行) | data_service+manifest+dynamic_table 过于庞大 | P2 | 3天 |
| #3 | version.unwrap() 模式 (8+处) | 系统性重复,数据损坏时 panic | P1 | 0.5天 |
| #4 | erp-health service 层日志缺失 | 26 个 service 仅 11 处 tracing | P1 | 1天 |
| #5 | erp-message/module.rs (1,220行) | 单文件包含全部消息逻辑 | P2 | 1天 |
### 2.4 erp-health 模块评估
214 文件 / 40,306 行,不需要拆分为子 crate但需要内部模块化
- Entity: 59 文件 / Handler: 32 文件 / Service: 57 文件(含子目录)
- 4 个文件超 800 行action_inbox_service(1,104)、follow_up_service(1,000)、validation(916)、consultation_service(859)
- 建议:将大 service 拆为子目录(如 `action_inbox/crud.rs + query.rs + event_publish.rs`
### 2.5 10x 数据量瓶颈
假设扩展到 1,000 租户 / 100 万患者:
- **瓶颈1**: 健康数据趋势查询聚合计算,需物化视图或预计算汇总表
- **瓶颈2**: Outbox Relay 单线程处理,需按 tenant_id 分片
- **瓶颈3**: EventBus broadcast channel 消费者 lag需考虑 Redis Streams
- **非瓶颈**: UUID v7 B-treeappend-only、Axum 路由260+无压力、SeaORM编译时生成
---
## 3. 维度二:安全 (7.5/10)
### 3.1 漏洞修复优先级
**P0立即修复共 ~4h**
| 编号 | 问题 | 文件 | 方案 | 工作量 |
|------|------|------|------|--------|
| NEW-1 | 文件上传无 MIME 白名单 | media_handler.rs | 添加 ALLOWED_MIME_TYPES + 扩展名清理 | 2-3h |
| NEW-2 | OAuth JWT 密钥独立读取 | oauth/handler.rs | 复用 AppState 已验证密钥 | 1-2h |
**P1短期修复共 ~6h**
| 编号 | 问题 | 文件 | 方案 | 工作量 |
|------|------|------|------|--------|
| HIGH-1 | JWT RwLock unwrap 热路径 | jwt_auth.rs:80,210 | 替换为 DashMap | 1-2h |
| MED-3 | Storage Secret 启动检查缺失 | config.rs | 添加与 JWT 相同的 exit(1) 检查 | 0.5h |
| COMP-1 | 审计日志 fire-and-forget 写入 | audit_service.rs:59 | 关键操作改为同步写入 | 4-6h |
**P2中期修复共 ~15h**
| 编号 | 问题 | 方案 | 工作量 |
|------|------|------|--------|
| HIGH-2 | 动态表名 SQL 引号不一致 | 统一 safe_table_name() | 2-3h |
| HIGH-3 | WASM host block_on | spawn_blocking 线程池隔离 | 4-6h |
| MED-1 | version unwrap 20+处 | erp-core bump_version() 工具函数 | 2-3h |
| COMP-2 | PII 加密覆盖度无注册表 | 建立加密字段注册表 | 4-6h |
### 3.2 安全架构评分
| 子维度 | 评分 | 关键发现 |
|--------|------|----------|
| 认证体系 | 8/10 | Argon2 + 分层路由 + Token 黑名单 + 账户锁定 |
| 授权体系 | 7.5/10 | 128 权限码 + RBAC + 行级数据权限 + RLS |
| 数据保护 | 7/10 | AES-256-GCM PII + 哈希链审计日志 + Zeroizing |
| API 安全 | 8/10 | 三层限速 + fail-close + SeaORM 参数化 + sanitize_identifier |
### 3.3 医疗合规差距
| 合规领域 | 状态 | 关键差距 |
|----------|------|----------|
| HIPAA 访问控制 | PASS | RBAC + 多租户 + Argon2 |
| HIPAA 传输加密 | WARN | 代码无 TLS需反向代理层文档化 |
| HIPAA 紧急访问 | MISSING | 无 break-glass 机制 |
| GDPR 被遗忘权 | MISSING | 软删除≠匿名化,需 GDPR 删除端点 |
| GDPR 数据可携带 | MISSING | 无数据导出端点 |
| 等保三级通信保密 | WARN | 需 TLS 部署证明 |
| 等保三级个人信息保护 | PARTIAL | 需同意管理 + 数据保留策略 |
### 3.4 积极发现
- 生产环境启动检查JWT/CORS/KEK 全部 exit(1))是业界最佳实践
- 哈希链审计日志在医疗 SaaS 中极为罕见
- 多层限速 + fail-close 体现安全工程成熟度
- Argon2 + Zeroizing + AES-256-GCM 密码学最佳实践组合
---
## 4. 维度三:测试 (5.5/10)
### 4.1 后端测试密度
| Crate | 测试函数 | 测试/文件 | Service 覆盖率 |
|-------|---------|-----------|---------------|
| erp-health | 203 | 0.95 | 15.8% (9/57) |
| erp-ai | 141 | 2.27 | 61.1% (11/18) |
| erp-config | 78 | 3.25 | 80% (4/5) |
| erp-core | 77 | 3.21 | N/A |
| erp-message | 77 | 4.28 | 75% (3/4) |
| erp-plugin | 78 | 3.25 | N/A |
| erp-workflow | 63 | 2.42 | **0%** (0/5) |
| erp-auth | 41 | 1.08 | 25% (3/12) |
| **合计** | **943** | **1.45** | -- |
**关键风险:** erp-health 是最关键模块215 文件),但 service 层仅 15.8% 有测试。erp-workflow 完全没有 service 层测试。13/31 handler 无集成测试。
### 4.2 前端测试现状
| 平台 | 单元测试 | E2E | 最大风险 |
|------|---------|-----|---------|
| Web | 62 文件 / ~693 断言 | 13 spec | 页面覆盖 21% |
| 小程序 | **0 文件** | 4 spec | **全部逻辑层零测试** |
**小程序零单元测试是最严重的质量盲区。** 42 个 service 文件、5 个 store、7 个 utils 全部无测试保护。API 契约同步完全依赖手动发现。
### 4.3 测试补全策略
**Phase A — 小程序基础层2-3天**
- utils/ 全覆盖 (~35 测试)
- services/request.ts 核心逻辑 (~20 测试)
- stores/ 全覆盖 (~40 测试)
**Phase B — 小程序 Service 层3-5天**
- health/auth/consultation services (~95 测试)
**Phase C — 后端安全关键路径1周**
- erp-auth service 层: 25% → 80% (~45 测试)
- erp-workflow service 层: 0% → 60% (~30 测试)
- 告警 handler 集成测试: 0 → 覆盖 (~20 测试)
### 4.4 质量门禁建议
| 套件 | 耗时 | 频率 | 包含 |
|------|------|------|------|
| 快速反馈 | ~3min | 每次 commit | unit tests + type check |
| 标准验证 | ~10min | 每个 PR | + integration tests + clippy + lint |
| 完整回归 | ~30min | main merge | + E2E + coverage + security |
| 性能基准 | ~15min | 版本发布前 | benchmarks + load tests |
### 4.5 覆盖率目标
| 层级 | 当前 | 3个月 | 6个月 |
|------|------|-------|-------|
| 后端 service 层 | ~30% | 60% | 80% |
| 后端 handler 集成测试 | 58% (18/31) | 80% | 100% |
| 小程序 service+store | 0% | 60% | 80% |
| Web 页面组件 | 21% | 40% | 60% |
| E2E 覆盖 | 5 条核心链路 | 10 条 | 15 条 |
---
## 5. 维度四:前端/UX (7.2/10)
### 5.1 前端架构评分
| 子维度 | Web | 小程序 | 评价 |
|--------|-----|--------|------|
| 代码组织 | 8.0/10 | 7.0/10 | 目录结构清晰,分层合理 |
| 状态管理 | 优秀 | 良好 | Zustand 5Web 6 store / MP 5 store |
| Design Token | 8.5/10 | 8.5/10 | 11 级字号 + 非线性关怀模式放大 |
| 请求层抽象 | 优秀 | 优秀 | JWT 主动刷新 / 并发限制 MAX_CONCURRENT=8 |
| 组件化 | 7.0/10 | 7.0/10 | Web 18 + MP 21 组件,仍有提升空间 |
| 测试覆盖 | 7.0/10 | **0/10** | MP 零单元测试 |
### 5.2 Design Token 亮点
Token 三层架构是项目做得最好的部分之一:
```
tokens.scss (定义 11 级字号 + 12 结构 token)
→ variables.scss (语义色 var(--tk-pri))
→ 页面 SCSS (75 页面全量接入 var(--tk-*))
```
- 非线性关怀模式放大:标题 x1.15 / 正文 x1.35 / 辅助 x1.55
- 医生端靛蓝色系通过 `.doctor-mode` CSS 变量级联覆盖
- Web 端 4 套主题通过 Ant Design ConfigProvider 动态切换
### 5.3 小程序核心亮点
- `request.ts`:并发限制(8) + inflight 去重 + 响应缓存(TTL+patientId 隔离) + Token 刷新去重
- 统一组件库PageShell/ContentCard/StatusTag/ListItem/VitalCard 等 17 UI + 4 pattern 组件
- 分包策略:主包 12 页面 + 7 分包按业务域划分
- `safeNavigateTo` 栈深度保护解决微信 10 层限制
### 5.4 前端待改进项
| 问题 | 优先级 | 工作量 | 方案 |
|------|--------|--------|------|
| OpenAPI spec 自动生成 TS 类型 | P0 | 3天 | 引入 openapi-typescript根治 35 次接口不同步 fix |
| MP 核心层单元测试 | P0 | 5-8天 | request.ts + stores + 核心 services |
| Web 大文件拆分(>400行 x15) | P1 | 5天 | 提取共享表单/列表模式 |
| MP service 层 doctor/ 重复逻辑 | P1 | 2天 | 提取 services/shared/ 共享接口 |
| Storybook 组件文档 | P1 | 3天 | MP 17 组件逐个建档 |
---
## 6. 维度五DevOps (3.8/10)
### 6.1 生产就绪度评分
| 子维度 | 评分 | 关键差距 |
|--------|------|----------|
| 部署方案 | 5/10 | Docker 完善,但无 HTTPS/LB/多副本 |
| 高可用性 | 2/10 | 单容器,无水平扩展,文件上传存本地磁盘 |
| 灾难恢复 | 3/10 | pg_dump 有,但无恢复测试、无异地备份 |
| 监控告警 | 3/10 | Prometheus exporter 已实现(端口 9090),但未接入采集端 |
| CI/CD | 4/10 | 基础 CI 存在,无 CD/安全扫描/E2E |
| 密钥管理 | 4/10 | 环境变量注入,无 Vault/KMS |
### 6.2 紧急修复路线图
**Phase 0 — 安全修复1-2天**
- Redis 连接启用 TLS
- 数据库连接 SSL mode
- 固定 Docker 基础镜像版本
- 备份推送到异地存储(S3/OSS)
**Phase 1 — 最小可观测性3-5天**
- Docker Compose 添加 Prometheus + Grafana代码已有 exporter
- 基础仪表盘HTTP QPS/延迟/错误率 + DB/Redis 健康)
- 基础告警规则(服务宕机、错误率 >5%
- 接入告警通道(企业微信/钉钉 Webhook
**Phase 2 — CI/CD 完善3-5天**
- Docker 镜像构建 + 推送到 Registry
- 安全扫描cargo audit + npm audit + Trivy
- 部署脚本pull + migrate + health check + switch
**Phase 3 — 生产加固5-7天**
- Nginx/Caddy 反向代理 + HTTPSLet's Encrypt
- 上传文件存储迁移到对象存储(解锁多副本前提)
- 日志聚合Loki+ 审计日志持久化
- 密钥管理迁移到 Vault/云 KMS
### 6.3 医疗 SaaS 合规硬性要求
| 要求 | 当前状态 | 优先级 |
|------|---------|--------|
| 数据传输加密(HTTPS) | 无 | P0 |
| 审计日志持久化(6年+) | 无 | P0 |
| 数据备份恢复测试 | 未验证 | P0 |
| 安全漏洞扫描 | 无 | P1 |
| 密钥管理服务 | .env 文件 | P1 |
| 灾难恢复计划 | 无 | P1 |
---
## 7. 维度六:产品 (8.0/10)
### 7.1 功能完整度评估
| 梯队 | 模块 | 后端 | 管理后台 | 小程序 | 综合评分 |
|------|------|------|---------|--------|---------|
| 第一梯队(>85%) | 患者管理 | 完整 | PatientList+Detail | 建档/查看 | 95% |
| | 健康数据 | 完整 | 健康记录+化验 Tab | 体征/趋势/监测 | 90% |
| | 预约排班 | 完整 | AppointmentList | 创建/详情 | 90% |
| | 咨询管理 | 完整 | ConsultationList | 列表/聊天 | 90% |
| | 告警系统 | 完整 | AlertDashboard | 列表/详情 | 90% |
| | 内容管理 | 完整 | ArticleEditor+Banner | 文章/轮播图 | 88% |
| | 积分商城 | 完整 | PointsRule/Product | 商城/兑换 | 85% |
| 第二梯队(60-84%) | 随访管理 | 完整 | 三页面齐全 | 工作流联动弱 | 80% |
| | AI 分析 | 9实体+4Provider | 页面存在但缺触发入口 | AI 报告列表 | 70% |
| | 设备采集 | 完整 | RealtimeMonitor | BLE 同步 | 70% |
### 7.2 AI 能力"最后一公里"问题
| AI 能力 | 后端 | 前端入口 | 可触达率 |
|---------|------|---------|---------|
| 化验单解读 | SSE 端点完整 | 缺触发按钮 | ~40% |
| 趋势分析 | SSE 端点完整 | 缺触发入口 | ~30% |
| 报告摘要 | SSE 端点完整 | 缺入口 | ~20% |
| AI 客服聊天 | 完整 | 小华助手页面 | ~80% |
**核心判断:** AI 管理能力Prompt 管理 + 用量统计)已完整,但核心消费场景缺少 UI 入口。这是"有了发动机但没有方向盘"的状态。
### 7.3 差异化竞争力
1. **AI + 医疗数据深度整合** — 化验解读/趋势分析/报告摘要Prompt 可配置
2. **Rust 事件驱动架构** — 高并发稳定、模块可独立部署、数据不丢失
3. **多租户 SaaS + FHIR 开放平台** — 零部署、数据隔离、与 HIS/LIS 互操作
### 7.4 SaaS 定价建议
| 层级 | 目标 | 核心功能 | 定价锚点 |
|------|------|---------|---------|
| 免费层 | 引流体验 | 患者管理+基础排班+咨询+3篇文章/月 | 0 |
| 专业层 | 核心营收 | AI 分析+护理计划+告警+设备+透析+FHIR | 按年检量阶梯定价 |
| 企业层 | 高价值增值 | 多租户集团+FHIR 读写+AI 自定义+专属部署 | 定制报价 |
---
## 8. TOP 10 紧急行动清单
| # | 行动项 | 维度 | 优先级 | 工作量 | 预期效果 |
|---|--------|------|--------|--------|----------|
| 1 | 文件上传 MIME 白名单 | 安全 | P0 | 2-3h | 消除存储型 XSS |
| 2 | OAuth JWT 密钥路径统一 | 安全 | P0 | 1-2h | 消除空密钥绕过 |
| 3 | CI 添加安全扫描 | DevOps | P0 | 0.5天 | 持续安全防线 |
| 4 | AI 分析前端触发入口 | 产品 | P0 | 3-5天 | AI 可触达率 30%→80% |
| 5 | JWT RwLock→DashMap | 安全 | P1 | 1-2h | 消除认证热路径 DoS |
| 6 | version.unwrap() 消除 | 架构 | P1 | 0.5天 | 消除 8+ 处潜在 panic |
| 7 | MP 核心层单元测试 | 测试 | P1 | 5-8天 | 消除最大质量盲区 |
| 8 | 最小可观测性(Prometheus+Grafana) | DevOps | P1 | 3-5天 | 代码已有 exporter |
| 9 | main.rs 拆分重构 | 架构 | P1 | 2天 | 消除 65 次 clone |
| 10 | OpenAPI 自动生成 TS 类型 | 前端 | P1 | 3天 | 根治 35 次接口不同步 |
**P0 总工作量:~4-5 天**#1-#4
**P1 总工作量:~15-20 天**#5-#10
---
## 9. Wiki 关键数字校正表
| 指标 | Wiki 旧值 | 实际值 | 变化 |
|------|-----------|--------|------|
| Rust 源文件 | 649 | **652** | +3 |
| 数据库迁移 | 146 | **147** (m20260516) | +1 |
| erp-health 文件 | 189 | **214** | +25 |
| erp-health Entity | 57 | **59** (handler 32/service 41) | +2 |
| erp-ai 文件 | 45 | **62** | +17 |
| 权限码 | 132 | **128** (health 52 + 其他 76) | -4 |
| Web TS/TSX | 332 | **307** | -25 |
| Web 活跃路由 | 29 | **36** (冻结 5) | +7 |
| Web API 模块 | 52 | **42** | -10 |
| 小程序 TS/TSX | 163 | **161** | -2 |
| 小程序页面 | 66 | **60** | -6 |
| 前端测试断言 | 472+39 | **~757** | 重新定义口径 |
| 事件类型 | 31(health) | **31**(health)/**51**(全系统) | 补全系统口径 |
| utoipa 注解文件 | 88 | **89** | +1 |
| Rust 代码总行数 | 未记录 | **136,908** | 新增 |
| Entity 总数(全系统) | 未记录 | **109** | 新增 |
| Service 总数(全系统) | 未记录 | **107** | 新增 |

View File

@@ -4,37 +4,37 @@
## 关键数字
> 最后更新: 2026-05-16 | 数据截止: feat/media-library-banner 分支(UI 优化 Phase 0-2 完成
> 最后更新: 2026-05-17 | 数据截止: feat/media-library-banner 分支(六维度全面均衡分析 2026-05-17
| 指标 | 值 |
|------|-----|
| Rust crate | 17 个erp-core + 5 基础业务 + erp-health + erp-ai + erp-dialysis + erp-plugin + 7 插件/原型) |
| Rust 源文件 | **649** |
| Rust 源文件 | **652**136,908 行) |
| 数据库表 | 30 基础表 + 49 健康业务表 + 9 AI 表 + 3 媒体库/轮播图表 |
| 数据库迁移 | **146**(最新 m20260515_000146 |
| 数据库迁移 | **147**(最新 m20260516_000147 |
| 后端路由 | 260+ 个11 公开 + 14 FHIR + 2 网关 + ~240 受保护) |
| 核心模块 | 5 基础 (auth/config/workflow/message/plugin) + 3 业务 (health + ai + dialysis) |
| erp-health 实体 | **57** Entity31 handler / 36 service / 21 DTO189 文件) |
| erp-ai 实体 | 9 个 Entity45 文件4 AI Provider |
| Web 前端 | 332 个 TS/TSX 文件29 活跃路由 + 6 冻结路由52 API 模块) |
| 微信小程序 | Taro 4.2 + React 18163 个 TS/TSX 文件 / 66 页面 / 4 TabBar + 医生端分包,统一组件库 + CSS 变量主题75 页面 SCSS `$pri``var(--tk-pri)`,医生端 `.doctor-mode` 靛蓝覆盖,登录页改为账号密码+微信登录 |
| 前端单元测试 | 88 个测试文件472 Web 断言 + 39 MP 断言)+ 13 E2E spec124 断言 |
| 端测试 | **943 个函数**762 同步 + 181 异步79 个文件含内联测试 |
| 事件系统 | 31 事件类型health 模块内)/ 23 幂等消费者 / Outbox + LISTEN/NOTIFY |
| 权限码 | **132 个**health 59 + auth 17 + ai 9 + workflow 8 + dialysis 6 + plugin 2 + config 13 + message 5 + Copilot 5 |
| 生产 unwrap | **24 处**从 514 降至 24全为安全解包 |
| utoipa 注解 | 88 个文件含注解 |
| erp-health 实体 | **59** Entity32 handler / 41 service / 22 DTO214 文件) |
| erp-ai 实体 | 9 个 Entity62 文件4 AI Provider |
| 全系统 Entity | **109 个** / Handler **47 个** / Service **107 个** / DTO **29 个** |
| Web 前端 | 307 个 TS/TSX 文件36 活跃路由 + 5 冻结路由42 API 模块161 页面 |
| 微信小程序 | Taro 4.2 + React 18161 个 TS/TSX 文件 / 60 页面 / 4 TabBar + 医生端分包,统一组件库 + CSS 变量主题75 页面 SCSS `$pri``var(--tk-pri)`,医生端 `.doctor-mode` 靛蓝覆盖,登录页改为账号密码+微信登录 |
| 端测试 | Web 62 单元测试文件(~693 断言) + 17 E2E spec(13 Web + 4 MP~64 断言);小程序 0 单元测试 |
| 后端测试 | **943 个函数**762 同步 + 181 异步103 个文件含测试 |
| 事件系统 | 31 事件类型health/ 51 全系统 / 82 发布点 / 12 消费者模块 / Outbox + LISTEN/NOTIFY |
| 权限码 | **128 个**health 52 + auth/ai/workflow/dialysis/plugin/config/message/copilot 76 |
| utoipa 注解 | **89 个**文件含注解 |
| Clippy | **全 workspace 0 警告**2026-05-07 清零) |
| 依赖版本 | 全部最新主版本线Rust edition 2024 |
| API 文档 | `http://localhost:3000/api/docs/openapi.json` |
| Git 提交 | **800+ 次** |
| 系统分析评分 | **6.9/10 (B)**六维度全面均衡分析2026-05-11 |
| Git 提交 | **842+ 次** |
| 系统分析评分 | **6.8/10 (B)**六维度全面均衡分析2026-05-17架构 8.5 / 安全 7.5 / 测试 5.5 / 前端 7.2 / DevOps 3.8 / 产品 8.0 |
| 审计状态 | V1: 83% → V2: 85%P0 安全修复已完成V2 CRITICAL 全清零 |
| 角色测试 | R01-R05 全角色验证完成86.5% 通过率5 个 BUG 已修复;小程序 MP 多角色 96.2% 通过率 |
| Design Token | 11 级字号 + 12 结构 token75 SCSS 页面全量接入 `var(--tk-pri)``.doctor-mode` / `.elder-mode` CSS 变量级联覆盖 |
| 长者模式 | 58/58 页面 100% 覆盖 |
| UI 合规审计 | T40: 60 页面全覆盖PASS 24 / PASS_WITH_ISSUES 36 / NEEDS_WORK 0HIGH×2 + MEDIUM×6 + LOW×67 全部修复,评分 95/100 |
| 项目阶段 | **UI 优化实施**CSS 变量主题 Phase 0-2 完成,按原型逐页验证中 |
| 项目阶段 | **系统分析 + 六维度均衡优化**(综合 6.8/10DevOps 3.8 是最明显短板 |
## 症状导航