feat(lastleg): connect appointment followups and fleet intake

This commit is contained in:
2026-10-09 22:04:49 +08:00
parent 1202cafadf
commit 0d75e311d0
54 changed files with 2315 additions and 25 deletions
@@ -376,7 +376,7 @@ paths:
/api/platform/v1/last-leg/fleet/capacity-offers/inquiries:
get:
summary: 分页查询本人或获准的全部意向
description: 权限:platform:fleet:capacity-offer:list 或 platform:fleet:capacity-offer:manage。ALL只允许manage;销售负责人由登录身份过滤,历史不依赖发布仍OPEN。
description: 权限:platform:fleet:capacity-offer:list 或 platform:fleet:capacity-offer:manage。ALL和TODO只允许manage;TODO按服务端负责角色筛选调度待办,基础候选超过100条要求按客户或登记号缩小范围,过滤后精确分页,不按当前页伪造总数;销售负责人由登录身份过滤,历史不依赖发布仍OPEN。
responses:
'200':
description: 统一业务响应;code=200成功,冲突或资格拒绝不得当成功
@@ -440,6 +440,7 @@ paths:
enum:
- MINE
- ALL
- TODO
default: MINE
/api/platform/v1/last-leg/fleet/capacity-offers/inquiries/{bookingNo}:
get:
@@ -985,8 +986,41 @@ components:
actions:
$ref: '#/components/schemas/OfferActions'
Inquiry:
description: 登记返回服务端资料缺项与处理进度;canConfirm同时核对本票完整性和目的地三维余位,最终写命令仍复验。
type: object
properties:
appointmentCoverage:
type: object
nullable: true
description: FBA来源通过AppointmentCoverageService按客户和BOOKING稳定来源批量读取;无订单保留待形成货件资料,私人目的地为null。不把保位当收货预约,不推算未知时区。
properties:
status: {type: string}
sourceVersion: {type: string, nullable: true}
changeReviewRequired: {type: boolean}
missingFields: {type: array, items: {type: string}}
appointments:
type: array
items:
type: object
properties:
appointmentNo: {type: string}
confirmationNo: {type: string, nullable: true}
status: {type: string}
confirmedAt: {type: string, nullable: true}
confirmedEndAt: {type: string, nullable: true}
timezone: {type: string, nullable: true}
progress:
type: object
description: 只读派生处理提示,不是可写状态;负责人及动作按资料完整性、承运/来货/实收事实返回;保存不保位。
required: [stage, label, reservation, owner, primaryAction, message, missingFields]
properties:
stage: {type: string}
label: {type: string}
reservation: {type: string}
owner: {type: string}
primaryAction: {type: string, enum: [VIEW, EDIT, CONFIRM, INCOMING, RECEIPT, BIND]}
message: {type: string}
missingFields: {type: array, items: {type: string}}
bookingNo:
type: string
offerNo: