Appearance
Release Notes (2026-09-21 ~ 2026-09-22)
✨ 重点 Feature
跨项目联动:店铺放行与跨组织转移
- QuickPoint:在「客户」模块的客户详情中,对已取消的店铺,组织所有者可执行「放行转移」。放行前会弹窗二次确认,提示放行后该店铺可被其他账号重新绑定;完成重新绑定后,原账号将失去该店铺全部历史订单与账单的访问权。放行后店铺状态显示为「已放行 · 待转移」。
- QuoteGo:接收方在 Shopify 重新授权该店铺时,若原组织已放行即可完成绑定;未放行则拒绝并提示「该店铺由其他组织持有,需对方先放行」。转移时该店铺的历史订单、包裹、工单、账单、库存、标签等关联数据一并划归新组织,原组织不再可见。
- 同一组织内更换客户或重新安装店铺无需放行;处于「连接正常」状态的店铺不允许被其他组织绑定,避免误抢。
- 店铺被取消或放行后,商家端不再将该店铺视为可用店铺。
- 转移完成后,系统向原组织所有者发送邮件通知,内容包含店铺域名、接收组织、放行时间与完成时间。
- 放行为单向操作,放行后无法撤销。
客户详情 — 关联店铺
| 店铺 | 状态 | 操作 |
|---|---|---|
| shop-a.myshopify.com | 状态:连接正常 | 删除 |
| shop-b.myshopify.com | 状态:已取消 | 放行转移 删除 |
| shop-c.myshopify.com | 已放行 · 待转移 | 等待对方绑定 |
放行前二次确认:放行后该店铺可被其他账号重新绑定;完成重新绑定后,你将失去该店铺全部历史订单与账单的访问权。
跨项目联动:查看 Shopify 履约状态
- QuickPoint:包裹的详情弹窗新增「查看 Shopify 履约状态」入口,以只读弹窗展示该订单在 Shopify 侧的履约情况:订单级履约状态、每个履约单的状态与请求状态、可执行操作、履约地点、配送方式、已发货商品及运单号、未发货商品及剩余数量;可展开查看原始数据并复制。
- QuoteGo:新增履约状态查询接口;同时修复店铺授权凭据自动续期时取错店铺域名、导致部分店铺续期失败的问题。
- 用途:当 Shopify 回写失败时,可直接查看 Shopify 侧的真实履约单状态以定位原因。
- 前置条件:店铺需重新授权并授予履约单读取权限;由第三方履约服务管理的行项目可能不在可见范围内。
Shopify 履约状态
订单:1024 履约状态:PARTIALLY_FULFILLED
| 履约单状态 | 请求状态 | 可执行操作 | 履约地点 |
|---|---|---|---|
| OPEN | UNSUBMITTED | CREATE_FULFILLMENT | 某某仓库 |
发货商品:YT123456789 × 1 未发货:无线蓝牙耳机 × 2
可展开「原始 JSON」查看并复制,用于 Shopify 回写失败时排查。
🚀 其他 Feature
新增诚创物流、驹隙物流两家承运商
- 运单配置新增「诚创物流」与「驹隙物流」两家承运商,可在物流渠道中选用并打单。
标记发货增加确认弹窗,订单列表显示拆包徽标
- 在订单的「物流」标签页对已选中订单点击「标记已发货」时,弹出确认弹窗(「确认将所选 N 个订单标记为已发货并回写 Shopify?」),确认后才会回写 Shopify。
- 已拆分的订单在订单号旁常显「拆分 N」徽标,无需打开拆分弹窗即可识别。
标记已发货 — 确认
确认将所选 2 个订单标记为已发货并回写 Shopify?
取消 标记已发货
订单列表 — 拆分徽标
| 订单号 | 状态 |
|---|---|
| #19807 拆分 2 | 已发货 |
| #19808 | 待结算 |
包裹数大于 1 的订单常显「拆分 N」徽标。
物流试算结果支持按线路或物流公司搜索
- 物流试算的结果列表新增搜索框,可按线路名称或物流公司名称过滤;关键字为空时展示全部结果。
- 无匹配结果时提示「未找到匹配线路」;弹窗每次打开会清空上一次的搜索词。
物流试算 — 试算结果
搜索线路或物流公司...
| 线路 / 物流公司 | 运费 |
|---|---|
| 美国专线 / 云途物流 | ¥ 68.00 |
| 美国经济小包 / 云途物流 | ¥ 52.00 |
无匹配结果时提示「未找到匹配线路」。
分页新增首页、末页与页码跳转
- 列表分页新增「首页」「末页」按钮,并提供「跳至 第 N 页」的跳转输入框(回车或点击「跳转」生效,超出范围自动收敛到有效页码)。
- 分页控件改为按自身可用宽度自适应换行,在右侧栏被拖窄时不再挤压。
列表分页
显示 1 - 20 / 共 320 50 条/页
首页 上一页 1 2 3 下一页 末页
跳至 3 页 跳转
历史报价返回时恢复筛选、页码与滚动位置
- 在会话内从报价计算页返回「历史记录」时,自动恢复上一次的搜索词、日期范围、状态筛选、页码与列表滚动位置。
- 该状态仅在当前会话(标签页)内保留,关闭标签页后不保留。
🐛 重大 Bug Fix
整单商品行全部取消或退款的订单自动落终态
- 订单在 Shopify 侧的商品行被全部取消或退款后,不再滞留在「待确认」队列:同步时自动进入终态——有整单取消时间的记为「已取消」,财务状态为退款类的记为「已退款」,其余按「已取消」处理。
- 仅处理尚未确认的订单,已确认、已开票的订单不受影响。
- 存量数据由迁移脚本一次性回填(见下方数据库变更)。
物流渠道名称支持两行显示
- 物流渠道下拉中的「渠道名 / 线路名」由单行截断改为最多两行展示,长名称不再被右侧价格挤占;鼠标悬停可查看完整名称。
备份包不再包含同步日志
- 每日备份包不再包含对象存储同步的日志文件(该日志写在数据目录根下,仅用于诊断,无业务数据)。
♻️ 重构 / 移除
Shopify 回写改为整包分类与原子提交
- 一个包裹的所有行项目在回写前先统一分类,再一次性提交:全部可回写且属同一履约单时提交;跨多个履约单或存在不可回写的行项目时整包失败并给出原因,避免出现部分行项目已回写、部分未回写的情况。
- 永久性失败(如已履约、不可操作、不可见、跨多履约单)不再自动重试,留待人工处理。
🧱 数据库 Schema 变更(需执行迁移)
本版共 2 个迁移脚本,按时间戳顺序执行,命令:./quotepilot migrate
2026092210_store_transfer.jsStores新增「放行时间」released_at与「放行操作人」released_by两个字段。- 新建「店铺转出审计」集合
store_transfer_logs:仅服务端写入(PB API 层全部拒绝),转出方与转入方组织各自只读,记录店铺、域名快照、转出/转入组织与操作人、客户归属快照、放行与完成时间、状态及失败原因。
2026092200_orders_all_items_cancelled_terminal_status.js- 无结构变更,仅将符合条件的未确认订单一次性回填为终态(无原始状态快照,不可自动回滚)。
⚠️ 部署注意
- 需执行数据库迁移:部署前运行
./quotepilot migrate,按时间戳顺序执行上述 2 个脚本;迁移在后端启动时执行,完成后需重启后端。 - 前后端需同时发布 v5.2.2:店铺放行转移与 Shopify 履约状态查看均为前后端联动功能,旧前端或旧后端会导致接口不可用。
- 放行为单向操作:放行后无法撤销,且完成重新绑定后原组织失去该店铺全部历史数据访问权,请提醒运营在放行前确认。转移会同步改写历史归档数据,改写失败会在审计记录中标记为失败,但不会中断转移本身。
- Shopify 履约状态查看需授权:需在店铺重新授权时授予履约单读取权限;由第三方履约服务管理的行项目可能不可见。
- 承运商注册需重启生效:新增的诚创物流、驹隙物流写入运单承运商注册表,需重启后端后生效。
- droppilot 本版无变更。
本版涉及的提交(技术信息)
- QuoteGo(7 commits,head
25ce245):ee7b366店铺跨组织转移与放行(放行接口、转移事务、审计集合、转移通知邮件、迁移2026092210_store_transfer.js)、bcb6cb1整单商品行全部取消自动落终态并回填存量(迁移2026092200_orders_all_items_cancelled_terminal_status.js)、7aea0a0新增驹隙物流运单配置、2c406b0新增 Shopify 履约状态查询接口并修复 token 续期域名错误(domain1→domain)、d693bf6备份排除 rclone 同步日志、341c8a2Shopify 回写重构为整包分类与原子计划、b56dfc1新增诚创物流运单配置 - QuickPoint(7 commits,head
9a757eb):a27a037客户模块新增已取消店铺放行转移、dee5306物流试算结果按线路/公司搜索及空态提示、08d89b0标记发货确认弹窗与拆包徽标、90fcc38Shopify 履约状态弹窗查看、115baa0物流渠道名两行展示并补充 title、1e4a5cd历史报价会话级恢复筛选/页码/滚动位置、33133be分页新增首页末页与页码跳转并支持容器自适应 - droppilot:无变更(
local main与origin/main一致)