7.6 KiB
7.6 KiB
服务机构端 · 遗留项清单(Tech Debt)
记录 C0 基础骨架 / C1 待遇档案的遗留项,供后续 change 处理。来源:各 change 的 SDD ledger(deferred minor / parked / pre-existing)。按优先级分组。
安全 / 合规(优先处理)
- id_card_no 存储层加密:staff + elder 的身份证目前明文存(代码留 TODO),需统一走一个 security change(AES 加密;掩码/查看留痕已做)。
- tenant_super_admin 未纳入身份证明文查看口径:
elderdetail 明文目前仅 admin/qc/super_admin,业务租户顶层管理员tenant_super_admin遗漏(低危,C1 遗留)。 - 身份核验 P-9(扫脸/人证核验):依赖医保 APP 能力,后置;本期兜底=拍照留痕 + 实名账号 + 家属可选确认。
- 评估结论副本孤儿文件:建档先上传副本、create 失败(如重复身份证)会在 MinIO 留孤儿对象,需失败清理。
数据完整性
- staff.entryDate/leaveDate 字符串直传 Prisma:潜在 50000(C0 遗留,与 C1 elder 日期 bug 同类),需按
toDateOnly方式统一修。 - Agency.deletedAt 未纳入 SOFT_DELETE:C0 无机构删除 flow,后续需要软删时补。
- catalog 白名单对未声明字段覆盖不全(parked Important):
datapick 已兜底、无完整性风险;全站forbidNonWhitelisted后续再评估。 - changeStatus 写 statusChangeDate 用
new Date()未走toDateOnly:理论上 UTC 回退一天,当前无前端展示、零实际影响。
契约 / 文档
- 统一响应
hint字段:api-contract 要求{code,message,data,hint},TransformInterceptor现仍{code,message,data},硬锁接口需补 hint。 - api-contract 错误码列表(1001–4001)未实现:实际用 5 位
[域2][序3](如 40001),spec 内部不一致,需先收敛 spec 再对齐。 - 登录页属地提示:frontend spec「属地提示」未实现(多租户登录前属地未知,需先厘清语义)。
- 前端等级筛选未暴露:后端
ListElderQuery.level已实现,前端搜索未用。
seed / 数据
- 全量 L1 36 项 / 昆明 L2 45 项 / L3 映射未 seed:C0 只落样例,全量数据延后到 C3/C4 或运营导入(异常分类/拍照分档字典已复用脚手架并 seed)。
测试 / 健壮性(次要)
- error-codes 头注释 legend 缺域 40–43(cosmetic)。
- StorageService 默认凭据回退、useSSL 硬编码、size 断言过松。
- 身份证格式错误用通用 400(无
ELDER_ID_CARD_INVALID专用码)。 - staff
groupLeaderId未校验组长存在、listStaff 过滤字段自行推断、UpdateStaffDto.userId不支持 null 解绑。 - catalog
loc_code缺失未校验、newNational 返全量、config 空更新。 - agency PATCH 空 body、NOT_FOUND 分支未测。
- 建档表单未收集
insurYears/hospStart/hospEnd/guardian*(spec 未要求)。 - 状态变更
evidenceFile前端未提供上传(后端字段已留)。
C2 派单工单
- [高] 迁移链损坏:
c1_elder在c0_rename_ltc之前对ltc_*/svc_*表 RENAME 索引,干净回放 shadow DB 报 Table doesn't exist →migrate dev不可用,只能migrate diff --from-schema-datasource+ 手工迁移目录 +migrate deploy。C3/C4 建表前必修。 - [高] 业务角色未授 elder/plan/order 权限:
BUSINESS_ROLES只授 agency/staff/svcOrg,director/admin/qc/leader/nurse 无法访问 elder/plan/order(仅 tenant_super_admin 可,权限靠 RBAC UI 手动配)。需统一梳理角色权限。 - 生成工单 UI 入口缺失:frontend spec 未要求,但端到端「计划→生成工单→派单」缺「生成工单」按钮(后端
POST /order/generate已实现、已测)。C2.5/C3 补。 - 待派工单在排班日视图不可见:日视图
ordersOf只按assigneeId挂卡,to_assign工单只出现在批量推荐下拉,网格无法一眼看出待派。 - L4 机构项目库未 seed + 无创建端点:
svc_org无 HTTP 创建端点、seed 未含 L4(冒烟用 Prisma 直插 18 行绕过)。补 seed + 端点(与 C0「全量 L1/L2/L3 未 seed」同批)。 - 属地项数 2002 前端未展示提示:后端已改提示级(
item_count_rule记2002:…),但 plan-form 未显示该警告。 - 当班无排班模型:staff 无 shift/duty 字段,派单「当班」用
employStatus代理(pass-through + TODO 指向未来排班模型)。 - toDateOnly 跨域引用:order.service 从 elder.service 引
toDateOnly,宜提公共 util。 - billable 硬编码 + price_snapshot/settle_period 留 C3(垫付/结转)。
- batchRecommend 复用 order.assign 权限码(无独立
order.recommend);C3 前在 shared/ 登记。 - plan_status ended 无入口(无结束计划端点);
plan.change不要求旧计划 active。 - 非事务多写:
plan.create(head+items)、elder-svc.put(delete+create)、change(create+update)中途失败留部分状态。 - toDateTime 硬编码 +08:00(业务假设北京时区,已注释;如多时区属地需配置化)。
C3 履约留痕
- [高] 缺事务:扑空
order.update+recordAbnormal.create、record itemSave 整表覆盖(先删后写)、prepaidCarryover多写——中途失败留部分状态。C4/settlement 前加$transaction。 - 扑空证据缺失用通用 40000(无
ABNORMAL_EVIDENCE_REQUIRED专用码,规则号 3003 写 message)。 - 照片/语音无 presign/下载端点:前端只显示 file_path/key、有无,无法预览;APP 上线前补。
- 留痕/异常列表不分页(
findMany全量);admin B3 规模可接受,APP 前补分页。 - record.detail 嵌套 abnormals 的 visitLat/visitLng 仍带 Decimal(顶层坐标已修,嵌套未序列化,minor 不一致)。
- 业务角色未授 record/abnormal 权限(同 C2 的 elder/plan/order,靠 super 或 RBAC UI 配置);新租户靠
sync:resources同步资源。 - offlineSync 接受客户端 checkinTime/checkoutTime(离线补传固有例外,仅 client_md5 去重兜底,防补录时间有缺口——可加 serviceDate 窗口约束)。
- prepaidCarryover 不限制 record_status=submitted(serving 垫付记录也能被结转);prepaidList 有 N+1 查询。
- 前端 pageSize 200 固定、serviceDate 文本输入、
loadPrepaid非 active 也请求(小浪费)。
C4 质控闸门
- [高] nurse 角色零 record.*/qc.correct 权限(护理员留痕录入 + 补正)——C2/C3/C4 共性问题:业务角色只有 agency/staff/svcOrg,elder/plan/order/record/abnormal/qc 权限均未授,靠 super 或 RBAC UI。APP 上线前必须统一梳理角色权限矩阵。
- batchPass 两阶段预检但未包
$transaction(并发下仍可能部分落库);定时任务 + 五类聚合有 N+1 查询;prepaidList 同。 - QC_NOTE_REQUIRED(46005) 死代码(DTO @IsNotEmpty 先拦,实际返回 40000);qc_note 纯空白串会漏过 DTO。
- 5 工作日不含节假日(只跳周末);cron raw 扫描未过滤
deletedAt(软删留痕也可能生成 qc);qc 表record_id无唯一约束(并发重入可能重复生成)。 - handleAbnormal 无状态机(closed→handling 可重开,仅枚举限制);前端批量放行只挡 correctionCount>0(其余靠后端 QC_BATCH_UNSAFE 兜底);goAbnormal 不清其他筛选(UX)。