# 丸掌柜 → 福通 → 丸友集履约 → 打手

订单状态机全链路对应关系 （基于代码实际枚举值）

丸掌柜
venus-saas-order
→
福通主单
venus-dl-futong
→
福通子单
(丸友集供应链)
→
丸友集履约
venus-orbit
→
打手订单
venus-player
说明：以下所有状态码均为代码中枚举定义的实际值。各系统之间通过事件/回调通信，非直接状态码映射。 每条对应关系都标注了触发条件，确保与代码逻辑一致。
状态①：待接单 初始态
丸掌柜 待接单(200) → 福通主单 已推送(20) → 福通子单 已发布(20) → 丸友集 待接单(10) → （打手系统尚未收到订单）
丸掌柜
200
待接单
子状态：201待接单 / 202已推单
福通 主单
20
已推送
PUSH_END
福通 子单
20
已发布
PUSH_SUCCESS
丸友集
10
待接单
PENDING_ACCEPT
触发条件：丸掌柜用户支付 → 订单状态变为200(待接单)，然后丸掌柜推单调用福通API `ftOrderOpenApi.create()` → 丸掌柜子状态变为202(已推单) → 福通创建主单(status=1→10→20)和子单(status=10→20)，子单推送到丸友集(status=10)
状态②：服务中（代练中） 进行中
丸掌柜 服务中(300) → 福通主单 代练中(30) → 福通子单 服务中(30) → 丸友集 代练中(30) → 打手 代练中(20)
丸掌柜
300
服务中
子状态：301 代练中
福通 主单
30
已接收/代练中
SERVE_ING
福通 子单
30
服务中
SERVE_ING
丸友集
30
代练中
IN_PROGRESS
打手
20
代练中
IN_PROGRESS
触发条件：打手在Player系统接单 → Player(10→20) → 回调Orbit → Orbit(20→30) → 回调福通 → 福通子单(20→30) → 福通主单(20→30) → 回调丸掌柜 → 丸掌柜(200→300)
注：打手上号后，Player子状态设为21(已上号)，申请验收前必须验证 subStatus==21
状态③：待验收 进行中
丸掌柜 待验收(400) → 福通主单 待验收(40) → 福通子单 待验收(50) → 丸友集 待验收(40) → 打手 待验收(30)
丸掌柜
400
待验收
子状态：401 待验收
福通 主单
40
待验收
CHECK_ING
福通 子单
50
待验收
CHECK_ING
丸友集
40
待验收
PENDING_VERIFICATION
打手
30
待验收
PENDING_ACCEPTANCE
触发条件：打手完成代练申请验收 → Player(20→30) → 回调Orbit → Orbit(30→40) → 回调福通 → 福通子单(30→50) → 福通主单(30→40) → 回调丸掌柜 → 丸掌柜(300→400)
状态④：已完成（验收通过） 终态
丸掌柜 已完成(700) → 福通主单 验收成功(50) → 福通子单 验收成功(150) → 丸友集 已完成(50) → 打手 已完成(40)
丸掌柜
700
已完成
子状态：701已完单
702申诉中 / 703申诉完成
福通 主单
50
验收成功
CHECK_SUCCESS
【终态】
福通 子单
150
验收成功
CHECK_SUCCESS
【终态】
丸友集
50
已完成
COMPLETED
【终态】
打手
40
已完成
COMPLETED
【终态】
触发条件（有两种路径）：
① 丸掌柜用户主动验收 → 丸掌柜调用福通API `ftOrderOpenApi.checkSuccess()` → 福通子单(50→150) → 福通主单(40→50) → 回调丸掌柜 → 丸掌柜(400→700)
② 自动验收 → Orbit(40→50) → 回调福通 → 福通子单(50→150) → 主单(40→50) → 回调丸掌柜 → 丸掌柜(400→700)
状态⑤：异常中 异常态
丸掌柜 异常中(500) → 福通主单 异常中(60) → 福通子单 异常中(40)/撤销中(60)/仲裁中(70) → 丸友集 异常中(35) → 打手 撤销中(50)
丸掌柜
500
异常中
子状态：501推单异常
502代练中异常
福通 主单
60
异常中
SERVE_ERROR
福通 子单
40/60/70
异常中/撤销中/仲裁中
SERVE_ERROR / SERVE_BACK / ARBITRATION_ING
丸友集
35
异常中
IN_EXCEPTION
打手
50
撤销中
REVOKING
触发条件：打手申请撤销/仲裁/异常 → Player(20→50) → 回调Orbit → Orbit(30→35) → 回调福通 → 福通子单(30→40/60/70) → 福通主单(30→60) → 回调丸掌柜 → 丸掌柜(根据子状态：202→501 或 301→502)
取消异常恢复：丸掌柜状态可从500恢复到300(服务中)，取决于福通回调 CANCEL_ERROR
状态⑥：售后中 售后
丸掌柜 售后中(600) → 福通主单 售后中(70) → 福通子单 仲裁中(70) → 丸友集 售后中(60)
丸掌柜
600
售后中
子状态：601售后中
福通 主单
70
售后中
AFTER_SALES_ING
福通 子单
70
仲裁中
ARBITRATION_ING
丸友集
60
售后中
IN_AFTERSALE
触发条件：丸掌柜用户申请售后 → 丸掌柜调用福通API `ftOrderOpenApi.arbitration()` → 丸掌柜(200/300/400/500→600) → 福通主单(→70) → 福通子单(→70) → 丸友集(→60)
售后类型：根据发起售后时所在的阶段，记录saleType(0-6)用于后续恢复
状态⑦：已售后（售后完成） 终态
丸掌柜 已售后(800) → 福通主单 售后结束(80) → 福通子单 仲裁结束(170) → 丸友集 售后完成(70)
丸掌柜
800
已售后
子状态：801已售后
802申诉中 / 803申诉完成
福通 主单
80
售后结束
AFTER_SALES_END
【终态】
福通 子单
170
仲裁结束
ARBITRATION_END
【终态】
丸友集
70
售后完成
AFTERSALE_COMPLETED
【终态】
触发条件：福通售后结算完成 → 回调丸掌柜 AFTER_SALE_REFUND → 丸掌柜(600→800) → 福通主单(70→80) → 福通子单(70→170) → 丸友集(60→70)
状态⑧：已取消 终态
丸掌柜 已取消(900) → 福通子单 取消(0) → 丸友集 已取消(90)
丸掌柜
900
已取消
子状态：901待支付取消
福通 子单
0
取消
CANCEL
【终态】
丸友集
90
已取消
CANCEL
【终态】
打手
70
已取消
CANCELLED
【终态】
触发条件：丸掌柜用户取消订单 → 丸掌柜(→900) → 福通子单(→0) → 丸友集(→90) → 打手(→70)
补充状态：已拒绝 / 已撤销 终态

