[changelogs-v2/2026-05] §1.2 缺 groupCode + §6.17 缺解锁/结算 eventCode #2

已关闭
mmg2026-05-19 15:19:06 +08:00创建 · 3 评论
管理员

背景

#1 两轮回复后,前端把 statusMeta / v3Adapter / transitionEvents / advance.js 全部按新 9 + 15 项枚举消化完毕,build 0 error,本次接入主链路已通。

但仍有 2 处契约空白,本期前端只能用占位/空串顶过去,影响列表 / 详情底部按钮的最终接线,需要后端再确认一次。


1. OrderListItemRespVOgroupCode 字段

§2.1 的 traveler 列表表头 / §1.3.1 主聚合都见过 groupCode(团号),但 §1.2 列表接口 GET /v3/admin/order 返回的 OrderListItemRespVO 字段表里没有 groupCode。

现象:列表「订单号」单元格下方原本设计要显示团号(例如 HL-XJ-2026-0512-001),目前 groupCode: '' 占位,前端列表上显示为空。

问题:

  • a) OrderListItemRespVO 是否会补 groupCode?(推荐)
  • b) 还是说前端要从 displayOrderNo 里 substr 截出团号?如果是,业务规则是什么(下划线分段 / 固定前缀 / 数字长度)?

2. §6.17 eventCode 缺 2 个事件 —— 解锁申请 + 审核结算

§6.17 列了 9 个 transition eventCode(PAY_DEPOSIT / PAY_FULL / SET_PENDING_BALANCE / SET_PENDING_DEPARTURE / CONFIRM / INITIATE_REFUND / CANCEL / DEPART / FINISH),但前端按原型有 2 个常用操作没有对应 eventCode:

2a. 「申请解锁」(UnlockModal)

业务场景:订单已锁单(flowStatus=PENDING_DEPARTURE),定制师发现房型/用车信息需要改 → 申请解锁 → OA 审批 → 通过后回到 PENDING_CONFIRM 重新走房车流程。

前端目前占位:INITIATE_UNLOCK(临时字符串,后端不会识别)

问题:

  • 这个事件是否在 §6.17 之外的另一个接口?(比如 POST /v3/admin/order/{id}/unlock-apply?)
  • 还是说要在 §6.17 补一个 INITIATE_UNLOCK event,目标态从 PENDING_DEPARTUREPENDING_CONFIRM?

2b. 「审核结算」(AuditModal 第 5 步)

业务场景:订单 orderStatus=REVIEWING / flowStatus=REVIEWING,财务核单 5 步走完点「确认结算」→ SETTLED

§6.17 有 FINISH 但语义模糊(行程结束?核单完成?)。前端目前 AuditModal 用 SETTLE 占位调,实际值临时走 FINISH

问题:

  • FINISH 是结团动作(TRAVELLING → REVIEWING)还是结算动作(REVIEWING → SETTLED)?
  • 如果 FINISH = 结团,那 REVIEWING → SETTLED 需要单独一个 event(SETTLE?),需在 §6.17 补
  • 如果 FINISH = 结算,那 TRAVELLING → REVIEWING 这条流转又走什么 event?

请把 §6.17 表格补完整,标清楚每个 event 的 「前置状态 → 触发动作 → 目标状态」 三元组。


前端临时处理

文件 占位值 影响
_shared/transitionEvents.js INITIATE_UNLOCK / SETTLE 字符串占位 调用 transition 接口时后端会返「未知事件」错误
list/index.vue adaptListItem groupCode: '' 列表显示空

contract 补齐后前端 1 行改值即可。

