Files
hms/docs/discussions/2026-05-04-phase2-handoff.md
iven df1d85bfde docs: T40 UI 审计报告 + wiki 更新 + Docker 配置
- T40 UI 审计计划和结果文档(docs/qa/)
- wiki 更新:miniprogram 设计系统合规审计记录 + index 关键数字更新
- 审计 V2 完整报告(docs/audits/v2/)
- 讨论记录文档(docs/discussions/)
- 设计规格和实施计划(docs/superpowers/)
- 角色测试计划和结果(docs/qa/role-test-*)
- Docker 生产部署配置
2026-05-13 23:29:42 +08:00

10 KiB
Raw Blame History

Phase 2 交接文档 — 患者体验2026 年 8-9 月)

日期: 2026-05-04 | 类型: 交接文档 | Phase: Phase 2

背景

Phase 0基础加固和 Phase 1关怀引擎 MVP已全部完成。Phase 2 的目标是将患者和家庭体验从"健康数据查看器"转变为"被关怀的体验"。

Phase 0 + Phase 1 完成状态

Phase 0全部完成

  • AI 自动分析管道修复(建议生成 + 事件发布)
  • ai.analysis.requested 事件消费连接
  • 建议状态生命周期
  • 4 个千行 service 文件拆分
  • 事件测试补全
  • 核心健康管理页面测试
  • 护士工作台 Phase 1

Phase 1全部完成8/8 项)

# 功能 提交
1 每日关怀工作台Plan B 工作流驱动) 已完成
2 护理计划Care Plan实体和服务层 已完成
3 透析专用风险评分KDIGO 规则) 已完成
4 班次管理与护士分配 7b17f94
5 BLE 网关后端接入端点API Key + 批量上传) 7e57565
6 "关怀已送达"通知管道 已完成
7 透析会话工作流BPMN 集成) 0a9272b
8 家庭成员健康代理(同意 + 查看) 95fa09c

Phase 2 任务清单

P2-1: 老年患者小程序重设计(年龄适配 UI— XL

目标: 65+ 患者可无障碍使用大字体、高对比度、≤3 步操作)

当前状态: 小程序 182 源文件 / 40+ 页面,使用 Taro 4.2 + React 18。无年龄适配设计。

实施方向:

  1. 在小程序样式层增加 --elderly-* CSS 变量/token
    • 基础字号 18-22px标准 14px
    • 触摸目标 ≥ 48px
    • 对比度 7:1WCAG AAA
    • 导航最多 4-5 项
  2. 新建 pages/elderly/ 区块,着陆页设计:
    • 温暖问候 + 护士照片名字
    • "您的护理团队 X 小时前查看了您的健康数据,一切稳定"
    • 一个大号"呼叫护士"按钮
    • 用药提醒(大复选框)
  3. 简化导航:从当前 TabBar 5 项减少到 3-4 项
  4. 后端已有 health.family-proxy API 支持家庭成员查看健康摘要

关键文件:

  • apps/miniprogram/src/app.config.ts — 路由和 TabBar 配置
  • apps/miniprogram/src/styles/ — 全局样式
  • apps/miniprogram/src/pages/ — 页面目录
  • 后端 API: GET /health/family/patients/{id}/health-summary

验收标准: 65+ 患者可在 3 步内完成核心操作(查看今日关怀 / 确认用药 / 呼叫护士)


P2-2: 透析专属健康教育内容管道 — M

目标: 基于患者当前风险指标智能推送肾病教育内容

当前状态: 已有完整 CMSerp-health 文章模块article/article_category/article_tag + 审核工作流 + 阅读统计)

实施方向:

  1. 利用现有 CMS 策展透析患者专属内容库:
    • "认识你的透析指标"
    • "透析间期如何控制水分"
    • "高磷食物避坑指南"
    • "什么时候该联系护理团队"
  2. 基于患者 KDIGO 风险评分自动推送相关文章
    • 血磷高风险 → 推送高磷食物指南
    • 体重增长过快 → 推送水分控制指南
    • Kt/V 不达标 → 推送透析充分性科普
  3. 后端新增"智能推送"服务:读取患者风险评分 → 匹配文章标签 → 创建推送记录