系统 | 状态码 | 状态名 | 说明
--- | --- | --- | ---
丸友集 | 80 | 已拒绝 REJECTED | 工作室拒绝接单 → 福通子单(→180 REJECT_END)
丸友集 | 100 | 已撤销 REVOKED | 上游同意撤销，订单结束
福通 子单 | 160 | 撤销结束 SERVE_BACK_END | 撤销完成（终态）
福通 子单 | 180 | 拒绝结束 REJECT_END | 被拒绝（终态）
打手 | 60 | 撤销完成 REVOKED | 撤销审核通过（终态）

## 三层角色架构：丸掌柜用户 → 工作室(Orbit PC) → 打手(Player)

核心理解：
① 打手是底层履约执行人，操作只影响自己+Orbit子单可见，不穿透到福通
② 工作室(Orbit PC)是核心桥梁，向上通知福通（Kafka→福通），向下管理打手（拆单发单、验收子单）
③ 丸掌柜用户是B端买家，向下操作触发福通→工作室→打手的全链路响应
④ 福通只知道工作室，不知道哪个打手在打。工作室在福通面前是一个整体。工作室收单后可拆单分给多个打手。
丸掌柜用户（B端买家）
👤 向下操作
先改自己状态，再通知福通
支付→推单→同意验收→售后
工作室 Orbit PC（核心桥梁）
🏢 ↑向上 ↓向下
↑向福通：接单/验收/撤销(Kafka)
↓向打手：拆单发单/验收子单
打手 Player（履约执行人）
🎮 底层操作
操作只影响自己+Orbit子单
不穿透到福通

## 【视角一】打手操作 —— 只影响 Player + Orbit 子单可见，不穿透到福通

打手是履约的实质执行人。打手在 Player 系统的所有操作，只会改变打手自己的订单状态。Orbit 工作室后台能看到子单状态变化，但不会自动同步到福通或丸掌柜。向上同步由工作室手动触发。
① 打手接单 —— 从抢单大厅抢单或指派接单

