touyun-elderly-care/docs/tech-debt.md
liuyun 7e18b3661b docs: 服务机构端遗留项清单(tech-debt)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-14 21:47:51 +08:00

3.1 KiB
Raw Blame History

服务机构端 · 遗留项清单(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 未纳入身份证明文查看口径:elder detail 明文目前仅 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):data pick 已兜底、无完整性风险;全站 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 前端未提供上传(后端字段已留)。