关键文件:

  • crates/erp-health/src/service/article_service.rs — 已有文章 CRUD
  • crates/erp-health/src/entity/article.rs — 文章实体
  • crates/erp-health/src/entity/article_tag.rs — 标签实体
  • Phase 1 新增的 KDIGO 评分服务 — 风险评分来源
  • crates/erp-health/src/service/ai_action_dispatcher.rs — 可扩展推送逻辑

验收标准: 高风险透析患者自动收到与当前风险相关的教育文章


P2-3: BLE 网关试点部署10 位患者) — L

目标: 10 位透析患者居家使用 BLE 网关,体征数据自动流入系统

当前状态: 后端 BLE 网关接入已完成Phase 1 #5

  • ble_gateways 表 + gateway_patient_bindings
  • API Key SHA-256 认证中间件
  • 批量上传端点 POST /health/gateway/upload(多患者批量)
  • 心跳端点 POST /health/gateway/heartbeat
  • 复用 device_reading_service::batch_create_readings 管道
  • 迁移 m20260505_000113_create_ble_gateways.rs

剩余工作:

  1. 采购/选型商用 BLE 网关(如 Teltonika、Quectel
  2. 网关固件配置:连接 BLE 设备(血压计/血糖仪/体重秤)→ HTTPS POST 到 HMS
  3. 10 位患者试点部署 + 数据验证
  4. 前端管理页面(网关状态监控,已有后端 CRUD

关键文件:

  • crates/erp-health/src/service/ble_gateway_service.rs — 网关管理 + 上传处理
  • crates/erp-health/src/gateway_auth.rs — API Key 认证
  • crates/erp-health/src/dto/ble_gateway_dto.rs — GatewayUploadReq多患者批量格式
  • crates/erp-server/src/main.rs — 网关路由注册gateway_auth 中间件层)

验收标准: 10 位患者居家体征数据每日自动上传,网关在线率 > 95%


P2-4: 多 Provider AI + 成本感知路由 — M

目标: 简单分析走本地规则,复杂分析走 LLMProvider 不可用时自动回退

当前状态: 仅 Claude 单 ProviderLocalRulesEngine 已存在但未集成到路由层

实施方向:

  1. 扩展 AiConfig 使用当前死字段model/max_tokens/temperature/cache_ttl/rate_limit
  2. 实现路由策略:
    • 阈值检查 → 本地规则引擎(零成本)
    • 趋势解读/化验单分析 → Claude高成本
    • Provider 不可用 → 回退本地规则 + 标记"降级分析"
  3. 添加 token 用量追踪(每次分析记录 input_tokens/output_tokens/cost_usd
  4. 缓存生效:find_cached 已存在但从未被调用,接入分析管道

关键文件:

  • crates/erp-ai/src/service/auto_analysis.rs — 自动分析批处理
  • crates/erp-ai/src/service/local_rules_engine.rs — 本地规则引擎
  • crates/erp-ai/src/entity/ai_config.rs — AI 配置实体(有死字段待激活)
  • crates/erp-ai/src/entity/ai_suggestion.rs — 建议实体Phase 0 新增)
  • crates/erp-ai/src/module.rs — 模块注册

验收标准: Provider 不可用时系统自动降级到本地规则,用户无感知中断


P2-5: 关怀结果测量(干预前后对比) — M

目标: 干预后 7/14/30 天体征对比可量化

当前状态: Phase 1 已有 care_plan_outcomesmetric, baseline, target, current, measured_at

实施方向:

  1. 扩展 care_plan_outcomes 服务:自动从 vital_signs / device_readings 聚合测量值
  2. 实现干预前后对比 API
    • 输入care_plan_item_id + 干预日期
    • 输出baseline干预前 7 天均值vs current干预后 7/14/30 天均值)
  3. 前端趋势图展示干预效果
  4. 接入事件流:care.action.performed 事件触发测量开始