## 背景 [#1](https://git.1814.love:8443/wx/hl-api-changelog/issues/1) 两轮回复后,前端把 statusMeta / v3Adapter / transitionEvents / advance.js 全部按新 9 + 15 项枚举消化完毕,build 0 error,本次接入主链路已通。 但仍有 **2 处契约空白**,本期前端只能用占位/空串顶过去,影响列表 / 详情底部按钮的最终接线,需要后端再确认一次。 --- ### 1. `OrderListItemRespVO` 缺 `groupCode` 字段 §2.1 的 traveler 列表表头 / §1.3.1 主聚合都见过 `groupCode`(团号),但 §1.2 列表接口 `GET /v3/admin/order` 返回的 `OrderListItemRespVO` 字段表里**没有** groupCode。 **现象**:列表「订单号」单元格下方原本设计要显示团号(例如 `HL-XJ-2026-0512-001`),目前 `groupCode: ''` 占位,前端列表上显示为空。 **问题**: - a) `OrderListItemRespVO` 是否会补 `groupCode`?(推荐) - b) 还是说前端要从 `displayOrderNo` 里 substr 截出团号?如果是,业务规则是什么(下划线分段 / 固定前缀 / 数字长度)? ### 2. §6.17 `eventCode` 缺 2 个事件 —— 解锁申请 + 审核结算 §6.17 列了 9 个 transition eventCode(`PAY_DEPOSIT / PAY_FULL / SET_PENDING_BALANCE / SET_PENDING_DEPARTURE / CONFIRM / INITIATE_REFUND / CANCEL / DEPART / FINISH`),但前端按原型有 2 个常用操作没有对应 eventCode: #### 2a. 「申请解锁」(UnlockModal) 业务场景:订单已锁单(`flowStatus=PENDING_DEPARTURE`),定制师发现房型/用车信息需要改 → 申请解锁 → OA 审批 → 通过后回到 `PENDING_CONFIRM` 重新走房车流程。 **前端目前占位**:`INITIATE_UNLOCK`(临时字符串,后端不会识别) **问题**: - 这个事件是否在 §6.17 之外的另一个接口?(比如 `POST /v3/admin/order/{id}/unlock-apply`?) - 还是说要在 §6.17 补一个 `INITIATE_UNLOCK` event,目标态从 `PENDING_DEPARTURE` → `PENDING_CONFIRM`? #### 2b. 「审核结算」(AuditModal 第 5 步) 业务场景:订单 `orderStatus=REVIEWING / flowStatus=REVIEWING`,财务核单 5 步走完点「确认结算」→ `SETTLED`。 §6.17 有 `FINISH` 但语义模糊(行程结束?核单完成?)。前端目前 AuditModal 用 `SETTLE` 占位调,实际值临时走 `FINISH`。 **问题**: - `FINISH` 是结团动作(`TRAVELLING → REVIEWING`)还是结算动作(`REVIEWING → SETTLED`)? - 如果 `FINISH` = 结团,那 `REVIEWING → SETTLED` 需要单独一个 event(`SETTLE`?),需在 §6.17 补 - 如果 `FINISH` = 结算,那 `TRAVELLING → REVIEWING` 这条流转又走什么 event? 请把 §6.17 表格补完整,标清楚每个 event 的 「前置状态 → 触发动作 → 目标状态」 三元组。 --- ## 前端临时处理 | 文件 | 占位值 | 影响 | |---|---|---| | `_shared/transitionEvents.js` | `INITIATE_UNLOCK` / `SETTLE` 字符串占位 | 调用 transition 接口时后端会返「未知事件」错误 | | `list/index.vue` adaptListItem | `groupCode: ''` | 列表显示空 | contract 补齐后前端 1 行改值即可。
yst2026-05-19 15:19:06 +08:00mmg 指派
协作者

回复

按代码事实直接给结论:

① 团号字段 = teamNo

后端字段名是 teamNo(订金支付成功时生成,创单时为空):

  • 实体:OrderInfo.teamNo
  • 列表 VO 现在只暴露了拼好的 displayOrderNo(= orderNo + teamNo),后端会在 OrderListItemRespVO 单独暴露 teamNo 字段(即将随 PR 一起推 changelog)。

前端:列表"团号"单元格直接读 teamNo 即可。不要displayOrderNo substr 截 —— 拼接规则后续可能变。

② 「申请解锁」—— v3 已砍

v3 没有"已锁单→OA 审批→解锁回退"这个业务,状态机也没有对应事件。前端 UnlockModal 按钮 / INITIATE_UNLOCK 占位都请去掉

③ 「审核结算」—— 不走 transition,走独立 6 步接口

v3 没有"审核结算"这个 transition eventCode。核单结算是独立的 6 步流程,跟状态机 transition 是两个东西:

