Skip to content

Release Notes (2026-09-15) ​

✨ 重点 Feature ​

跨项目联动:物流商配置重构为多命名账号 ​

  • QuoteGo b4cae2c、QuickPoint 3e3940a:同一基础物流商可创建多个自定义命名账号(如「无锡云途」「深圳云途」),每个账号独立维护凭据;物流公司/渠道的绑定对象由「基础物流商编码」改为「命名账号」。
  • 物流商配置页由原先「一个基础物流商一行」改为「按基础物流商分组,组内列出该组织创建的命名账号」,支持添加、编辑、删除账号,账号名在组织内唯一。
  • 测试连接支持两种入口:编辑已保存账号时按账号 + 表单值 merge 校验;新建账号时直接按选择的基础物流商 + 凭据校验。
  • 删除仍被物流渠道引用的账号会被拒绝(返回「已被物流渠道使用」),防止渠道打单断链。
  • 渠道加载打单实例的缓存键由「组织 + 基础物流商」改为「组织 + 账号 ID」,切换账号后按账号读取凭据。
物流配置 — 物流商账号
基础物流商命名账号状态操作
云途物流无锡云途已配置编辑 删除
云途物流深圳云途已配置编辑 删除
华磊物流(暂无账号)—添加物流商

跨项目联动:账单支持按订单号反查搜索 ​

  • QuoteGo 0298f52、QuickPoint 480142c:账单管理列表的搜索框在客户名、账单号之外,新增支持用订单号反查账单。
  • 由于 Invoices 表本身不存订单号,后端新增 GET /api/invoices/order-number-invoices?q=订单号,经 Orders.invoice 精确反查命中的账单 ID(兼容带/不带 # 前缀),前端将结果并入列表过滤条件。
  • 前端同时用账单的 first_order_number / last_order_number 快照做等值匹配,覆盖账单区间两端以及已归档订单(已移出主库、无法反查)的场景。
账单管理 — 按订单号搜索

搜索:#10086 搜索

账单号客户订单区间金额
INV-2026-0912Acme#10086 ~ #10122$1,280.00

🚀 其他 Feature ​

物流渠道有效性校验 ​

  • QuickPoint 00f24cf:新增 isWaybillRoute 统一判定线路是否可用(必须已配置 routeCode),订单行内渠道下拉、批量分配弹窗、规则推荐一律排除未配置 routeCode 的线路,避免选中后打单失败。
  • QuickPoint 00f24cf:订单已选渠道失效(routeCode 被清除/线路停用)时,行内展示红色「所选渠道已失效」徽标并提示重新选择;批量申请运单前置校验,存在失效渠道的订单会被拦截并提示。
  • QuickPoint 00f24cf:订单「物流渠道」筛选下拉仍保留全部线路(含失效线路),保证已发货/历史订单引用的失效渠道仍能被筛出。
  • QuickPoint 00f24cf:物流规则弹窗底部新增提示——未关联运输方式的线路即使被选为候选也不会参与规则计算。

批量物流路由弹窗展示运输方式名称 ​

  • QuickPoint be5ceb5:批量物流路由弹窗的渠道下拉支持通过 routeCodeLabels(打单商 route-code-list 映射)展示运输方式名称,与订单行内下拉使用同一份映射。

🐛 重大 Bug Fix ​

打单单件重量换算误除以数量 ​

  • QuoteGo e282346:新增 waybill.UnitWeightKg 统一单件重量换算(WeightG / 1000)。CustomsItem.WeightG 本就是单件克重,此前华磊、软通宝、万邦、云途四家打单系统在构建申报明细时误再除以数量,导致多件订单申报单重偏小。
  • 修复后各打单商按单件重量申报,再各自乘以数量计算行总重,符合接口要求。新增 helpers_test.go 回归测试。

♻️ 重构 / 移除 ​

  • QuoteGo b4cae2c / QuickPoint 3e3940a:LogisticsChannel 绑定字段由文本编码 carrier 改为关联字段 carrier_config(指向 CarrierConfig 账号),后端 Provider 缓存键、凭据读取、渠道加载逻辑同步改造。
  • QuoteGo b4cae2c:移除 CarrierConfig 的 (org_id, carrier) 唯一索引,同一基础物流商现可存在多个账号;新增 name 字段(保存接口层强制必填、组织内唯一)。
  • QuoteGo b4cae2c:GET /api/logistics/carriers 返回结构由 isConfigured / credentials 单账号字段改为 accounts[] 账号列表;test-connection 入参由 channelId 改为 accountId。
  • QuickPoint 7988589:前端版本号由 5.1.0 升至 5.2.0。

🧱 数据库 Schema 变更(需执行迁移) ​

  • 迁移文件:pb_migrations/1840000001_carrier_multi_account.js
  • 变更内容:
    1. CarrierConfig 新增 name 字段(账号自定义名),移除 (org_id, carrier) 唯一索引。
    2. 清除全部存量 CarrierConfig 记录(旧凭据无账号名,需重新配置)。迁移按分页遍历删除,避免一次载入全部记录。
    3. LogisticsChannel 新增 carrier_config 关联字段,移除 carrier 文本字段,并清空旧渠道绑定(不自动迁移重指向)。
  • 执行命令:./quotepilot migrate

⚠️ 部署注意 ​

  1. 需执行数据库迁移:部署前运行 ./quotepilot migrate,否则物流商账号与渠道绑定功能不可用。
  2. 前后端需同时发布 v5.2.0:渠道绑定字段由 carrier 改为 carrier_config、carriers / test-connection 接口结构均有变更,旧前端与新后端(或反之)不兼容。
  3. 迁移会清空存量数据:本次迁移会删除全部旧物流商凭据与渠道绑定,且不可自动恢复。上线后需重新创建物流商命名账号、并在物流公司中重新绑定账号,最后重新选择各线路的运输方式(routeCode)后才能打单。部署前请务必备份数据库。
  4. 行为变更:同一基础物流商可配置多个账号,渠道下拉的物流商选项由「基础物流商」变为「命名账号」,请提醒运营同事按新结构配置。
  5. droppilot 本版无变更。

本版涉及的提交(技术信息)
  • QuoteGo(3 commits,head e282346):b4cae2c 物流商配置重构为多命名账号、渠道绑定改关联账号(含迁移 1840000001_carrier_multi_account.js)、0298f52 新增订单号反查账单接口、e282346 修正单件重量换算误除以数量
  • QuickPoint(4 commits + 版本号,head 480142c):3e3940a 物流商配置支持多命名账号及增删改、00f24cf 校验 routeCode 避免失效渠道被选中打单、be5ceb5 批量物流路由弹窗展示运输方式名、480142c 账单按订单号反查搜索、7988589 版本号升至 5.2.0
  • droppilot:无变更(local main 与 origin/main 一致)

QuickPoint Docs