This commit is contained in:
2026-08-08 12:01:52 +08:00
parent bc14ec7bd2
commit 24af934198
3 changed files with 25 additions and 6 deletions
+3 -3
View File
@@ -33,13 +33,13 @@
## 一期/二期/三期 Admin 快速索引
按阶段处理需求时,先核对仓库根目录对应阶段文档,再进入下列模块;阶段范围高于原型中的全量菜单。模块代码均从 `src/` 起算。
按阶段处理需求时,先核对仓库根目录对应阶段文档,再按“模块目录 → `routes.ts`/页面 → `api`/类型”定位;阶段范围高于原型中的全量菜单。模块代码均从 `src/` 起算。本表只描述 Admin 页面、路由和前端契约,不替代后端模块指引。
| 阶段 | Admin 范围与入口 | 当前边界 |
|---|---|---|
| 一期:头程订单闭环 | `modules/auth/` 登录;`customers/` 客户与企业审核;`iam/` 内部用户、角色、权限;`warehouses/` 平台收货仓;`master-data/` 快递公司、往来单位;`first-leg-orders/` 头程订单;`dashboard/` 工作台 | 功能基本完成,处于测试环境部署、样本补齐和验收收口;企业审核已合并客户列表,平台 RBAC 仅维护平台员工与平台权限资源 |
| 二期:到仓与头程计费 | `modules/inbounds/` 入库预报、收货、测量/OCR、审核、差异与费用快照;`warehouse-resources/pallets/` 托盘;`warehouse-resources/locations/` 库位;`fba-pricing/`、`dimension-config/` 计费规则与尺寸配置;`unified-orders/` 订单工作流编排 | 技术闭环完成,验收终点为 `WAIT_SPLIT + APPROVED + CONFIRMED`(等待三期分柜);海外仓阶梯费用仅后端契约已具备,前端联调仍需单独确认;不得把内部备注、文件或租户上下文泄露给 Client |
| 三期:国内出仓 | 当前无正式三期模块;规划复用 `first-leg-orders/`、`unified-orders/`、`inbounds/` 的订单与入库工作流页面,新增出仓能力时按稳定契约拆分模块 | 当前 NO-GO。先解除 `../../docs/三期/三期需求确认表.md` 的 P3-Q1/Q2/Q5/Q9/Q11/Q12/Q13 等阻断项;不得把原型中的分柜、装柜、报关、港务或完整 WMS 菜单提前展示 |
| 二期:到仓与头程计费 | `modules/inbounds/` 入库预报、收货、测量/OCR、审核、差异与费用快照;`warehouse-resources/pallets/` 托盘;`warehouse-resources/locations/` 库位;`fba-pricing/`、`dimension-config/` 计费规则与尺寸配置;`unified-orders/` 订单工作流编排 | 页面范围停在 `WAIT_SPLIT + APPROVED + CONFIRMED`;海外仓阶梯费用页面是否开放需单独确认;客户侧可见字段按授权结果映射,内部备注、文件和原始证据不得进入 Client 契约 |
| 三期:国内出仓 | 当前无正式三期模块;如需求确认后复用 `first-leg-orders/`、`unified-orders/`、`inbounds/`,新增出仓能力按稳定契约拆分模块 | 当前 NO-GO。P3 阻断项未解除前不新增菜单、路由或 `release: active` 页面;不得把原型中的分柜、装柜、报关、港务或完整 WMS 菜单提前展示 |
阶段文档入口(路径相对本文件所在目录):一期读 `../../docs/一期/一期开发进度表.md` 与 `../../docs/一期/一期头程订单闭环设计.md`;二期读 `../../docs/二期/README.md`、`../../docs/二期/二期需求优化版-v2-测量计费入库主流程.md` 及联调报告;三期读 `../../docs/三期/README.md`、`../../docs/三期/三期开发规划.md`、`../../docs/三期/三期需求确认表.md` 和页面清单。阶段状态与代码现状冲突时,以需求确认和验收证据为准,并在改动说明中记录。
+5 -3
View File
@@ -15,9 +15,11 @@
## 一期/二期/三期共享模型索引
- 一期消费者主要是 `customers`、`iam`、`warehouses`、`master-data`、`first-leg-orders`;`CurrentUser`、`NavigationItem`、`ApiResponse`、平台收货仓快照及头程订单状态常量由 `src/index.ts` 统一导出。共享导出只描述前端数据形状,不替代 Java 服务端权限或状态机。
- 二期消费者主要是 `inbounds`、`warehouse-resources`、`fba-pricing`、`dimension-config` 与 `unified-orders`。测量、费用、托盘、库位等类型若只被单一模块使用,应留在模块内;确需跨模块复用时,先核对 `baiyue-firstleg` Controller/DTO/OpenAPI,再以兼容方式新增导出。
- 三期当前 NO-GO,暂无正式三期共享契约。不要为了复用原型中的分柜、装柜、报关或 PDA 字段提前扩展本包;待 `../../../docs/三期/三期需求确认表.md` 阻断项解除并锁定后端契约,再评估新增类型并同步全部 Admin 消费者。
- 一期共享消费者:`customers`、`iam`、`warehouses`、`master-data`、`first-leg-orders`;稳定导出集中在 `src/index.ts`(用户、导航、响应、仓库摘要、订单状态)。
- 二期共享消费者:`inbounds`、`warehouse-resources`、`fba-pricing`、`dimension-config`、`unified-orders`;单模块使用的测量、费用、托盘、库位类型留在模块内,只有真实跨模块复用才新增导出。
- 三期当前 NO-GO,无正式共享契约;不得预留分柜、装柜、报关或 PDA 字段,待需求确认和服务端契约冻结后再新增。
定位规则:先在 `src/index.ts` 确认公共导出,再搜索 `src/` 消费者;后端字段或状态有疑问时回到对应 Controller/DTO/OpenAPI,不在 shared 中猜测业务规则。
阶段依据(路径相对本文件所在目录):一期 `../../../docs/一期/`,二期 `../../../docs/二期/`,三期 `../../../docs/三期/`;共享包不保存阶段进度,也不承载跨应用(Client)源码复用。
@@ -50,6 +50,23 @@ describe('unified orders API contract', () => {
})
})
it('forwards every main-status tab with search and pagination unchanged', async () => {
const statuses = [
'PENDING_REVIEW', 'WAIT_MEASURE', 'INBOUNDED', 'WAIT_SPLIT',
'LOADING', 'LOADED', 'DELIVERED',
] as const
vi.mocked(http.get).mockResolvedValue({ data: { records: [], page: 3, size: 20, total: 0, pages: 0 } })
for (const mainStatus of statuses) {
await listPlatformUnifiedOrders({ keyword: 'CC-2026', orderNo: 'FL-77', mainStatus, page: 3, size: 20 })
}
expect(vi.mocked(http.get).mock.calls).toEqual(statuses.map((mainStatus) => [
'/platform/v1/orders',
{ params: { keyword: 'CC-2026', orderNo: 'FL-77', mainStatus, page: 3, size: 20 } },
]))
})
it('normalizes C02 row IDs and keeps inboundId for measurement routing', async () => {
vi.mocked(http.get).mockResolvedValue({ data: {
records: [{ orderId: '90001', tenantId: '208', inboundId: '77', inboundVersion: 3, mainStatus: 'WAIT_MEASURE', customerRemark: '客户备注', latestInternalNote: '最新内部备注', measurement: null, preload: null, loading: null, delivery: null, transport: null }],