层级 | 变化前 | → | 变化后 | 说明
--- | --- | --- | --- | ---
打手(Player) | 待接单(10) | → | 代练中(20) | 抢单大厅抢单成功，记录takeAt
Orbit 子单 | 子单状态同步为 代练中(20) | 工作室后台可见
Orbit 父单 | 不变（工作室确认接单时已置为30）
福通 | 不穿透到此层。福通只知工作室层级。
丸掌柜 | 不穿透

② 打手上号 —— 子状态 subStatus → 21（已上号）

层级 | 变化 | 说明
--- | --- | ---
打手(Player) | 主状态仍为 代练中(20)，子状态→21 | 申请验收的前置条件：subStatus必须=21
Orbit及以上 | 不变 | 纯打手内部操作

③ 打手上传首图 —— 代练首张截图，申请验收前置条件

层级 | 变化 | 说明
--- | --- | ---
打手(Player) | 仅记录首图URL，不改变状态 | 申请验收的前置条件：必须有首图
Orbit及以上 | 不变 | 不影响上层

④ 🔑 打手申请验收 —— 到此为止！不穿透！

层级 | 变化前 | → | 变化后 | 说明
--- | --- | --- | --- | ---
打手(Player) | 代练中(20) | → | 待验收(30) | 前置：subStatus=21(已上号)+已上传首图
Orbit 子单 | 子单状态同步为 待验收(30) | 工作室后台看到该子单=待验收
🔴 Orbit 父单仍为 代练中(30)。福通仍为 服务中(30)。丸掌柜仍为 服务中(300)。打手申请验收不会自动穿透到上层。

⑤-⑧ 其他打手操作（均不影响福通）

操作 | 打手状态变化 | Orbit及以上
--- | --- | ---
取消验收 | 待验收(30)→代练中(20) | 不变
申请撤销 | 代练中(20)→撤销中(50) | 不变
取消撤销 | 撤销中(50)→代练中(20) | 不变
拒绝接单 | 待接单(10)→清指派 | 不变

## 【视角二】工作室 Orbit PC 操作 — 向上通知福通（Kafka），向下管理打手

工作室是核心桥梁。福通不知道哪个打手在打，福通只知道工作室的行为（接单、拒绝、申请验收等）。 工作室收到福通订单后可立即拆单、发单给打手。打手完成后再由工作室向上同步。
↑ 向上 — 通知福通（通过 Kafka topic: orbit-ft-events）
A) 确认接单 —— Orbit 父单 10→20

层级 | 变化前 | → | 变化后 | 说明
--- | --- | --- | --- | ---
工作室客服 | 点击「确认接单」POST /pc/orbit/order/accept | 手动触发
Orbit 父单 | 待接单(10) | → | 已接单(20) | ACCEPTED
↳ Kafka → 福通 | 事件: ACCEPT_ORDER
福通子单 | 已发布(20) | → | 已发布(20) | 不变

B) 拒绝接单 —— Orbit → 80(已拒绝) ✅

层级 | 变化 | 说明
--- | --- | ---
工作室客服 | 点击「拒绝接单」POST /pc/orbit/order/reject | 手动触发
Orbit 父单 | 待接单(10)→已拒绝(80) ✅ | REJECTED 终态
↳ Kafka → 福通 | 事件: REJECT_ORDER |
福通子单 | 已发布(20)→拒绝结束(180) ✅ | REJECT_END

C) 🔑 申请验收 — Orbit父单 30→40，通知福通（非验收打手！）

层级 | 变化前 | → | 变化后 | 说明
--- | --- | --- | --- | ---
工作室客服 | 点击「申请验收」POST /pc/orbit/order/applyAcceptance | 手动触发。可等所有打手提交后一起操作。
Orbit 父单 | 代练中(30) | → | 待验收(40) | PENDING_VERIFICATION，更新applyAcceptAt
验收记录 | 创建 OrbitOrderAcceptanceRecord(status=0待审核) | 记录申请人
↳ Kafka → 福通 | 事件: APPLY_ACCEPTANCE
福通子单 | 服务中(30) | → | 待验收(50) | CHECK_ING
福通主单 | 已接收/代练中(30) | → | 待验收(40) | CHECK_ING
丸掌柜 | 服务中(300/301) | → | 待验收(400/401) | 福通回调 APPLY_CHECK

关键：工作室「申请验收」≠ 验收打手。工作室只是改Orbit父单→40 并通知福通"这个工作室的单可以验收了"。 最终验收决定权在丸掌柜用户。工作室验收打手是另一个独立操作（见下方↓向下操作）。
D) 申请撤销 —— Orbit 父单 30→35(异常中)，通知福通

层级 | 变化 | 说明
--- | --- | ---
工作室客服 | 点击「申请撤销」POST /pc/orbit/order/applyRevoke | 手动触发
Orbit 父单 | 代练中(30)→异常中(35) | IN_EXCEPTION
↳ Kafka → 福通 | 事件: APPLY_REVOKE |
福通子单 | 服务中(30)→异常中(40)/撤销中(60) |
福通主单 | 代练中(30)→异常中(60) | SERVE_ERROR
丸掌柜 | 服务中(300)→异常中(500) | 福通回调 MAIN_ORDER_ERROR

E) 处理售后 —— Orbit → 福通仲裁结果

层级 | 变化 | 说明
--- | --- | ---
工作室客服 | 点击「处理售后」POST /pc/orbit/order/processAftersale |
↳ Kafka → 福通 | 事件: ARBITRATION_RESULT |
福通子单 | 仲裁中(70)→仲裁结束(170) ✅ | ARBITRATION_END
丸掌柜 | 售后中(600)→已售后(800) ✅ | 取决于autoAfterSale参数

↓ 向下 — 管理打手（拆单发单、验收子单、撤销子单）
F) 拆单发单 — 将福通来的子单拆成多个打手订单
API：POST /pc/orbit/order/batchDispatchOrders
工作室收到福通订单后，可以在此拆成多个打手子单，分给不同打手。
福通不知道被拆单了。福通只知道：工作室接单了、工作室申请验收了。打手内部如何拆分是工作室自己管理的。
G) 🔑 验收子单 — 只验收该打手订单，Orbit父单不变！
API：POST /pc/orbit/order/acceptanceSubOrder
打手申请验收后→工作室在后台看到子单=待验收(30)→工作室点「验收子单」→该打手(30→40)已完成✅。
验收子单 ≠ 申请验收。验收子单只是对打手个人的操作（Orbit父单不变、福通不变）。
要向上通知福通，工作室需另外点「申请验收」改Orbit父单(30→40) + Kafka APPLY_ACCEPTANCE。
H) 撤销子单 / 取消子单 / 撤销审核
API：撤销子单 POST /pc/orbit/subOrder/revoke | 取消子单 POST /pc/orbit/subOrder/cancel | 撤销审核 POST /pc/orbit/subOrder/revokeApproval

## 【视角三】丸掌柜用户操作 — 向下操作，先改自己状态再通知福通

丸掌柜是B端买家。所有操作方向是 向下：丸掌柜先改自己状态，再通知福通→福通通知工作室→工作室通知打手。
A) 支付 → 待接单(200)； 推单 → 调用 ftOrderOpenApi.create()

层级 | 变化 | 说明
--- | --- | ---
丸掌柜 | 支付：待付款(100)→待接单(200/201) 推单：子状态→202(已推单) | 用户支付后，再手动推单
↳ 调用福通 | ftOrderOpenApi.create() | 创建福通主单+子单
福通主单 | (新建)→已录单(1)→已支付(10)→已推送(20) |
福通子单 | (新建)→初始化(10)→已发布(20) | 推送给丸友集工作室
Orbit 父单 | (新建)→待接单(10) | 工作室看到新订单

B) 🔑 同意验收 — 丸掌柜先改自己 400→700，再调 ftOrderOpenApi.checkSuccess()

层级 | 变化前 | → | 变化后 | 说明
--- | --- | --- | --- | ---
丸掌柜用户 | 点击「同意验收」completeOrder() | 代码第506行
丸掌柜 | 待验收(400/401) | → | 已完成(700/701) ✅ | 先改自己！
↳ 调用福通 | ftOrderOpenApi.checkSuccess()
福通子单 | 待验收(50) | → | 验收成功(150) ✅ | CHECK_SUCCESS
福通主单 | 待验收(40) | → | 验收成功(50) ✅ | CHECK_SUCCESS，发送结算给Orbit
Orbit 父单 | 待验收(40) | → | 已完成(50) ✅ | COMPLETED
打手 | 如未被验收→已完成(40) ✅ | 上游同步 |

