From ba993200c595b39f9238e550c6c0a341061e13cd Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sun, 16 Aug 2026 00:47:42 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20#5931=20=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E7=9F=A9=E9=98=B5Map=E8=B7=A8=E5=B1=82=E6=B8=85=E7=90=86(fleet?= =?UTF-8?q?Count=E4=B8=8B=E7=BA=BF)=20+=20#5935=20=E6=8C=89=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E6=B8=85=E6=94=B9=E6=9C=9F=E6=AE=8B=E7=95=99(?= =?UTF-8?q?=E6=96=B0=E7=AB=AF=E7=82=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Map跨层清理契约强类型化-修改接口-管理后台.md | 51 +++++++++++++++++++ ...车按日期清理改期残留-新增接口-管理后台.md | 51 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 changelogs-v2/2026-08/16_5931_看板矩阵Map跨层清理契约强类型化-修改接口-管理后台.md create mode 100644 changelogs-v2/2026-08/16_5935_排车按日期清理改期残留-新增接口-管理后台.md diff --git a/changelogs-v2/2026-08/16_5931_看板矩阵Map跨层清理契约强类型化-修改接口-管理后台.md b/changelogs-v2/2026-08/16_5931_看板矩阵Map跨层清理契约强类型化-修改接口-管理后台.md new file mode 100644 index 0000000..6431c92 --- /dev/null +++ b/changelogs-v2/2026-08/16_5931_看板矩阵Map跨层清理契约强类型化-修改接口-管理后台.md @@ -0,0 +1,51 @@ +--- +schema: "hl-changelog/v2" +ticket: "5931" +title: "看板/矩阵 Map 跨层清理 + 契约强类型化(fleetCount 下线)" +consumer: "admin" +author: "wx" +change_type: "修改接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "后端完成:PR #5984 已合并 dev-v3(617a83dcf)并部署 TEST(user-service + order-v3 + fleet 三服务按顺序发布 UP)。fleetCount 下线/强类型化零 wire 变化由 wire 级单测覆盖;跨服务 Feign unreads[] 字段逐字段一致,容错双向安全。" +updated_at: "2026-08-16" +base: "dev-v3" +generated: "2026-08-16T00:20:00+08:00" +--- + +# 看板/矩阵 Map 跨层清理 + 契约强类型化(#5931) + +## 背景 + +矩阵/看板若干出参用 `Map` 跨层(违 CODE_RULES §3 VO 强制),且部分契约字段随枚举文案漂移。本次把 Map 全部强类型化,并明确若干统计口径。**矩阵 `fleetCount` 字段删除**(前端已迁 `fleetTeamCounts`)。 + +## 变更接口与行为变化 + +| 接口 | 变更 | +| --- | --- | +| `GET /admin/fleet/matrix/grid` | 删除 `fleetCount`(旧 Map);补录 `fleetTeamCounts[]`;`statusCounts.effectiveStatusCounts` 改强类型五字段(`unassigned`/`unassigned_urgent`/`holding`/`holding_urgent`/`assigned`),**JSON 键名与历史 Map 完全一致,前端零感知** | +| `GET /admin/fleet/board/orders` | records[] 新增 `baseAssignmentStatus`(槽位落库基础态,不派生不覆写) | +| `GET /admin/fleet/board/summary` | `todayDepartCount` 口径明确为「start_date==TODAY 且代表槽位**落库** status=assigned」(陈旧定稿覆写后已派车出团不再漏计) | +| `GET /admin/fleet/dashboard/summary` | `pendingStatusCards` 固定顺序+固定中文标签(待派车/待确认),不随枚举文案漂移 | +| 看板候选游标 | 畸形游标由 500 系统异常改业务码 **605310**(请刷新后重试) | + +## 前端动作 + +- **矩阵 `fleetCount` 已下线,勿再使用**——改用 `fleetTeamCounts`(若仍读 fleetCount 会 undefined)。 +- `effectiveStatusCounts` 键名不变,零改动。 +- 看板/矩阵候选操作遇 605310 提示「刷新后重试」即可。 +- 其余为后端口径/健壮性修正,无前端改动。 + +## 内部 Feign 契约(后端三服务,前端不直连) + +- `/internal/message/chat/biz-unread-batch` 出参 `unreadMap`(Map) → `unreads[]`(`{bizId, unreadCount}` 列表)。**部署顺序**:user-service 先于或同批 order-v3/fleet 发布(已按此执行)。 + +## 验证证据 + +- fleet 258 目标测试(Matrix/Board/EffectiveStatus/Dashboard 六服务)+ FleetRedLineArchTest 13 + spotless 全绿;order-v3 354 + user-service 4 全绿。 +- `effectiveStatusCounts` 键名与旧 Map 一致性经 MockMvc wire 级断言;四处 ChatBizUnreadItemVO 字段逐字段比对一致。 diff --git a/changelogs-v2/2026-08/16_5935_排车按日期清理改期残留-新增接口-管理后台.md b/changelogs-v2/2026-08/16_5935_排车按日期清理改期残留-新增接口-管理后台.md new file mode 100644 index 0000000..99bfe6f --- /dev/null +++ b/changelogs-v2/2026-08/16_5935_排车按日期清理改期残留-新增接口-管理后台.md @@ -0,0 +1,51 @@ +--- +schema: "hl-changelog/v2" +ticket: "5935" +title: "排车新增「按日期清理改期残留」轻动作" +consumer: "admin" +author: "wx" +change_type: "新增接口" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "pending" +frontend_owner: "" +frontend_ref: "" +target_release: "" +verified_at: "" +status_note: "后端完成:PR #5985 已合并 dev-v3(1fe44677a)并部署 TEST(hl-fleet-service 双实例 UP)。软取消语义/范围隔离/拆行引擎复用/Step2 快照收敛/占用按子集重算由 7 个新增单测覆盖(AssignmentServiceTest 506/506 全绿)。" +updated_at: "2026-08-16" +base: "dev-v3" +generated: "2026-08-16T00:35:00+08:00" +--- + +# 排车新增「按日期清理改期残留」轻动作(#5935) + +## 背景 + +需求改期后,旧日期的逐日派车切片成为「改期残留」挂在槽位上。此前要么整槽删除、要么整单取消,过重。本次新增**按日期子集**清理残留的轻动作。 + +## 变更接口 + +| 接口 | 变更 | +| --- | --- | +| `POST /admin/fleet/assignments/slots/{slotId}/clear-residue-dates` | **新增**。入参 `{serviceDates: [YYYY-MM-DD,...]}`;对命中指定旧日期的逐日切片软取消+释放当日占用,**其余日期行 vehicle/driver/价格/状态不动** | + +## 行为口径 + +- **命中行**走完整取消链路(状态机 CANCEL + CAS + 取消事件),`cancelSource=null`(车务操作非订单真取消,#5924 口径)。 +- **全程行**先拆逐日(含 PREP_DAILY_SPLIT 重绑事件防幽灵 prep 重复计费)再按子集清,不碰原全程行;未命中行不动。 +- **Step2 快照** version+1、digest 重算;retained/editableServiceDates 不动。 +- **占用**只按命中日期子集重算(OCCUPANCY_RECOMPUTE),不误伤全组。 +- **无命中**返 **605071**「指定服务日没有在途改期残留可清理,请核对日期后重试」(非静默成功,防误以为已清)。 +- 门禁:行程已结束 605047 / 需求已终止 605054 / 关账期 605600 / HOLD 通知未收敛拒关组。 +- **与同族动作的边界**:本端点按日期清残留;`soft-clear-assignment`(#5936)清司机/车辆保留行;DELETE 删槽整槽移除;DELETE 整单取消。按场景选用。 + +## 前端动作 + +- 改期残留清理入口:选中槽位 + 勾选要清理的旧日期,调本端点传 `serviceDates[]`。 +- 无命中(605071)提示车务核对日期;幂等 key 按 `slotId + 勾选日期原始顺序`,重复连点有效防重,但**改顺序重提等同新请求**。 +- 清理成功后受影响日期回到可重派,其余日期不变。 + +## 验证证据 + +- AssignmentServiceTest 506/506(基线 489 + 本单 7 个新增用例:命中取消/其余行 never 反证/全程拆行+prep 重绑/无命中 605071/关账 605600/行程结束 605047/空参 100001)+ FleetRedLineArchTest 13 + spotless 全绿。