Skip to content

2026-08-17 技术评审-MAC-B端出货明细表806版本异常数据修复技术方案 ​

会议信息 ​

  • 会议主题:B端出货明细表 806 版本异常数据修复技术方案评审(第 1 次)
  • 会议时间:2026-08-17
  • 参与人:马奇、王建朝、潘玉平、孙传熙、余勇军、粱健、李明非、贾继伟、宋洋
  • 评审结果:不通过(需补充异常分类归因与临时表修复流程后再审)

一、技术方案背景 ​

806 版本发版后,data 服务因 MySQL CPU 占用过高出现重启,导致 B端出货明细表中部分数据的货权经销商、产品信息、出货地址、签收地址等字段未写入或写入为空,需批量修复。

二、技术方案要点 ​

1. 修复范围与定时任务拆分 ​

  • 修复对象:货权经销商(名称/编码/5段信息)、产品信息(编码/名称/品牌/规格/生产时间/批次)、出货地址、签收地址。
  • 拆为 4 个定时任务(货权、产品、出货地址、签收地址),按时间分片 + 分页扫描 B端出货明细表空值记录,默认分片 2 小时,支持 job 参数调整。
  • 货权/产品从 Mongo code_info 取数,RPC 兜底查 5 段;出货地址用明细表经纬度调高德逆解析(Redis 缓存 + QPS 限流);签收地址优先取 Mongo 签收单,为空再调高德。

2. 写入与防护策略 ​

  • 批量更新采用 Stream Load,update_time 默认可配(参数开关),避免下游同步压力。
  • 高德调用双重保护:Redis 缓存相同经纬度解析结果 + 限流工具类控 QPS。

3. 评审中暴露的方案缺陷 ​

  • 未做异常归因:17 号仍出现货权经销商空值,溯源发现是经销商财务失效导致 5 段为空,并非 data 服务异常,修复脚本也补不进来,属业务逻辑问题非数据缺失。
  • 直接按 SQL 分页修全表空值,会掩盖代码 bug(签收逻辑未写经销商)和需求问题(失效经销商是否展示 5 段),修完仍会再产生。

三、决议事项 ​

  • 潘玉平暂停执行 B端修复定时任务发版,先将 806 后疑似异常数据全量导出,按"data服务异常 / 代码bug / 经销商失效 / 经纬度无法解析"分类统计条数与占比,更新进技术文档再审。
  • 货权经销商 5 段信息在财务失效场景下是否必填,需产品确认逻辑后再决定补数规则。

四、方案地址 ​

https://yldc.coding.yili.com/p/sip-mac/wiki/53861