修正外箱快照清空并提供当前计费量只读预览

This commit is contained in:
2026-10-28 11:03:44 +08:00
parent b2e4f0d246
commit ca61f79b6d
10 changed files with 376 additions and 35 deletions
@@ -147,6 +147,13 @@ paths:
description: 只返回基础参考费用,不包含复杂附加费和最终结算调整;pricingTaxMode 不复用订单 taxMode。
requestBody: {required: true, content: {application/json: {schema: {$ref: '#/components/schemas/PriceEstimateRequest'}}}}
responses: {'200': {description: 成功或业务失败}}
/api/platform/v1/inbounds/{inboundId}/fees/preview:
post:
summary: 只读预览当前计费重量和体积
description: 不生成费用版本,不修改测量、费用、履约状态或财务记录;与正式计价共用价格匹配及柜级阶梯规则。FBA价格未命中时返回 priceMatched=false、计费量和空单价,供人工单价预览使用;其他错误明确返回。需要 firstleg:inbound:confirm-send-fee 或 firstleg:fba-pricing:calculate 权限。
parameters: [{$ref: '#/components/parameters/TenantId'}, {$ref: '#/components/parameters/InboundId'}]
requestBody: {required: true, content: {application/json: {schema: {$ref: '#/components/schemas/FeePreviewRequest'}}}}
responses: {'200': {description: 成功或业务失败, content: {application/json: {schema: {$ref: '#/components/schemas/FeePreviewApiResponse'}}}}, '403': {description: 无权限}}
/api/platform/v1/inbounds/{inboundId}/fees/calculate:
post:
summary: 按审核通过测量快照试算 FBA 费用
@@ -296,6 +303,32 @@ components:
updatedAt: {type: string, format: date-time, nullable: true}
deleted: {type: boolean, nullable: true}
version: {type: integer, nullable: true}
FeePreviewApiResponse:
type: object
required: [code, message, data]
properties:
code: {type: string}
message: {type: string}
data: {$ref: '#/components/schemas/FeePreviewResponse'}
requestId: {type: string, nullable: true}
traceId: {type: string, nullable: true}
timestamp: {type: string, format: date-time, nullable: true}
FeePreviewResponse:
type: object
required: [actualWeightKg, actualVolumeCbm, chargeableQuantity, chargeUnit, conversionFactor, roundingScale, roundingMode, unitPrice, additionalAmount, totalAmount, currency, priceMatched]
properties:
actualWeightKg: {type: number}
actualVolumeCbm: {type: number}
chargeableQuantity: {type: number}
chargeUnit: {type: string, enum: [KG, CBM]}
conversionFactor: {type: number}
roundingScale: {type: integer}
roundingMode: {type: string}
unitPrice: {type: number, nullable: true}
additionalAmount: {type: number}
totalAmount: {type: number, nullable: true, description: 按本次人工单价或参考单价计算并取整后的费用合计;两种单价都缺失时为空}
currency: {type: string}
priceMatched: {type: boolean}
FeeSnapshotApiResponse:
type: object
required: [code, message, data]
@@ -503,6 +536,15 @@ components:
selectedVolumeCbm: {type: number, exclusiveMinimum: true, minimum: 0}
unitPrice: {type: number, exclusiveMinimum: true, minimum: 0}
reason: {type: string, minLength: 2, maxLength: 500}
FeePreviewRequest:
type: object
properties:
pricingAt: {type: string, format: date-time, nullable: true}
selectedWeightKg: {type: number, exclusiveMinimum: true, minimum: 0, nullable: true}
selectedVolumeCbm: {type: number, exclusiveMinimum: true, minimum: 0, nullable: true}
weightSource: {type: string, maxLength: 32, nullable: true}
volumeSource: {type: string, maxLength: 32, nullable: true}
selectedUnitPrice: {type: number, exclusiveMinimum: true, minimum: 0, nullable: true, description: 本次人工单价;为空时使用当前参考单价,仅用于只读金额预览}
CalculateRequest:
type: object
properties: