Files
baiyue-firstleg/lastleg-service/src/main/resources/openapi/dispatch-looseboard-execution-v1.yaml
T
2026-11-03 16:14:51 +08:00

89 lines
6.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
openapi: 3.0.3
info:
title: 本土散板排车照片履约
version: 1.0.0
description: >-
仅同客户权威关联的本土散板明细进入照片节点。全车为散板且尚无真实扫码时,审核通过后逐票保存取货照片,
全部齐全才显示取货完成按钮;显式确认后从LOADING进入DELIVERING。不生成库存、PDA拣货或仓库出库事实。逐票保存送达照片后自动DELIVERED并结案释放车辆司机。
混排从AFTER_LOADING或DELIVERING可逐票保存取货及送达照片;异地货同票须先取货再送达,不同票不限制取送顺序。
仓内实托走原出库签收链,不要求散板节点照片;页面按pickupRequired仅展示本趟上门取货货物,送货到仓尚未入库则保留warehouseNotice提示。
混排仓内真实装车确认后即发运仓内货,不等待异地取货或五类装车照片;剩余装车资料可以补传。
仓内已发运而异地货尚未确认取齐时,同时展示在装车后和派送中,两页签计数允许重叠但总数不重复。
取货照片齐全不自动完成取货;点击取货完成后仅在派送中展示,异地货量只在该确认动作计入。全部仓内货签收且散板确认取货并送达照片齐全才可整车完结。
图片只接受10MiB以内JPG或PNG,每票每节点最多20张。保存提交该节点完整保留列表,支持追加和逐张删除;空列表代表删除最后一张。
整车已完结的节点及已有送达照片的取货节点至少保留一张凭证,可先追加再删除;修改照片不撤销已执行的取货、发运或送达,不重复累计货量。
上传不等于保存,保存用公共版本和幂等键,失败同事务回滚。历史照片列表保留审计,仅最新列表授权预览。
本土散板号只用LB原单,不生成入仓码、柜号或虚构派送单号。分车运输按已保存送达照片的明细去重累计箱数,整票送达后才完成原单。
paths:
/api/platform/v1/last-leg/dispatches/{number}/looseboard-execution/pickup-complete:
parameters:
- { name: number, in: path, required: true, schema: { type: string } }
post:
summary: 人工确认本车全部上门取货完成
description: 需要platform:overseas-warehouse:dispatch:edit。逐票取货照片齐全、当前阶段允许且本轮尚未确认时才允许提交。公共版本及幂等键保护,失败回滚确认历史、数量及发运。返回Detail包含canCompletePickup及pickupCompleted。
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [recordVersion, idempotencyKey]
properties:
recordVersion: { type: integer, format: int64, minimum: 0 }
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
responses: { '200': { description: 当前照片与人工取货确认状态 } }
/api/platform/v1/last-leg/dispatches/{number}/looseboard-execution:
parameters:
- { name: number, in: path, required: true, schema: { type: string } }
get:
summary: 读取散板逐票照片与节点资格
description: 需要platform:overseas-warehouse:dispatch:list。data包含dispatchNo、recordVersion、stage、direct和items;items包含itemId、customerId、orderNo、destination、packages、pickupPhotos、arrivalPhotos、canPickup、canArrive、warehouseNotice、pickupRequired。pickupRequired仅未入仓且选择上门取货的票为true。warehouseNotice仅送货到仓且尚无入仓实托时返回带原单号的待入仓提示,其他情况为null。
responses: { '200': { description: 统一ApiResponse } }
/api/platform/v1/last-leg/dispatches/{number}/looseboard-execution/{itemId}/{phase}/uploads:
parameters:
- { name: number, in: path, required: true, schema: { type: string } }
- { name: itemId, in: path, required: true, schema: { type: string, pattern: '^[1-9][0-9]*$' } }
- { name: phase, in: path, required: true, schema: { type: string, enum: [PICKUP, ARRIVAL] } }
post:
summary: 上传本车本节点照片,尚不作为保存或发运事实
description: 需要platform:overseas-warehouse:dispatch:edit。文件业务归属为平台、本车ID、独立节点类别。
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required: [file]
properties: { file: { type: string, format: binary } }
responses: { '200': { description: data为fileId、fileName、contentType、sizeBytes } }
/api/platform/v1/last-leg/dispatches/{number}/looseboard-execution/{itemId}/{phase}:
parameters:
- { name: number, in: path, required: true, schema: { type: string } }
- { name: itemId, in: path, required: true, schema: { type: string } }
- { name: phase, in: path, required: true, schema: { type: string, enum: [PICKUP, ARRIVAL] } }
put:
summary: 保存逐票节点照片并原子核对运输进度
description: 需要platform:overseas-warehouse:dispatch:edit;不得跨车、跨节点或在不同票之间重复绑定照片。重审轮次变化后旧照片保留历史但不代替本轮履约。
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [recordVersion, idempotencyKey, fileIds]
properties:
recordVersion: { type: integer, format: int64, minimum: 0 }
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
fileIds: { type: array, maxItems: 20, uniqueItems: true, description: 本节点完整保留照片列表,空列表用于删除最后一张且受已履约凭证约束, items: { type: string, pattern: '^[1-9][0-9]*$' } }
responses: { '200': { description: 返回当前整车照片状态;重复原命令不重复推进运输或生成作业事实 } }
/api/platform/v1/last-leg/dispatches/{number}/looseboard-execution/{itemId}/{phase}/files/{fileId}/content:
parameters:
- { name: number, in: path, required: true, schema: { type: string } }
- { name: itemId, in: path, required: true, schema: { type: string } }
- { name: phase, in: path, required: true, schema: { type: string, enum: [PICKUP, ARRIVAL] } }
- { name: fileId, in: path, required: true, schema: { type: string } }
get:
summary: 读取当前明细节点已保存照片
description: 需要platform:overseas-warehouse:dispatch:list;未保存上传和其他票照片不可读取。
responses: { '200': { description: JPG或PNG,Cache-Control no-store } }