fix: 免审验收容错与成本中心归一回填超时修复
- worker:等级升级计数移出验收事务,瞬时错误重试一次,最终失败转人工待办且不再返回 500 - worker:待验收阶段修改验收资料时保留 reviewMode/evidenceStatus/evidenceDueAt - cost-center:迁移 107 新增人工待归一覆盖部分索引(生产实测候选聚合 19.6s → 391ms) - cost-center:归一人工商品/按工单回填商品/模板预览前端超时放宽到 300s - cost-center:批处理接口语句超时放宽到 60s(SET LOCAL,在线接口仍为 15s)
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
-- 107_order_items_manual_pending_cover_index.sql
|
||||
--
|
||||
-- 背景(2026-10-29 生产实测):
|
||||
-- 「商品与成本中心 → 归一人工商品」的候选 SKU 聚合,以及「从接单模板初始化」里
|
||||
-- 的归一数量回填,都在 15s statement_timeout 上直接 500:
|
||||
-- · 候选聚合(30 天窗口)19.6s;去掉日期联表 25.1s;换 merge join 27.5s
|
||||
-- · 执行计划是 Bitmap Heap Scan on order_items,命中 102,779 行 / 59,313 个堆块
|
||||
-- (约 460MB 随机读)——现有 idx_order_items_manual_sku_key_stored 只带
|
||||
-- manual_sku_key,sku_name / canonical_product_id / order_id 仍需回表。
|
||||
--
|
||||
-- 这个覆盖部分索引只存「待归一的人工订单项」,让候选聚合与按 id 分批回填都能走
|
||||
-- index-only scan,预计 20 秒级降到 1–2 秒。
|
||||
--
|
||||
-- 迁移在 singleTransaction 里执行(见 migrate.ts),所以这里用普通 CREATE INDEX;
|
||||
-- 生产按 086 的惯例先执行一次 CREATE INDEX CONCURRENTLY 预建,
|
||||
-- IF NOT EXISTS 会直接跳过,部署时不锁表。
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_order_items_manual_pending_cover
|
||||
ON order_items (id)
|
||||
INCLUDE (order_id, manual_sku_key, sku_name)
|
||||
WHERE fulfillment_mode = 'manual'
|
||||
AND canonical_product_id IS NULL
|
||||
AND manual_sku_key IS NOT NULL;
|
||||
|
||||
COMMENT ON INDEX idx_order_items_manual_pending_cover IS
|
||||
'人工商品归一/回填:待归一人工订单项的覆盖索引(2026-10-29 性能修复)';
|
||||
Reference in New Issue
Block a user