代码依据：OrderBaseActionApiImpl.completeOrder(506行)→状态→700(522行)→COMPLETE事件(540行)→OrderActionEventListener(62行)→FtOrderService.handleCompleteOrder(195行)→ftOrderOpenApi.checkSuccess()
C) 申请售后 — 丸掌柜 →600，调 ftOrderOpenApi.arbitration()

层级 | 变化 | 说明
--- | --- | ---
丸掌柜 | 任意→售后中(600/601) | 可从200/300/400/500发起
福通主单 | →售后中(70) AFTER_SALES_ING |
福通子单 | →仲裁中(70) ARBITRATION_ING |
Orbit 父单 | →售后中(60) IN_AFTERSALE |

D) 审核售后完成 — 丸掌柜 →800，调 ftOrderOpenApi.afterSaleEnd()

层级 | 变化 | 说明
--- | --- | ---
丸掌柜 | 售后中(600)→已售后(800) ✅ | 人工审核；或福通自动回调(autoAfterSale=true)
福通主单 | 售后中(70)→售后结束(80) ✅ | AFTER_SALES_END
Orbit 父单 | 售后中(60)→售后完成(70) ✅ | AFTERSALE_COMPLETED

## 全链路操作速查表（按角色分列，完整中文释义）

打手操作 | 打手状态变化 | 工作室操作 | Orbit父单 | 福通子单 | 福通主单 | 丸掌柜 | 丸掌柜操作
--- | --- | --- | --- | --- | --- | --- | ---
接单 | 待接单(10)→代练中(20) | — | — | — | — | — |
上号 | 子状态→21(已上号) | — | — | — | — | — |
上传首图 | 不变 | — | — | — | — | — |
申请验收 | 代练中(20)→待验收(30) | 🔴 到此为止！不穿透！需工作室手动点「申请验收」才能向上同步
取消验收 | 待验收(30)→代练中(20) | 不影响福通
申请撤销 | 代练中(20)→撤销中(50) | 不影响福通
取消撤销 | 撤销中(50)→代练中(20) | 不影响福通
拒绝接单 | 待接单(10)→清指派 | 不影响上层
|  | 确认接单 | 待接单(10)→已接单(20) | 不变 | 不变 | 不变 |
|  | 拒绝接单 | →已拒绝(80) ✅ | →拒绝结束(180) ✅ | — | — |
|  | 申请验收 | 代练中(30)→待验收(40) | 服务中(30)→待验收(50) | 代练中(30)→待验收(40) | 服务中(300)→待验收(400) |
|  | 申请撤销 | 代练中(30)→异常中(35) | 服务中(30)→异常中(40)/撤销中(60) | 代练中(30)→异常中(60) | 服务中(300)→异常中(500) |
|  | 验收子单 | 父单不变 | — | — | — |
|  |  |  |  |  | 待付款(100)→待接单(200) | 支付
|  |  | 待接单(10) | 已发布(20) | 已推送(20) | 待接单(200/202) | 推单
— | — |  | 已完成(50) ✅ | 验收成功(150) ✅ | 验收成功(50) ✅ | 待验收(400)→已完成(700) ✅ | 同意验收
— | — |  | 售后中(60) | 仲裁中(70) | 售后中(70) | →售后中(600) | 申请售后
— | — |  | 售后完成(70) ✅ | 仲裁结束(170) ✅ | 售后结束(80) ✅ | →已售后(800) ✅ | 审核售后

## 一图速查：全链路状态对应表

丸掌柜 OrderBaseStatusEnum | 福通·主单 OrderStatusEnum | 福通·子单 SupplyOrderStatusEnum | 丸友集履约 OrbitOrderStatus | 打手 OrderStatusEnum
--- | --- | --- | --- | ---
100 待付款 | (福通尚未创建订单) | — | — | —
200 待接单 | 20 已推送 | 20 已发布 | 10 待接单 | (未到打手)
300 服务中 | 30 代练中 | 30 服务中 | 30 代练中 | 20 代练中
400 待验收 | 40 待验收 | 50 待验收 | 40 待验收 | 30 待验收
500 异常中 | 60 异常中 | 40 / 60 / 70 | 35 异常中 | 50 撤销中
600 售后中 | 70 售后中 | 70 仲裁中 | 60 售后中 | —
700 已完成 ✅ | 50 验收成功 ✅ | 150 验收成功 ✅ | 50 已完成 ✅ | 40 已完成 ✅
800 已售后 ✅ | 80 售后结束 ✅ | 170 仲裁结束 ✅ | 70 售后完成 ✅ | —
900 已取消 ✅ | — | 0 取消 ✅ | 90 已取消 ✅ | 70 已取消 ✅

✅ = 终态（不可再流转）

## 附录：全系统订单状态枚举字典

以下列出各系统订单相关状态枚举的所有值，来源于代码实际定义，方便产品/运营对照查阅。

一、丸掌柜 — OrderBaseStatusEnum (主状态) venus-saas-order-base

状态码 | 枚举名 | 中文名称 | 终态 | 说明
--- | --- | --- | --- | ---
100 | TO_PAY | 待付款 | 否 | 下单后初始状态，等待用户支付
200 | TO_TAKING | 待接单 | 否 | 已支付，等待推单给福通
300 | IN_TAKING | 服务中 | 否 | 打手已接单，正在代练中
400 | TO_ACCEPT | 待验收 | 否 | 打手申请验收，等待用户确认
500 | IN_EXCEPTION | 异常中 | 否 | 订单发生异常（撤销/仲裁/推单失败等）
600 | IN_AFTER_SALES | 售后中 | 否 | 用户/客服发起售后处理
700 | SUCCESS | 已完成 | ✅ | 验收通过，订单完成
800 | AFTER_SALES_SUCCESS | 已售后 | ✅ | 售后处理完毕
900 | CANCEL | 已取消 | ✅ | 用户取消订单

一-附：丸掌柜 — OrderBaseSubStatusEnum (子状态)

子状态码 | 枚举名 | 中文名称 | 所属主状态 | 说明
--- | --- | --- | --- | ---
101 | TO_PAY | 待付款 | 100-待付款 | 初始子状态
201 | TO_TAKING | 待接单 | 200-待接单 | 已支付但未推单
202 | TO_TAKING_PUSHED | 待接单·已推单 | 200-待接单 | 已推送给福通
301 | IN_TAKING | 代练中 | 300-服务中 | 打手正在执行
401 | TO_ACCEPT | 待验收 | 400-待验收 | 等待用户验收
501 | TO_TAKING_PUSHED_EXCEPTION | 推单异常 | 500-异常中 | 推单阶段异常
502 | IN_TAKING_EXCEPTION | 代练中异常 | 500-异常中 | 代练阶段异常
601 | IN_AFTER_SALE | 售后中 | 600-售后中 | 售后处理中
701 | SUCCESS | 已完成 | 700-已完成 | 正常完成
702 | SUCCESS_APPEAL | 已完成·申诉中 | 700-已完成 | 完成后发起申诉
703 | SUCCESS_APPEAL_SUCCESS | 已完成·申诉完成 | 700-已完成 | 申诉处理完毕
801 | AFTER_SALE_SUCCESS | 已售后 | 800-已售后 | 售后正常完成
802 | AFTER_SALE_SUCCESS_APPEAL | 已售后·申诉中 | 800-已售后 | 售后完成后申诉
803 | AFTER_SALE_SUCCESS_APPEAL_SUCCESS | 已售后·申诉完成 | 800-已售后 | 售后申诉处理完毕
901 | TO_PAY_CANCEL | 待支付取消 | 900-已取消 | 支付前取消

二、福通主单 — OrderStatusEnum (主单状态) venus-dl-futong

状态码 | 枚举名 | 中文名称 | 终态 | 说明
--- | --- | --- | --- | ---
1 | INIT | 已录单 | 否 | 福通主单初始状态，订单已录入
10 | HAS_PAY | 已支付 | 否 | 用户完成支付
20 | PUSH_END | 已推送 | 否 | 已推送到供应链（丸友集等）
30 | SERVE_ING | 已接收/代练中 | 否 | 供应链已接收，正在执行
40 | CHECK_ING | 待验收 | 否 | 等待用户验收
50 | CHECK_SUCCESS | 验收成功 | ✅ | 用户验收通过，主单完成
60 | SERVE_ERROR | 异常中 | 否 | 主单发生异常
70 | AFTER_SALES_ING | 售后中 | 否 | 进入售后流程
80 | AFTER_SALES_END | 售后结束 | ✅ | 售后完成

二-附：福通子单 — SupplyOrderStatusEnum (子单状态) 核心枚举

