业务口径仓库配货 / 打包

推荐箱型 / 设箱校验

白场拆箱、中通 45kg 逐箱匹配、晚场加单重算(含昆明→店/仓→店按货架重算)、特殊花材专用箱、设箱校验完整口径

更新
2026-08-11

Markdown 原文(给 AI 用):https://doc.xfun.fun/box-suggest-logic.md

一句话总览

运营端生成面单时,系统按发货单重量 自动推荐每张面单用什么箱;仓库打包时实际设箱与推荐不一致会 校验提示。晚场加单后,未出库的面单按新重量 整体重算推荐。

前提配置

配置说明
箱型配置(打包配置)每种箱录入「可装花材重量」(kg)。没录容量的箱不参与推荐。
特殊花材专用箱需新增两条配置:蝴蝶兰箱(蝴蝶兰 / 红掌 / 大花蕙兰 共用)、蓝妖箱(蓝色妖姬)。按 箱名匹配(先找同名,找不到再找名称包含的),不要求录容量。
特殊花材定义商品名包含:蝴蝶兰、红掌、大花蕙兰、蓝色妖姬。业务前提:到仓时已装箱,仓库只需贴面单,所以不存在装不下的问题。

白场面单生成(运营端)

  1. 算可装重量:可装重量 = 发货单总重 − 特殊花材重量(特殊花材单独装箱,不占普通箱额度)
  2. 按物流拆箱:普通物流与中通算法不同,见下表;每拆出一箱 = 一张面单,并写上推荐箱型
  3. 特殊花材追加专用面单:按 专用箱追加面单,不是按种类:蓝色妖姬单独 1 张(蓝妖箱),蝴蝶兰 / 红掌 / 大花蕙兰合并 1 张(蝴蝶兰箱)。即最多 2 张,映射到同一箱的多种花材只算 1 张

两种拆箱算法

物流算法
普通物流 (顺丰等)最大箱优先:先用容量最大的箱整箱装,剩余零头选 能装下的最小箱。
中通 (快运/落地/小件)45kg 逐箱匹配:件数固定为 ceil(总重÷45),与兜底口径一致。每轮取 min(45kg, 剩余重量) 作为一件的重量,选 能装下这件的最小箱作推荐,再按 min(45kg, 剩余重量) 扣减剩余重量(箱容量只决定推荐哪个箱,不参与扣减)。所有箱都装不下 45kg 时用最大箱。
说明

兜底:一个可用箱型都没配置时,不推荐箱型,只按固定重量计件数:中通每件 45kg、其他物流每件 60kg(向上取整)。

说明

航邦物流:与普通物流走同一套拆箱算法,无固定重量特判。

打单 / 电子面单(运单数)

运单数与「白场面单生成」口径 完全一致:运单数 = 拆箱得到的箱数 + 特殊花材 专用箱数(蓝妖箱、蝴蝶兰箱各至多 1)。中通同样走 45kg 逐箱匹配算法(上例 100kg 中通即 3 单)。补打面单不重新拆箱、不算特殊花材。

晚场加单重算

触发条件:晚场(18:05 后)加单导致某个打包分组重量变化时,对该分组重算。三种面单的重算单元不同:

面单类型重算单元说明
昆明→店 / 仓→店按货架(发货单)同一货架当天所有订单(含晚场)合并装箱,收货人相同。晚场该货架增重 → 按新合计重量把整货架的面单重排。
城市仓按整仓聚合整个城市仓的普通订单混在一起算箱,维持原粒度,不拆到货架级。

三者的重算步骤一致,如下:

  1. 已出库的面单不动:已出库面单及其箱子维持原样
  2. 估算已出库带走的重量:按已出库面单的箱容量合计(优先实际设的箱,没设箱按推荐箱,默认装满)
  3. 剩余重量重新拆箱:剩余 = 新总重 − 特殊花材重量 − 已出库容量;拆箱算法同白场(中通 45kg 逐箱匹配、普通最大箱优先)
  4. 未出库面单整体承接新推荐:未出库面单(含已设箱的)按顺序套用新箱型序列,不保留原推荐;不够就补新面单,多出来的面单不处理
  5. 特殊花材追加:白场每个 专用箱 1 张不变;晚场又新增了某专用箱的花材,再追加 1 张(无论白天是否已有同箱——晚场是新装的箱子)。按明细下单时间分白/晚场,同一阶段同一专用箱只算 1 张,重算幂等不重复追加
说明

推荐变化只打日志,不做留痕/通知;专用箱未配置时晚场跳过追加。

中通晚场例:晚场加单后总重 190kg、其中特殊花材 10kg,已出库 2 个 80 箱(按容量估算带走 160kg)→ 剩余 190−10−160 = 20kg → 未出库部分重拆为 1 个能装下 20kg 的最小箱。

供应商端设箱校验(仓库打包)

入口行为
小程序拍照打包 / 修改箱型实际箱型 ≠ 推荐箱型 → 拦截弹窗(错误码 6001),确认后可继续。
PDA 扫码枪打包不拦截,仅留痕备注「扫码枪打包,实际箱型与推荐箱型不一致」。
货架列表「设箱有变化」的货架可筛选、有角标提示(小程序端)。
说明

中通面单同样有箱型推荐,设箱校验对中通 同样生效。

已知边界