feat: 新增「仓储中心物流转运异常」页面(12 发货仓 · 每日 09:00 核验前一日已发货物流) #71
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "codex/yanhui-wle-20261022-01"
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?
目的与范围
services/warehouseLogisticsExceptionRegistry.js、services/warehouseLogisticsExceptionService.js、api/warehouseLogisticsException.js、test/warehouseLogisticsException.test.jssrc/index.js(挂载/api/warehouse-logistics-exception,+3 行)pages/WarehouseLogisticsException/{index.jsx,style.css}、api/warehouseLogisticsException.jsconfig/sidebarNavigation.js(左侧栏「仓储中心物流转运异常」,排在发货时效下面)、router/index.jsx、layouts/BasicLayout.jsx口径要点(业务 2026-10-21 / 10-22 定版)
京仓-横林二仓京东云仓排除。无物流单/未揽收/已揽收未中转/快递报异常/退回。运输中、派送中、已签收一律正常 —— 干线与中转轨迹本就不回传聚水潭,原先「24h 无新轨迹 = 运输停滞」已废弃。force=1绕过。Asia/Shanghai取「今天」,避免生产容器Etc/UTC导致核验批次错位(同 #70 的教训,未改容器 TZ)。同步与兼容性
42f60eb0cef65264b9b5245fc622db1cd9e2a06f42f60eb0cef65264b9b5245fc622db1cd9e2a06f(建 PR 时 0 落后 / 0 领先)db1ba79416cfa750bf2210d78f9f3c30ab0c1bd8backend/.env;仅在src/index.js追加一条路由挂载。git diff origin/main...HEAD仅含上述 11 个文件)。git status确认未触碰他人未提交修改���git diff --stat origin/main逐个复核,除index.js+3 行外全部是新增文件;未改动AGENTS.md/ 仓库规范 / 部署规范。验证
实际执行的命令及结果(本地隔离环境,非生产库;生产只读不改):
node --test backend/test/warehouseLogisticsException.test.jsnpm --prefix backend run checknode --test448 tests / 446 pass / 2 fail(见下,与本任务无交集)npm --prefix frontend run check/api/warehouse-logistics-exception/list?force=1未通过项说明(均不在本 PR 改动文件内,属既有/环境相关失败,单独复跑可稳定复现):
cloudDatabaseConfigCache.test.js→负缓存带 TTL:TTL 内不重复解析,到期后必须重试(Missing expected rejection)。本地业务库可达,负缓存路径不触发;与本 PR 无交集。resilientSecretStore.test.js→secret backup survives outside the repository with owner-only permissions(438 !== 384)。Windows 下文件权限位断言差异,仓库既有失败。人工验证路径:本地起后端 4002 + 前端 5173,左侧栏「仓储中心物流转运异常」→ 选核验日 → 核对分仓统计卡、异常类型筛选、明细列、页脚剔除口径;物流快照停更时黄/红告警正常弹出。
风险与回退
Registry常量里,改一处即可,页脚会自动跟随。force=1手动刷新;数据量增长后需评估缓存命中率。index.js一条挂载,回退只需git revert该合并提交;不涉及数据库迁移,无数据兼容性问题(只读查询)。合并授权记录(规范第 6 节 · 路径二)
codex/yanhui-wle-20261022-01→main,11 文件 / +2198 行)的合并,以及该合并提交的生产部署;不含其他 PR、不含强推 main。db1ba79416cfa750bf2210d78f9f3c30ab0c1bd8- 后端新增 warehouse-logistics-exception 模块(Registry / Service / Api), 挂载 /api/warehouse-logistics-exception;前端新增独立页面并接入左侧栏 「仓储中心物流转运异常」(排在「仓储中心 24 小时发货时效」下面)。 - 核验口径:核验日 09:00 看**前一日已发货**订单的物流记录;12 个发货仓按仓库名 最长匹配归口(子仓并入主仓,「京仓-横林二仓京东云仓」排除)。 只统计揽收前的卡点:无物流单 / 未揽收 / 已揽收未中转 / 快递报异常 / 退回; 运输中、派送中、已签收一律正常(干线与中转轨迹本就不回传,不再按 24h 判停滞)。 明细按包裹、汇总按内部单号去重;结果缓存 5 分钟,force=1 可绕过。 - 剔除口径(业务 2026-10-21 / 10-22 定版,剔掉的既不算异常也不算发货分母): · 承运商:顺丰系全部(唯品顺丰 / 顺丰干配 / 顺丰大件各账号)、武进安能、中铁、 壹米滴答、京喜京东(快递·快运)、自提、线下、商家配送; · 有条件剔除:睢宁中通只在睢宁仓考核,其它仓异地打单的剔出; · 订单已终止:状态含取消/作废,或标签含「发货后取消」「作废」「拦截」; · 刷单 / 信誉单:订单标签含「刷单」「转空包」。 「武进安能」「京喜京东」均按精确粒度匹配,不泛化成「安能」「京东」,避免误剔 常州安能新、京东自营快递亿家达等正常账号。 - 时区:模块内统一用 Asia/Shanghai 取「今天」,避免生产容器 Etc/UTC 导致核验批次错位。 - 页面:分仓统计卡 + 异常类型筛选 + 明细(承运商 / 运单号 / 物流状态 / 异常标签 / 最后轨迹 / 发货时间 / 待处理小时),页脚展示剔除口径与本批剔除量; 物流快照停更按黄/红两级告警,并标注「历史批次按当前物流快照重算」。 验证(本地隔离环境,非生产库): - node --test backend/test/warehouseLogisticsException.test.js → 24/24 通过 - npm --prefix frontend run check → 通过 - 本地真实数据接口实测:顺丰系、睢宁中通(异地仓)明细 0 条残留合并授权记录(规范第 6 节 · 路径二)
codex/yanhui-wle-20261022-01→main,11 文件 / +2198 行)的合并,以及该合并提交的生产部署;不含其他 PR、不含强推 main。db1ba79416cfa750bf2210d78f9f3c30ab0c1bd842f60eb0cef65264b9b5245fc622db1cd9e2a06f合并前校验结果
git rev-list --count HEAD..origin/main= 0(基线未前进)node --test backend/test/warehouseLogisticsException.test.js→ 24/24 passnpm --prefix frontend run check→ EXIT=0npm --prefix backend run check→ 446/448 pass,2 个失败均在未改动文件(配置负缓存 / Windows 权限位断言),已在 PR 正文说明