状态码 | 枚举名 | 中文名称 | 终态 | 说明
--- | --- | --- | --- | ---
0 | CANCEL | 取消订单 | ✅ | 已取消
10 | INIT | 初始化/未发布 | 否 | 子单初始状态
12 | PUSH_FAILED | 发布失败 | 否 | 推单到供应链失败
20 | PUSH_SUCCESS | 已发布 | 否 | 推单成功，等待接单
30 | SERVE_ING | 服务中 | 否 | 打手已接单，执行中
40 | SERVE_ERROR | 异常中 | 否 | 子单发生异常
50 | CHECK_ING | 待验收 | 否 | 等待验收
60 | SERVE_BACK | 撤销中 | 否 | 撤销流程进行中
70 | ARBITRATION_ING | 仲裁中 | 否 | 仲裁流程进行中
80 | LOCKING | 锁定中 | 否 | 订单被锁定
150 | CHECK_SUCCESS | 验收成功 | ✅ | 验收通过
160 | SERVE_BACK_END | 撤销结束 | ✅ | 撤销完成
170 | ARBITRATION_END | 仲裁结束 | ✅ | 仲裁完成
180 | REJECT_END | 拒绝结束 | ✅ | 被拒绝（终态）

二-附：福通子单 — SupplyOrderSubStatusEnum (子单子状态)

子状态码 | 枚举名 | 中文名称 | 说明
--- | --- | --- | ---
61 | SERVE_BACK_BY_TAKE | 打手发起撤销 | 接单方（打手方）发起撤销
62 | SERVE_BACK_BY_CREATE | 发单方发起撤销中 | 发单方（客服）发起撤销
63 | SERVE_BACK_REJECT | 撤销拒绝 | 撤销申请被拒绝
71 | ARBITRATION_ING_BY_TAKE | 打手发起仲裁中 | 接单方发起仲裁
72 | ARBITRATION_ING_BY_CREATE | 发单方发起仲裁中 | 发单方发起仲裁
151 | CHECK_SUCCESS_BY_CREATE | 用户主动点击验收成功 | 用户手动验收
152 | CHECK_SUCCESS_BY_TAKE | 自动验收成功 | 系统自动验收
160 | SERVE_BACK_END_BY_TAKE | 撤销结束 | 撤销流程完成
170 | ARBITRATION_END_BY_TAKE | 仲裁结束 | 仲裁流程完成
171 | APPLY_APPEAL | 发单方发起申诉·申诉中 | 客服发起申诉
172 | APPEAL_DEAL_COMPLETE | 申诉处理完成 | 申诉已处理
173 | APPEAL_DEAL_REJECT | 申诉被驳回 | 申诉驳回
174 | APPLY_LOCK | 发单方申请子单锁定 | 锁定子单
175 | CANCEL_LOCK | 发单方取消子单锁定 | 取消锁定

三、丸友集履约 — OrbitOrderStatus (父单状态) venus-orbit-base

状态码 | 枚举名 | 中文名称 | 终态 | 说明
--- | --- | --- | --- | ---
10 | PENDING_ACCEPT | 待接单 | 否 | 福通推送订单，工作室还未接单
20 | ACCEPTED | 已接单 | 否 | 工作室确认接单，等待派单给打手
30 | IN_PROGRESS | 代练中 | 否 | 打手已接单，正在执行
35 | IN_EXCEPTION | 异常中 | 否 | 代练过程中出现异常
40 | PENDING_VERIFICATION | 待验收 | 否 | 等待验收（客服手动操作后进入此状态）
50 | COMPLETED | 已完成 | ✅ | 验收通过（终态）
60 | IN_AFTERSALE | 售后中 | 否 | 上游发起售后
70 | AFTERSALE_COMPLETED | 售后完成 | ✅ | 售后处理完成（终态）
80 | REJECTED | 已拒绝 | ✅ | 工作室拒绝接单（终态）
90 | CANCEL | 已取消 | ✅ | 取消订单（终态）
100 | REVOKED | 已撤销 | ✅ | 上游同意撤销（终态）

三-附：丸友集履约 — OrbitSubStatus (父单子状态)

子状态码 | 枚举名 | 中文名称 | 说明
--- | --- | --- | ---
0 | IN_SERVICE | 服务中 | 正常服务状态
1 | REVOKING | 撤销中 | 撤销流程进行中
2 | REVOKED | 已撤销 | 撤销完成
3 | CANCELLING | 取消中 | 取消流程进行中
4 | PENDING_LOGIN | 待上号 | 等待打手上号
5 | PENDING_SALE | 待售后 | 等待售后处理

