perf(finance): 消除定时同步与后台页面的重查询

- 新增 order_items.manual_sku_key 生成列(迁移 106),统一内部 SKU 口径(skuNick → outSkuSn → sku_code → sku_name,去空格)
- 人工渠道匹配 8.4s → 62ms;人工商品归一写回 7.0s → 307ms
- 销售事实重算改为物化订单集合 + 预聚合成本/退款,6.9s → 0.5s 内
- 成本异常写入去掉逐项 LATERAL 工单探测,收口按最近 7 天窗口,7–8s → 0.5s 内
- 销售毛利订单统计去掉重复 NOT EXISTS,9.4s → 0.4s
- 接单平台店铺下拉改 EXISTS 半连接,3.1s → 0.3s
- cost-finance-sync 默认间隔 5 分钟 → 15 分钟;完整同步 51.2s → 34.9s
This commit is contained in:
yml2213
2026-10-28 13:41:11 +08:00
parent 08318ef8d9
commit 915ce017f3
8 changed files with 145 additions and 82 deletions
@@ -492,10 +492,12 @@ export async function listWorkOrders({
*/
export async function listWorkOrderShopNames(): Promise<string[]> {
const result = await query<{ shop_name: string }>(
// 从 orders 出发 + EXISTS 半连接:18 万工单的 hash join 实测 3.1 秒,
// 改成 orders 驱动后走 idx_work_orders_order_id 半连接,约 0.3 秒。
`SELECT DISTINCT BTRIM(o.shop_name) AS shop_name
FROM work_orders wo
INNER JOIN orders o ON o.id = wo.order_id
FROM orders o
WHERE BTRIM(o.shop_name) <> ''
AND EXISTS (SELECT 1 FROM work_orders wo WHERE wo.order_id = o.id)
ORDER BY shop_name ASC`,
)
return result.rows