feat(wst): 发货时效改用订单两表 + 起算点改为订单创建时间 #88
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "yanhui-wst-order-source-1028"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
目的与范围
业务 2026-10-28 定版:「核验抓取的销售订单表是错误的,应该在数据库抓
jst_Orders(订单)+ jst_OrderItem(明细),审核时间就是 jst_Orders 里的创建时间」。
为什么换数据源(状态镜像表的硬伤,均有实测)
send_time漏回写:近 7 天「状态表说发货中+未发」的 4157 单里,订单表已有
send_date的 563 单、status 已是 Sent 的 492 单 —— 发了还算超时。34 单里混着已发货的。
改了什么
后端
rpt.jst_Orders+rpt.jst_qmcust_orderlist(店铺互斥,UNION ALL,按 o_id 去重),SQL 侧过滤
send_date IS NULL+status IN (Delivering/WaitConfirm/Question)。last_oa_confirm_time改为订单表created;实测 created 100% 早于审核时间,正常单差 7
40 分钟,夜间下单次日审的单差 69 小时—— 换口径后单量与「已等时长」都会变大,业务已知悉。
wms_co_id,Node 侧用仓表缓存换仓名再走resolveCenter()(实测 SQL 里 LEFT JOIN 仓表会把查询从 28s 拖到 61~105s)。
OPTION (RECOMPILE)+ 时间字面量:qmcust 不加 RECOMPILE 实测 33~50s,加上 0.4s。backfillOrderFacts()与mapLimit()(起算点/状态/仓名已由主查询一次取全)。is_split / is_merge过滤 —— 实测is_split=1恰是拆单子单(同一 so_id 多行、各自要发货,近 30 天 1096 行),老逻辑
is_split=0会把它们全排掉。前端
测试
created 起算、候选状态白名单、SQL 必须带 RECOMPILE / 不含状态镜像表 / 不 JOIN 仓表。
验证
npm --prefix backend run check:491/493 通过。2 项失败是既有环境问题:resilientSecretStore(Windows 文件权限 0o666≠0o600)、cloudDatabaseConfigCache负缓存 TTL(依赖隧道状态),均与本改动无关,单独跑同样失败。数据质量:无仓名 0 / 时间异常 0 / 含 undefined|null|NaN 0;
单次查询耗时 35~38s(30 天护栏,冷缓存)。
表头
…发货时间 / 创建时间 / 付款时间…、轮次提示「核验今天 07:00 前创建的订单」、「导出明细」导出 CSV 表头含「创建时间」共 1551 行数据 + 1 行表头,无 pageerror。
风险与回退
属业务确认后的预期结果。
这类单现在按正常单算超时;如业务反馈,可单独补查。