四、打手订单 — OrderStatusEnum (打手订单状态) venus-player-base

状态码 | 枚举名 | 中文名称 | 终态 | 说明
--- | --- | --- | --- | ---
10 | PENDING | 待接单 | 否 | 订单创建后初始状态，等待打手抢单
20 | IN_PROGRESS | 代练中 | 否 | 打手已接单，正在代练。子状态21=已上号
30 | PENDING_ACCEPTANCE | 待验收 | 否 | 打手完成代练，申请验收
40 | COMPLETED | 已完成 | ✅ | 验收通过，订单完成（终态）
50 | REVOKING | 撤销中 | 否 | 已提交撤销申请，等待审核
60 | REVOKED | 撤销完成 | ✅ | 撤销审核通过（终态）
70 | CANCELLED | 已取消 | ✅ | 订单取消（终态）
80 | CANCELLING | 取消中 | 否 | 订单正在取消中

四-附：打手订单 — OrderSubStatus (子状态，仅一个值)

子状态码 | 枚举名 | 中文名称 | 说明
--- | --- | --- | ---
21 | LOGGED_IN | 已上号 | 打手已登录游戏账号，申请验收的前置条件

## 主状态流转总图（含Orbit客服手动卡口）

    丸掌柜(100)待付款 ──支付──▶ 丸掌柜(200)待接单 ──推单──▶ 丸掌柜(200/202)已推单
                                                │
                        ┌───────────────────────┘
                        ▼
                福通主单(1)已录单 → 福通主单(10)已支付 → 福通主单(20)已推送
                        │
                福通子单(10)初始化 → 福通子单(20)已发布 → 丸友集父单(10)待接单
                                                              │
                                              ┌───────────────┘
                                              ▼
                                       客服确认接单: 丸友集父单(20)已接单
                                              │
                                              ▼ 派单给打手
                                       打手(10)待接单 ──抢单──▶ 打手(20)代练中(已上号21)
                                              │                      │
                                              │         ┌────────────┘
                                              │         ▼
                                              │  打手(30)待验收 ─── 只改打手状态 ──▶ 丸友集父单仍为(30) ──▶ 福通仍为(30) ──▶ 丸掌柜仍为(300)
                                              │         │                      │
                                              │         │   🔴 Orbit客服手动点击「申请验收」POST /pc/orbit/order/applyAcceptance
                                              │         │         │            │
                                              │         │         ▼            │
                                              │         │  丸友集父单(30→40) + 自动验收子单 → Player(30→40)已完成 ✅
                                              │         │         │            │
                                              │         │         ▼ Kafka     │
                                              │         │  福通子单(30→50)待验收 → 福通主单(30→40)待验收 → 丸掌柜(300→400)待验收
                                              │         │         │            │
                                              │         │   🔴 丸掌柜用户点击「同意验收」(丸掌柜先改自己→700, 再通知福通checkSuccess)
                                              │         │         │            │
                                              │         │         ▼            │
                                              │         │  福通子单(50→150) ✅ → 福通主单(40→50) ✅ → 丸友集(40→50) ✅
                                              │         │         │            │
                                              │         │         ▼            │
                                              │         │  丸掌柜(700)已完成 ✅            │
                                              │         │
                                              │         ├──客服申请撤销──▶ 丸友集父单(30→35)异常 ──Kafka──▶ 福通子单(40/60) ──▶ 福通主单(60)异常中
                                              │         │                    │
                                              │         │                    ▼
                                              │         │           丸掌柜(500)异常中
                                              │         │                    │
                                              │         │         ┌─取消异常─┘
                                              │         │         ▼
                                              │         │  丸掌柜(300)恢复服务中
                                              │         │
                                              │         └──取消──▶ 打手(70)已取消 ✅ ──▶ 丸友集(90)已取消 ✅
                                              │                           │
                                              │                           ▼
                                              │                   丸掌柜(900)已取消 ✅
                                              │
                                              └──申请售后──▶ 丸掌柜(600)售后中
                                                              │
                                                              ▼
                                                      福通主单(70)售后中 ──▶ 福通子单(70)仲裁中 ──▶ 丸友集(60)售后中
                                                              │
                                             ┌─客服处理售后或自动──┘
                                             ▼
                                      丸掌柜(800)已售后 ✅ ──▶ 福通主单(80)售后结束 ✅ ──▶ 丸友集(70)售后完成 ✅