feat(wst): 发货时效两轮核验完成后各推一次钉钉群 #86
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "yanhui-wst-notify-20261027"
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-27 原话:「发货时效也需要钉钉通知:13 点核验 7 点前的超时单,核验完成后通知;18:00 核验的订单,核验完成后也通知。」
即 一天两推,各自绑一个已存在的核验轮次(
ROUNDS里的NOON13:00 /AFTERNOON18:00),不新增核验口径。改动文件:
backend/src/services/warehouseShipTimelinessNotifySettings.jssystem_config)+ 加签密钥(resilientSecretStore)+ 推送状态backend/src/jobs/warehouseShipTimelinessNotifyJob.jsbackend/src/api/warehouseShipTimeliness.jsnotify/settings(GET/PUT)、notify/state(GET)、notify/run(POST)backend/src/index.jsstartShipTimelinessNotifyScheduler()frontend/src/api/warehouseShipTimeliness.jsfrontend/src/pages/WarehouseShipTimeliness/index.jsxfrontend/src/pages/WarehouseShipTimeliness/style.cssbackend/test/warehouseShipTimelinessNotify.test.js同步与兼容性
GET /list、GET /rounds原样。enabled=false)。未配 webhook 时notify/run返回 400 +missingFields,不查库、不发消息。因此上线后不会自动开始推送,要业务在页面上填 webhook 并打开开关。
warehouse_ship_timeliness_notify_config/_state),不与 WLE 通知互串。DISABLE_WST_NOTIFY=true控制,与DISABLE_WLE_NOTIFY独立。口径要点(容易做错的地方)
query_time要略晚于核验时刻,整点推很容易
freshness.coversDeadline=false(数据没覆盖核验点 → 超时数偏大)。真出现这种情况,消息里会带一行 ⚠️ 提示(快照停到几点、本轮核验点是几点),仍照发。
<北京日期>|<轮次键>,一天两轮各自独立;两个时刻万一配成同一个 HH:mm,两轮都会推(不会只推第一轮)。推送成功才写状态,失败绝不写。
明细里会出现昨天 16:13 审核的单 —— 只写「审核 16:13」会被读成「今天 16:13」,
看着像「审核晚于窗口却还算超时」,业务会对不上账。
验证
node --test test/warehouseShipTimelinessNotify.test.js→ 17/17 通过。npm run check的 syntax 通过;全套node --test test/*.test.js→ 491 tests / 489 pass / 2 fail,失败的
cloudDatabaseConfigCache负缓存用例(依赖数据库不可达才能拒绝,本地可达所以没拒绝)与resilientSecretStore的0o600权限断言(Windows ���0o666)都是既有环境问题,与本改动无关,改动前后基线一致。
eslint src/pages/WarehouseShipTimeliness src/api/warehouseShipTimeliness.js→ 0 错;verify-router-lazy+vite build通过。点「预览正文」出受控预览块(非静态 Modal),无 pageerror。
⚠️ 验收时把
/api/warehouse-ship-timeliness/notify/**全部 mock —— 本地系统库与生产共用,避免把生产配置写坏。
同一时刻请求 18:00 轮返回
before_deadline(未到 18:00 不推半成品),符合预期。风险与回退
DISABLE_WST_NOTIFY=true。index.js里startShipTimelinessNotifyScheduler()一行即可停止调度;新增文件无副作用,不回滚也不影响既有功能。