Appearance
Release Notes (2026-09-15)
✨ 重点 Feature
跨项目联动:物流商配置重构为多命名账号
- QuoteGo
b4cae2c、QuickPoint3e3940a:同一基础物流商可创建多个自定义命名账号(如「无锡云途」「深圳云途」),每个账号独立维护凭据;物流公司/渠道的绑定对象由「基础物流商编码」改为「命名账号」。 - 物流商配置页由原先「一个基础物流商一行」改为「按基础物流商分组,组内列出该组织创建的命名账号」,支持添加、编辑、删除账号,账号名在组织内唯一。
- 测试连接支持两种入口:编辑已保存账号时按账号 + 表单值 merge 校验;新建账号时直接按选择的基础物流商 + 凭据校验。
- 删除仍被物流渠道引用的账号会被拒绝(返回「已被物流渠道使用」),防止渠道打单断链。
- 渠道加载打单实例的缓存键由「组织 + 基础物流商」改为「组织 + 账号 ID」,切换账号后按账号读取凭据。
物流配置 — 物流商账号
| 基础物流商 | 命名账号 | 状态 | 操作 |
|---|---|---|---|
| 云途物流 | 无锡云途 | 已配置 | 编辑 删除 |
| 云途物流 | 深圳云途 | 已配置 | 编辑 删除 |
| 华磊物流 | (暂无账号) | — | 添加物流商 |
跨项目联动:账单支持按订单号反查搜索
- QuoteGo
0298f52、QuickPoint480142c:账单管理列表的搜索框在客户名、账单号之外,新增支持用订单号反查账单。 - 由于
Invoices表本身不存订单号,后端新增GET /api/invoices/order-number-invoices?q=订单号,经Orders.invoice精确反查命中的账单 ID(兼容带/不带#前缀),前端将结果并入列表过滤条件。 - 前端同时用账单的
first_order_number/last_order_number快照做等值匹配,覆盖账单区间两端以及已归档订单(已移出主库、无法反查)的场景。
账单管理 — 按订单号搜索
搜索:#10086 搜索
| 账单号 | 客户 | 订单区间 | 金额 |
|---|---|---|---|
| INV-2026-0912 | Acme | #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/ QuickPoint3e3940a: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 - 变更内容:
CarrierConfig新增name字段(账号自定义名),移除(org_id, carrier)唯一索引。- 清除全部存量
CarrierConfig记录(旧凭据无账号名,需重新配置)。迁移按分页遍历删除,避免一次载入全部记录。 LogisticsChannel新增carrier_config关联字段,移除carrier文本字段,并清空旧渠道绑定(不自动迁移重指向)。
- 执行命令:
./quotepilot migrate
⚠️ 部署注意
- 需执行数据库迁移:部署前运行
./quotepilot migrate,否则物流商账号与渠道绑定功能不可用。 - 前后端需同时发布 v5.2.0:渠道绑定字段由
carrier改为carrier_config、carriers/test-connection接口结构均有变更,旧前端与新后端(或反之)不兼容。 - 迁移会清空存量数据:本次迁移会删除全部旧物流商凭据与渠道绑定,且不可自动恢复。上线后需重新创建物流商命名账号、并在物流公司中重新绑定账号,最后重新选择各线路的运输方式(
routeCode)后才能打单。部署前请务必备份数据库。 - 行为变更:同一基础物流商可配置多个账号,渠道下拉的物流商选项由「基础物流商」变为「命名账号」,请提醒运营同事按新结构配置。
- 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一致)