docs,ci: P2 质量体系 — 技术债看板 + 冻结策略 + fix 率趋势

- 新增 fix-rate-trend.sh: 按周统计 fix 率趋势 + 类别分布
  当前: 22.8% (177/776), 目标 < 15%
- 新增 docs/tech-debt-board.md: 技术债看板
  含度量总览、高利息债务排序、已偿还债务、偿还优先级
- 新增 docs/discussions/2026-05-13-frozen-module-strategy.md:
  6 个冻结模块策略 + 14 天超时规则 + 解冻/移除操作流程
This commit is contained in:
iven
2026-05-13 17:19:07 +08:00
parent e9458a6bdf
commit 20d606d21c
3 changed files with 283 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
# 冻结模块策略
> 日期: 2026-05-13 | 参与者: iven, Claude
## 背景
HMS 有 6 个功能模块处于"冻结"状态 — 前端页面已开发但后端功能不完整或优先级调整导致暂停。冻结模块有双重保护:
1. **前端**: `routeConfig.ts``frozen: true` 标记 → `PrivateRoute` 返回 403
2. **后端**: `frozen_module_middleware` → API 直接返回 403
## 冻结模块清单
| 模块 | 路由 | 后端完成度 | 前端完成度 | 冻结日期 | 超时日期 |
|------|------|-----------|-----------|---------|---------|
| 护理计划 | /health/care-plans | Entity+Service+Handler 已有 | 列表+详情页 | 2026-05-05 | 2026-05-19 |
| 班次管理 | /health/shifts | Entity+Service+Handler 已有 | 列表+详情页 | 2026-05-05 | 2026-05-19 |
| 家庭代理 | /health/family-proxy | Entity+Service+Handler 已有 | 完整页面 | 2026-05-05 | 2026-05-19 |
| 药物管理 | /health/medications | 部分实现 | 完整页面 | 2026-05-05 | 2026-05-19 |
| 透析管理 | /health/dialysis | Entity+Service 已有 | 列表页 | 2026-05-05 | 2026-05-19 |
| 排班日历 | /health/schedules | 复用 appointment | 日历页 | 2026-05-05 | 2026-05-19 |
## 策略
### 超时规则
- 冻结超过 **14 天**自动触发决策评审
- 评审结果三选一:**(a) 解冻完成** / **(b) 延期冻结(设新截止日)** / **(c) 移除**
- 超时未决策的模块,默认延期 7 天并升级通知
### 决策框架
| 条件 | 建议 |
|------|------|
| 后端已有完整 CRUD + 测试 | **解冻**,补全 DoD 检查后上线 |
| 后端部分实现,有明确需求 | **延期**,排入下一迭代 |
| 无明确需求,冻结 > 30 天 | **移除**,清理前端页面和菜单 |
### 当前建议2026-05-19 评审)
1. **透析管理**: 解冻 — 后端 Entity+Service+Handler 齐全,是核心医疗功能
2. **班次管理**: 解冻 — 后端完整,医护排班是刚需
3. **护理计划**: 延期 — 需要与随访/班次功能协同设计
4. **家庭代理**: 延期 — 需要隐私合规评审
5. **药物管理**: 解冻 — 后端部分实现,补全即可
6. **排班日历**: 延期 — 依赖 appointment 模块的增强
## 操作流程
### 解冻操作
1.`routeConfig.ts` 移除 `frozen: true`
2.`frozen_module.rs``FROZEN_PREFIXES` 移除路径
3. 执行 Feature DoD 检查清单
4. 补全缺失的测试/注解/权限
5. 提交并验证
### 移除操作
1.`routeConfig.ts` 删除条目
2.`App.tsx` 删除路由和 lazy import
3. 从菜单 seed 迁移中标记 `visible = false`
4. 后端保留(不删除 handler/service仅前端不可见
5. 提交并验证