接口 用途
Step 1 PUT /v3/admin/order/{orderId}/settlement/step1 录住宿核单明细
Step 2 PUT /v3/admin/order/{orderId}/settlement/step2 录门票核单明细
Step 3 PUT /v3/admin/order/{orderId}/settlement/step3 录人员费用核单明细
Step 4 PUT /v3/admin/order/{orderId}/settlement/step4 录补助核单明细
Step 5 GET / POST / DELETE /v3/admin/order/{orderId}/settlement/step5[/...] 返还记录拉取 / 新增 / 软删
Step 6 POST /v3/admin/order/{orderId}/settlement/step6/submit 提交核单结算(SUM 4 子表 + 写 summary + 推订单状态 → SETTLED)

前端 AuditModal 第 5 步「确认结算」按钮请改调 POST /settlement/step6/submit,不要调 /transition。状态机内部的 REVIEWING → SETTLED 由后端在 step6 submit 事务里自动推进,前端不感知、不传 eventCode。

§6.17 同步收窄文档:只保留实际 transition 用得到的事件,结算/退款/解锁等"非 transition 流程"另立章节,避免再混淆。


后端待办

  1. OrderListItemRespVO + Converter 补 teamNo 字段
  2. §1.2 / §6.17 changelog + 4 份设计文档同步升版本号;§6.17 显式标注"结算走独立接口、不在 transition"
  3. 落地后会在本 issue 下回复 commit 链接
## 回复 按代码事实直接给结论: ### ① 团号字段 = `teamNo` 后端字段名是 **`teamNo`**(订金支付成功时生成,创单时为空): - 实体:`OrderInfo.teamNo` - 列表 VO 现在只暴露了拼好的 `displayOrderNo`(= `orderNo` + `teamNo`),后端会在 `OrderListItemRespVO` 单独暴露 `teamNo` 字段(即将随 PR 一起推 changelog)。 前端:列表"团号"单元格直接读 **`teamNo`** 即可。**不要**从 `displayOrderNo` substr 截 —— 拼接规则后续可能变。 ### ② 「申请解锁」—— v3 已砍 v3 没有"已锁单→OA 审批→解锁回退"这个业务,状态机也没有对应事件。前端 **UnlockModal 按钮 / `INITIATE_UNLOCK` 占位都请去掉**。 ### ③ 「审核结算」—— 不走 transition,走独立 6 步接口 v3 没有"审核结算"这个 transition eventCode。**核单结算是独立的 6 步流程**,跟状态机 transition 是两个东西: | 步 | 接口 | 用途 | |---|---|---| | Step 1 | `PUT /v3/admin/order/{orderId}/settlement/step1` | 录住宿核单明细 | | Step 2 | `PUT /v3/admin/order/{orderId}/settlement/step2` | 录门票核单明细 | | Step 3 | `PUT /v3/admin/order/{orderId}/settlement/step3` | 录人员费用核单明细 | | Step 4 | `PUT /v3/admin/order/{orderId}/settlement/step4` | 录补助核单明细 | | Step 5 | `GET / POST / DELETE /v3/admin/order/{orderId}/settlement/step5[/...]` | 返还记录拉取 / 新增 / 软删 | | **Step 6** | `POST /v3/admin/order/{orderId}/settlement/step6/submit` | **提交核单结算**(SUM 4 子表 + 写 summary + 推订单状态 → SETTLED)| 前端 AuditModal 第 5 步「确认结算」按钮请改调 **`POST /settlement/step6/submit`**,不要调 `/transition`。状态机内部的 `REVIEWING → SETTLED` 由后端在 step6 submit 事务里自动推进,前端不感知、不传 eventCode。 §6.17 同步收窄文档:只保留实际 transition 用得到的事件,结算/退款/解锁等"非 transition 流程"另立章节,避免再混淆。 --- ### 后端待办 1. `OrderListItemRespVO` + Converter 补 `teamNo` 字段 2. §1.2 / §6.17 changelog + 4 份设计文档同步升版本号;§6.17 显式标注"结算走独立接口、不在 transition" 3. 落地后会在本 issue 下回复 commit 链接
作者
管理员

前端已消化:列表团号读 teamNo(v3Adapter / list/index.vue 已切);UnlockModal + INITIATE_UNLOCK 占位全部删除;审核结算改走 submitSettlement step6 独立接口。代码 commit 258796fe。OrderListItemRespVO.teamNo 字段后端 changelog 推后再同步即可。关闭。

前端已消化:列表团号读 teamNo(v3Adapter / list/index.vue 已切);UnlockModal + INITIATE_UNLOCK 占位全部删除;审核结算改走 submitSettlement step6 独立接口。代码 commit 258796fe。OrderListItemRespVO.teamNo 字段后端 changelog 推后再同步即可。关闭。
mmg2026-05-19 16:41:46 +08:00 关闭此工单
协作者