关键文件:

  • crates/erp-health/src/entity/care_plan_outcome.rs — 预后测量实体
  • crates/erp-health/src/service/care_plan_service.rs — 护理计划服务
  • crates/erp-health/src/service/vital_signs_daily_service.rs — 日聚合服务
  • crates/erp-health/src/service/trend_service.rs — 趋势分析服务

验收标准: 护士可在护理计划详情中查看干预前后的体征对比图表


P2-6: 读副本 + 分区用于分析查询 — M

目标: PostgreSQL 按月分区 device_readings,添加读副本连接用于分析查询

实施方向:

  1. device_readings 表按月分区(当前 ~100万行/年BLE 部署后快速增长)
  2. SeaORM 配置读副本连接(DatabaseConnection 支持多连接)
  3. 分析查询(趋势/统计/FHIR路由到读副本
  4. 超过 2 年的读数归档冷存储

关键文件:

  • crates/erp-server/migration/src/ — 新增分区迁移
  • crates/erp-health/src/state.rs — HealthState 可扩展为双连接
  • crates/erp-health/src/service/stats_service.rs — 统计查询
  • crates/erp-health/src/service/trend_service.rs — 趋势查询

P2-7: 机构运营仪表盘 — L

目标: 管理层可查看关怀质量指标

当前状态: 已有基础统计端点(/health/admin/statistics/dashboardpersonal-statssystem-health

实施方向:

  1. 扩展统计 API
    • 关怀动作完成率(护士执行 / AI 建议)
    • 患者留存率(月度)
    • AI 建议准确率(护士采纳 / AI 总建议)
    • 平均关怀响应时间AI 发现风险 → 护士执行关怀)
    • 北极星指标:每位患者每周收到的关怀动作数
  2. 前端仪表盘页面Ant Design Charts
  3. 数据来源action_inbox + ai_suggestion + care_plan + 告警记录

关键文件:

  • crates/erp-health/src/service/stats_service.rs — 已有统计服务
  • crates/erp-health/src/handler/stats_handler.rs — 已有统计 Handler
  • apps/web/src/pages/ — 前端页面

实施建议

优先顺序

  1. P2-4 多 Provider AIM— 降级能力是后续所有 AI 相关工作的基础
  2. P2-5 关怀结果测量M— 需要积累数据,越早启动越好
  3. P2-2 透析教育内容M— 后端改动小,可快速交付
  4. P2-3 BLE 网关试点L— 需要硬件采购,后端已就绪
  5. P2-1 老年患者 UIXL— 工作量最大,但依赖后端 API 已完成
  6. P2-6 读副本+分区M— 数据量增长后才有必要
  7. P2-7 机构仪表盘L— 需要前面各项数据积累

技术注意事项

  1. 星型依赖架构不变 — 所有 crate 仅依赖 erp-core跨模块走 EventBus
  2. 迁移编号从 m20260505_000116 开始 — 当前最后迁移是 000115_family_member_health_proxy
  3. Handler 模式State(state): State<HealthState>, Extension(ctx): Extension<TenantContext>, require_permission(&ctx, "health.xxx.list")?, 返回 Result<Json<ApiResponse<T>>, AppError>
  4. ctx.user_id 是 Uuid 不是 Option — 直接使用,不需要 ok_or_else
  5. 前端小程序在 apps/miniprogram/ — Taro 4.2 + React 18
  6. 前端 Web 在 apps/web/ — React 19 + Ant Design + Vite
  7. 编译命令: cargo check(编译检查)/ cargo test -p erp-health(单 crate 测试)/ cargo test --workspace(全量测试)
  8. 数据库连接信息: 见 wiki/infrastructure.md §2

Phase 2 验收标准(总体)

指标 目标
10 位患者 BLE 网关试点 居家体征数据自动流入系统
老年患者 UI 65+ 患者可无障碍使用大字体、高对比度、≤3 步操作)
关怀结果测量 干预后 7/14/30 天体征对比可量化
机构仪表盘 管理层可查看关怀运营指标