fix(wle): 钉钉推送明细精简为「仓|快递单号|快递|异常类型」 #76

Merged
yanhui merged 3 commits from codex/yanhui-wle-detail-no-time-20261022 into main 2026-10-22 13:10:32 +08:00
Collaborator

目的与范围

业务反馈(yanhui,2026-10-22,三条连续要求):

  1. 推送明细不需要带发货时间
  2. 明细里的内部单号换成快递单号
  3. 末尾的「超时时间」(待处理小时数)也不要

明细行最终形态(4 段):

明细一行
原 仓|内部单号|快递|异常类型|发货时间|待处理(6 段)
新 仓|快递单号|快递|异常类型(4 段)

实现要点:

  • 第二段改取 trackingNo(上游 logistic_id)。
    「未揽收 / 无物流单」这类包裹本来就没有快递单号 → 退回内部单号 oId(业务已确认保留该兜底),
    否则群里这条无法定位。
  • 删除仅被该行使用的 shortTime()、formatHours() 及其导出(不留死代码)。
  • 文件头与函数注释写明三条口径,防止以后加回去。
  • 单测:断言正好 4 段、内部单号/发货时间/17.3h 都不出现、无 trackingNo 时退回 oId。

影响范围:仅 warehouseLogisticsExceptionNotifyJob.js 的文本组装 + 对应单测。
前端页面列、导出 Excel 的「内部单号 / 发货时间 / 待处理」列不动(业务只要求改群消息文本)。

同步与兼容性

  • 不涉及数据库、接口签名、配置项变化;历史推送记录不受影响。
  • 消息更短(3543 → 3321 字节),更早、更少地触发 20000 字节截断。

验证

  • node --test test/warehouseLogisticsExceptionNotify.test.js → 15/15 通过。
  • 真实数据干跑(本地 4002,POST /notify/run {dryRun:true},15.9s):
    • 10-22 09:00 核验批次:144 异常 / 列前 30 条 / 3321 字节
    • 实测明细:
      1. 简尚-睢宁仓|DPK379241306151|睢宁德邦|已揽收未中转
      4. 简尚-崔桥工厂仓|79151585840089|新北中通|已揽收未中转
      30. 简尚-山东青岗集仓|320101993512|山东中通快运|已揽收未中转
      
    • 自检:明细段数集合 = [4];/\d+h/ 命中 0;/\d{2}-\d{2} \d{2}:\d{2}/ 命中 0

风险与回退

  • 风险极低:纯展示文本列变化。
  • 回退:git revert <merge-sha>。
## 目的与范围 业务反馈(yanhui,2026-10-22,三条连续要求): 1. **推送明细不需要带发货时间** 2. **明细里的内部单号换成快递单号** 3. **末尾的「超时时间」(待处理小时数)也不要** 明细行最终形态(**4 段**): | | 明细一行 | |---|---| | 原 | `仓|内部单号|快递|异常类型|发货时间|待处理`(6 段) | | 新 | `仓|快递单号|快递|异常类型`(4 段) | 实现要点: - 第二段改取 `trackingNo`(上游 `logistic_id`)。 「未揽收 / 无物流单」这类包裹本来就没有快递单号 → **退回内部单号 `oId`**(业务已确认保留该兜底), 否则群里这条无法定位。 - 删除仅被该行使用的 `shortTime()`、`formatHours()` 及其导出(不留死代码)。 - 文件头与函数注释写明三条口径,防止以后加回去。 - 单测:断言正好 4 段、内部单号/发货时间/`17.3h` 都不出现、无 trackingNo 时退回 oId。 影响范围:仅 `warehouseLogisticsExceptionNotifyJob.js` 的文本组装 + 对应单测。 前端页面列、导出 Excel 的「内部单号 / 发货时间 / 待处理」列**不动**(业务只要求改群消息文本)。 ## 同步与兼容性 - 不涉及数据库、接口签名、配置项变化;历史推送记录不受影响。 - 消息更短(3543 → **3321 字节**),更早、更少地触发 20000 字节截断。 ## 验证 - `node --test test/warehouseLogisticsExceptionNotify.test.js` → **15/15 通过**。 - **真实数据干跑**(本地 4002,`POST /notify/run {dryRun:true}`,15.9s): - 10-22 09:00 核验批次:144 异常 / 列前 30 条 / 3321 字节 - 实测明细: ``` 1. 简尚-睢宁仓|DPK379241306151|睢宁德邦|已揽收未中转 4. 简尚-崔桥工厂仓|79151585840089|新北中通|已揽收未中转 30. 简尚-山东青岗集仓|320101993512|山东中通快运|已揽收未中转 ``` - 自检:明细段数集合 = `[4]`;`/\d+h/` 命中 0;`/\d{2}-\d{2} \d{2}:\d{2}/` 命中 0 ## 风险与回退 - 风险极低:纯展示文本列变化。 - 回退:`git revert <merge-sha>`。
yanhui added 1 commit 2026-10-22 11:41:01 +08:00
业务反馈(2026-10-22):推送明细里不需要发货时间。

- buildDetailLine 从「仓|内部单号|快递|异常类型|发货时间|待处理」
  改为「仓|内部单号|快递|异常类型|待处理小时数」
- 删除仅此处使用的 shortTime() 及其导出,不留死代码
- 文件头补口径说明,防止以后把 sendTime 加回去
- 单测同步:断言新列序,并显式断言消息里不出现 sendTime(传了也不能渲染)
yanhui added 1 commit 2026-10-22 11:46:11 +08:00
业务二次要求(2026-10-22):明细里显示快递单号,不要内部单号。

- buildDetailLine 第二段从 `oId` 改为 `trackingNo`(上游 `logistic_id`)
- 未揽收 / 无物流单的包裹本来就没有快递单号 → 退回 `oId`,
  否则这条在群里无法定位(不让它变成「无单号」)
- 单测:样例带 trackingNo 并断言内部单号不出现;补「无 trackingNo 时退回 oId」用例
- 文件头与函数注释同步口径
yanhui changed title from fix(wle): 钉钉推送明细去掉发货时间列 to fix(wle): 钉钉推送明细改「仓|快递单号|快递|异常类型|待处理」(去掉发货时间与内部单号) 2026-10-22 11:46:31 +08:00
yanhui added 1 commit 2026-10-22 11:56:24 +08:00
业务三次要求(2026-10-22):明细最后面的超时时间也不要。

- buildDetailLine 现在是 4 段:仓|快递单号|快递|异常类型
- 删除仅此处使用的 formatHours()(不留死代码)
- 「无快递单号时退回内部单号」的兜底按业务确认保留
- 文件头/函数注释补第三条口径,单测断言正好 4 段且不含 17.3h 这类时长
yanhui changed title from fix(wle): 钉钉推送明细改「仓|快递单号|快递|异常类型|待处理」(去掉发货时间与内部单号) to fix(wle): 钉钉推送明细精简为「仓|快递单号|快递|异常类型」 2026-10-22 11:56:46 +08:00
yanhui merged commit e9923d7383 into main 2026-10-22 13:10:32 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lunanting/cangku#76
No description provided.