落地完成

两件后端动作已合并 + changelog 已推送,可以拉最新 main 看:

1. 后端 PR

HL#2614 merged → squash commit 087c4331

  • OrderListItemRespVO 暴露 teamNo 字段(订金支付成功生成,创单时 null)
  • 设计文档 4 份升 v5.50(docs/order-v3/{api,srs,detail,database}/*-V5.50.html),旧 v5.49 原地保留

2. Changelog 推送

本仓 commit 1175979

  • §3.2 §1.2 OrderListItemRespVO 字段表 17 → 18 字段,加 teamNo 行 + 响应 JSON 示例同步加字段
  • §6.17 9 行平铺表 → 16 条规则三元组(事件 → 前置态 → 目标态),显式标 CONFIRM 复用 2 种语义(CUSTOMIZING→PENDING_DEPARTURE 锁单 / REVIEWING→SETTLED 结算)
  • §6.17.2 新增「非 transition 业务路径」
    • 核单结算走独立 6 步接口 /v3/admin/order/{id}/settlement/step{1-6}/*,Step 6 submit 内部自动推 REVIEWING → SETTLED前端不要自己 fire eventCode
    • 退款走独立退款接口
    • 「申请解锁」v3 已砍,前端隐藏对应按钮
  • §13 关联链接 v5.49 → v5.50

前端 3 行改值即可

文件 改前 改后
list/index.vue adaptListItem groupCode: '' groupCode: item.teamNo ?? ''
_shared/transitionEvents.js INITIATE_UNLOCK 占位 删除(v3 无此事件,按钮也去掉)
_shared/transitionEvents.js / AuditModal SETTLE 占位调 transition 改调 POST /v3/admin/order/{id}/settlement/step6/submit(不走 transition)

如还有遗留问题继续提 issue,本期阻塞清零。

## 落地完成 ✅ 两件后端动作已合并 + changelog 已推送,可以拉最新 main 看: ### 1. 后端 PR [HL#2614](https://git.1814.love:8443/wx/HL/pulls/2614) merged → squash commit `087c4331` - `OrderListItemRespVO` 暴露 `teamNo` 字段(订金支付成功生成,创单时 null) - 设计文档 4 份升 v5.50(`docs/order-v3/{api,srs,detail,database}/*-V5.50.html`),旧 v5.49 原地保留 ### 2. Changelog 推送 本仓 commit [`1175979`](https://git.1814.love:8443/wx/hl-api-changelog/commit/1175979): - **§3.2 §1.2** `OrderListItemRespVO` 字段表 17 → 18 字段,加 `teamNo` 行 + 响应 JSON 示例同步加字段 - **§6.17** 9 行平铺表 → 16 条规则三元组(事件 → 前置态 → 目标态),显式标 `CONFIRM` 复用 2 种语义(CUSTOMIZING→PENDING_DEPARTURE 锁单 / REVIEWING→SETTLED 结算) - **§6.17.2 新增「非 transition 业务路径」**: - 核单结算走独立 6 步接口 `/v3/admin/order/{id}/settlement/step{1-6}/*`,Step 6 submit 内部自动推 `REVIEWING → SETTLED`,**前端不要自己 fire eventCode** - 退款走独立退款接口 - 「申请解锁」v3 已砍,前端隐藏对应按钮 - §13 关联链接 v5.49 → v5.50 ### 前端 3 行改值即可 | 文件 | 改前 | 改后 | |---|---|---| | `list/index.vue` `adaptListItem` | `groupCode: ''` | `groupCode: item.teamNo ?? ''` | | `_shared/transitionEvents.js` | `INITIATE_UNLOCK` 占位 | **删除**(v3 无此事件,按钮也去掉)| | `_shared/transitionEvents.js` / `AuditModal` | `SETTLE` 占位调 transition | 改调 `POST /v3/admin/order/{id}/settlement/step6/submit`(不走 transition)| 如还有遗留问题继续提 issue,本期阻塞清零。
登录 并参与到对话中。
未选择标签
2 名参与者
通知
到期时间
未设置到期时间。
依赖工单

没有设置依赖项。

参考:wx/hl-api-changelog#2
没有提供说明。