1134 字
6 分钟

2026-06-16|订单关注 V3:发运集维度状态检测架构升级

一、今日工作概述#

今天主要完成订单关注 V3 版本的设计与开发工作,对现有订单关注机制进行了架构升级。

在前期 V2 版本基础上,针对多发运集订单状态检测不准确、推送粒度过粗、自动完成逻辑不合理等问题,完成了发运集维度状态检测方案设计、数据库结构改造、数据链路梳理以及核心代码实现方案制定,并同步完成技术文档沉淀。

本次改造将订单关注能力从”订单级状态检测”升级为”发运集级状态检测”,实现发运集独立跟踪、独立推送、独立状态判断,为后续订单物流跟踪能力提供更精准的数据支撑。

二、需求背景#

1. V2 版本存在的问题#

前期订单关注 V2 采用订单级状态检测模式。但在实际业务中发现:

  • 一个订单可能包含多个发运集(bundleIdMini);
  • 不同发运集具有独立物流状态;
  • V2 仅保存订单级状态;
  • 多个发运集状态会发生覆盖;
  • 无法识别具体哪个发运集发生变更;
  • 任意发运集到货即完成关注逻辑不合理。

2. V3 改造目标#

  • 检测粒度升级至发运集维度;
  • 发运集状态独立存储;
  • 发运集状态独立推送;
  • 支持预计发货时间变更通知;
  • 支持发货通知;
  • 支持到货通知;
  • 所有发运集均完成后才自动结束关注。

三、核心开发内容#

1. 数据模型升级#

新增 bundle_snapshot_json 字段,用于存储发运集级状态快照。快照结构采用 JSON 形式保存每个发运集的状态与预计发货时间,实现精细化状态比对。

2. 发运集维度检测架构设计#

重新设计订单关注核心检测流程:

读取历史快照
→ 批量查询当前状态
→ 逐订单逐发运集比对
→ 推送通知
→ 写回快照

检测粒度由 订单号 → 状态 升级为 订单号 → 发运集 → 状态

3. Mapper 层改造#

新增 batchSelectBundleStates() 实现按发运集维度批量查询:orderTid、bundleIdMini、stateName、deliverPredictDate、finalCustomer、productNames、expressNum,并统一订单关注与订单交付查询的数据来源。

4. Service 层改造#

完成发运集快照能力设计:

  • parseBundleSnapshot() / toBundleSnapshotJson()
  • batchGetBundleSnapshot() / batchUpdateBundleSnapshot()
  • autoCompleteIfAllTerminal():判断所有发运集均完成后自动结束关注

5. Scheduler 重构#

重构订单关注调度逻辑,实现:发运集检测、发货状态推送、到货状态推送、预计发货时间变更推送、发运集消失处理、全发运集终态自动完成。

四、推送能力优化#

发货通知#

包含:订单编号、最终客户、发运集编号、产品名称、发货时间、物流单号

到货通知#

包含:订单编号、客户名称、发运集编号、产品名称、到货时间

预计发货时间变更通知#

包含:原预计发货时间、新预计发货时间、当前状态、发运集编号

五、今日工作产出#

  • 完成订单关注 V3 总体方案设计
  • 完成发运集级快照模型设计
  • 完成数据库改造方案设计
  • 完成 Scheduler 重构方案设计
  • 完成推送规则设计
  • 沉淀《订单关注 V3 — 发运集维度推送方案》和《订单关注 V3 — 技术文档》

六、遇到的问题与解决情况#

问题 1:多发运集状态覆盖#

  • 原有结构只能保存单一订单状态
  • 解决:升级为订单号 + 发运集双层结构,实现发运集独立检测

问题 2:自动完成逻辑不准确#

  • 原有逻辑任意发运集到货即完成关注
  • 解决:新增全部发运集终态判断机制,仅全部完成后自动结束关注

问题 3:推送内容缺乏定位信息#

  • 用户无法判断具体哪个发运集发生变化
  • 解决:推送文案增加发运集编号、产品名称、客户名称等关键信息

七、明日计划#

  • 开始订单关注 V3 代码正式开发与联调
  • 完成数据库变更脚本执行
  • 完成 Mapper 和 Service 层开发
  • 完成 Scheduler 重构实现
  • 完成发货、到货和时间变更通知验证
  • 推进订单关注 V3 功能上线准备工作
2026-06-16|订单关注 V3:发运集维度状态检测架构升级
https://jupiter-ws.cn/posts/internship/实习日报-2026-06-16/
作者
Jupiter
发布于
2026-06-16
许可协议
CC BY-NC-SA 4.0