# Tasks — svc-org-c3-record ## 1. 数据层 - [ ] 1.1 `schema.prisma` 新增 `Record`/`RecordItem`/`RecordPhoto`/`RecordAbnormal`/`Settlement`/`Report` 模型(表名 ho_record/ho_record_item/ho_record_photo/ho_record_abnormal/settlement/report)。 - [ ] 1.2 `prisma.service.ts`:`Record` 加入 SOFT_DELETE;子表(item/photo/abnormal)不入。 - [ ] 1.3 迁移 `c3_record`(utf8mb4_general_ci,用 migrate diff + deploy)+ `prisma generate`。 ## 2. 权限码 + 错误码 + APIS - [ ] 2.1 `permissions.ts` 新增 `record.*`/`abnormal.*`(checkin/itemSave/photoUpload/checkout/offlineSync/detail/list/prepaidList/prepaidCarryover/report/list)。 - [ ] 2.2 `error-codes.ts` 补域 45:RECORD_NOT_FOUND、RECORD_ORDER_INVALID、RECORD_PHOTO_REQUIRED(3001)、RECORD_STATUS_INVALID、ABNORMAL_NOT_FOUND 等。 - [ ] 2.3 `tenant-template.ts` APIS 登记 record/abnormal 接口资源。 ## 3. record 模块(履约留痕 + 垫付结转) - [ ] 3.1 `src/record/` 模块:checkin(L3 + 服务器取时 + 3002)、item/save(exec_result + L4)、photo/upload(≤500KB)、checkout(3001 必拍 + 服务器时长 + is_prepaid)、offline/sync(client_md5 去重)、detail、list。 - [ ] 3.2 垫付台账与结转:prepaid-list、prepaid/carryover(复制 + source_prepaid_of + 不改原始时间戳)。 - [ ] 3.3 TDD:签到 L3/取时/定位、签退 3001/垫付、exec_result 枚举、结转不改时间戳、离线去重;`pnpm test` + `tsc --noEmit`。 ## 4. abnormal 模块(异常 + 扑空) - [ ] 4.1 `src/abnormal/` 模块:report(abnormal_type 必选)、list、扑空(工单转 not_met + record_abnormal,不产生 record)。 - [ ] 4.2 TDD:分类必选其余可选、扑空转 not_met + 留证据、列表筛选;`pnpm test` + `tsc --noEmit`。 ## 5. 前端 - [ ] 5.1 `src/api/record.ts`、`src/api/abnormal.ts`。 - [ ] 5.2 工单留痕页(`ltc/record`):列表 + 详情(时间/项目/照片/异常/定位/垫付标记)。 - [ ] 5.3 异常列表页(`ltc/qc` 或独立):分类/状态/关联老人。 - [ ] 5.4 服务对象页:垫付台账 + 结转入口。 - [ ] 5.5 `pnpm type-check` 通过。 ## 6. 验证 - [ ] 6.1 冒烟:签到 → 项目 → 照片 → 签退(3001 必拍)→ 详情;waiting_period 老人垫付 is_prepaid=1。 - [ ] 6.2 扑空:工单转 not_met + 到访证据,不产生 record。 - [ ] 6.3 结转:勾选垫付记录生成正式记录,原始时间戳不变。 - [ ] 6.4 离线补传 client_md5 去重幂等;审计落库。