yanhui
be52bdd0b5
feat(配件库存监控/MKH-BOM): 两页面新增「同步最新数据」按钮
需求:配件库存监控、MKH-BOM 资料两个页面各加一个同步按钮,任何时候点击都能
立即拉取最新数据,不必等凌晨 00:00 的定时刷新。
后端:
- mkhBomService 新增 clearMkhBomCache():清空本页全部服务端缓存
(businessBom / officialBomIndex / officialBomDetail / productBom /
mkhProduct / replenishIndex / workOrderIndex / pendingOrderIndex /
componentStock / componentLocation),返回 syncedAt + 各缓存清除条目数。
- modularStockMonitorService 新增 syncModularStock():本页无进程内缓存
(每次请求直连副本库),同步动作 = 重新解析并返回最新监控日,前端据此重拉列表。
- 新增接口 POST /api/mkh-bom/sync、POST /api/modular-stock-monitor/sync。
前端:
- api/mkhBom.js 新增 syncMkhBom;api/modularStockMonitor.js 新增 syncModularStock。
- 两个页面工具栏各加「同步最新数据」主按钮(SyncOutlined,带 loading 态),
点击 → 调后端 sync → 成功后重新拉列表(MKH-BOM 页同时清空展开明细缓存
detailCache,避免看到旧的配件明细)→ 提示「已同步最新数据」;
失败时展示后端返回的错误信息。
口径说明(重要):
- 两页数据来自副本库 JSReportReplica,由上游聚水潭同步;应用层无法触发上游拉取。
本按钮的作用是「清服务端缓存 + 直连副本库重取最新」,保证看到的不是
2~15 分钟前的缓存结果,而不是重新跑一遍上游同步。
- 后端已内置的 dailyRefresh(cron 0 0 * * *,Asia/Shanghai)刷的是
summary_daily_* / summary_monthly_* 汇总表,不覆盖这两页数据源,
与本按钮既不重复也不冲突,可并存。
验证:
- 后端 4 个改动文件 node --check 全部通过。
- 前端 4 个改动文件(含 2 个 jsx)用 @babel/parser 解析全部通过。
- 实测:syncModularStock 返回 monitorDate=2026-09-16;
clearMkhBomCache 返回 syncedAt 与各缓存清除条目数。
- 单测 mkhBomService.test.js 40/40 通过,无回归。
- 前端 lint/build 未运行:frontend/node_modules 仍是之前被中断 npm ci 破坏的
坏目录(frontend/node_modules_broken_0917/,未纳入提交)。
合并前需在本机 npm ci 恢复后,打开两个页面确认按钮渲染与点击效果。
- 后端改动需重启服务后才生效。
2026-09-17 18:14:57 +08:00
..
2026-09-12 11:51:44 +08:00
2026-09-12 11:51:44 +08:00
2026-09-12 11:51:44 +08:00
2026-09-15 16:53:12 +08:00
2026-09-15 16:53:12 +08:00
2026-09-17 18:14:57 +08:00
2026-09-17 15:04:50 +08:00
2026-09-12 16:53:18 +08:00
2026-09-12 17:13:59 +08:00
2026-09-12 11:51:44 +08:00
2026-09-12 16:53:18 +08:00
2026-09-12 11:51:44 +08:00
2026-09-12 11:51:44 +08:00
2026-09-12 21:34:07 +08:00
2026-09-15 16:53:12 +08:00
2026-09-12 11:51:44 +08:00