From 9a91fc659709d1ee42bb15e1342e015d363856cc Mon Sep 17 00:00:00 2001 From: liuyun Date: Thu, 15 Oct 2026 01:10:44 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9C=8D=E5=8A=A1=E6=9C=BA=E6=9E=84?= =?UTF-8?q?=E7=AB=AF=20C3=20=E5=B1=A5=E7=BA=A6=E7=95=99=E7=97=95=E8=90=BD?= =?UTF-8?q?=E5=9C=B0=20+=20=E4=BF=AE=E6=AD=A3=20REST=20=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=20+=20=E6=9B=B4=E6=96=B0=E5=AD=90=E6=A8=A1=E5=9D=97=E6=8C=87?= =?UTF-8?q?=E9=92=88=E4=B8=8E=E9=81=97=E7=95=99=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- docs/tech-debt.md | 12 ++++++++++++ .../specs/shared/api-contract/spec.md | 4 ++-- sources/ec-admin | 2 +- sources/ec-nest | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/tech-debt.md b/docs/tech-debt.md index 144cd39..b0be84c 100644 --- a/docs/tech-debt.md +++ b/docs/tech-debt.md @@ -53,3 +53,15 @@ - [ ] **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 也请求(小浪费)。 diff --git a/openspec/changes/svc-org-c3-record/specs/shared/api-contract/spec.md b/openspec/changes/svc-org-c3-record/specs/shared/api-contract/spec.md index b29d2b8..c12d615 100644 --- a/openspec/changes/svc-org-c3-record/specs/shared/api-contract/spec.md +++ b/openspec/changes/svc-org-c3-record/specs/shared/api-contract/spec.md @@ -1,7 +1,7 @@ ## ADDED Requirements ### Requirement: 履约留痕接口 -`POST /record/checkin`、`POST /record/item/save`、`POST /record/photo/upload`、`POST /record/checkout`、`POST /record/offline/sync`、`GET /record/detail`、`GET /record/list`、`GET /record/prepaid-list`、`POST /record/prepaid/carryover` MUST 存在,遵循统一响应。 +`POST /record/checkin`、`POST /record/item/save`、`POST /record/photo/upload`、`POST /record/checkout`、`POST /record/offline/sync`、`GET /record/:id`、`GET /record`、`GET /record/prepaid-list`、`POST /record/prepaid/carryover` MUST 存在,遵循统一响应。 #### Scenario: 签退必拍未拍硬拒 - **WHEN** 必拍项未拍照且未走拒拍出路时签退 @@ -12,7 +12,7 @@ - **THEN** checkin_time 由服务端生成,客户端传入被忽略 ### Requirement: 异常接口 -`POST /abnormal/report`、`GET /abnormal/list` MUST 存在,遵循统一响应。 +`POST /abnormal`、`GET /abnormal` MUST 存在,遵循统一响应。 #### Scenario: 扑空 - **WHEN** 护理员登记未遇(扑空) diff --git a/sources/ec-admin b/sources/ec-admin index 59e0469..08a9182 160000 --- a/sources/ec-admin +++ b/sources/ec-admin @@ -1 +1 @@ -Subproject commit 59e04693cdc489c8c24ebc903f3959ff1b5d78cf +Subproject commit 08a9182352d65ddfaf712939784822b633574963 diff --git a/sources/ec-nest b/sources/ec-nest index 66da809..9f23235 160000 --- a/sources/ec-nest +++ b/sources/ec-nest @@ -1 +1 @@ -Subproject commit 66da809a2e5f4a0a69a95842d0c0e081fb66d14f +Subproject commit 9f232356e08d36eb1c2438059b51efb7726587b1