feat(wle): 钉钉推送明细按仓聚集,并给每个仓保底 1 条 #79
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "codex/yanhui-wle-group-by-warehouse-20261022"
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?
目的与范围
业务要求:钉钉群推送的异常明细「按照仓库来,相同仓库排序在一起」,方便各仓在群里只看自己那一段。
本次只改推送正文的组装,不动查询、不动页面列表:
bucketRowsByWarehouse/groupRowsByWarehouse)pendingHours降序,压得最久的排最前),不重新排序pickDetailRows)slice(0, 40)会让 40 条明细全是同一个仓、其余 6 个仓一条都看不到同步与兼容性
e9923d7;期间 main 前进 2 个提交(#78 缺货补货监控),改动文件零重叠(那 2 个提交只动binReplenish*与BinReplenishMonitor)验证
单测 19/19 通过,新增 4 条:
本地真数据干跑(
POST /notify/run {dryRun:true},140 条异常 / 列 40 条 / 4219 字节):[4]→ 仍是 4 段,没有把时间/时长带回来backend/scripts/check-syntax.js:194 文件通过风险与回退
git revert本提交即可,纯函数改动,无数据/状态影响。业务要求:推送明细「按照仓库来,相同仓库排序在一起」,方便各仓在群里只看自己那一段。 改动: 1. 明细按仓分桶后连续输出(groupRowsByWarehouse / bucketRowsByWarehouse) - 组间:按该仓异常包裹数降序,与上面「按仓(异常包裹)」块顺序一致;数量相同按首次出现顺序 - 组内:保持服务层原顺序(已按 pendingHours 降序,压得最久的排最前),不重新排序 - 仓名缺失的行统一归到「未知仓」一组,不会被拆成散行 2. 取前 N 条改为按仓配额(pickDetailRows) - 真数据验证时发现:140 条异常里山东青岗集仓占大头,直接 slice(0,40) 会让 40 条明细全是同一个仓、其它 6 个仓一条都看不到 - 规则:仓数 >= 额度时每仓 1 条(砍掉异常最少的仓);否则每仓先保底 1 条, 剩余额度按各仓剩余条数比例分(最大余数法,总数正好等于额度) 3. 明细仍是 4 段「仓|快递单号|快递|异常类型」,编号全局连续,不带时间/时长 验证: - 单测 19/19 通过(新增 4 条:同仓相邻+组内不乱序、未知仓归组、大仓不吃满额度、额度少于仓数) - 本地真数据干跑(140 条异常 / 列 40 条 / 4219 字节):明细覆盖 7 个仓, 同仓全部相邻、无任何仓被拆散;明细段数集合 [4] 各仓条数:青岗集 31 / 崔桥 2 / 洛宁 2 / 睢宁 2 / 山东品牌 1 / 新苏北 1 / 崔桥品牌 1 - backend check-syntax:194 文件通过 风险与回退:只改推送正文的组装顺序与取数配额,不动查询、不动页面列表; 页面仍按时长降序展示全部明细。回退只需 revert 本提交。