优化
This commit is contained in:
@@ -87,6 +87,8 @@
|
||||
|
||||
## 一期/二期/三期后端阶段索引
|
||||
|
||||
本表只固定后端职责和阶段边界;完成度、验收数量和数据库部署状态以仓库根目录对应阶段 `README.md`、最新验收报告及统一部署说明为准。
|
||||
|
||||
| 阶段 | 后端边界与入口 | 开始工作前阅读 | 状态边界 |
|
||||
|---|---|---|---|
|
||||
| 一期:头程订单闭环 | `auth/` 登录与账号、`iam/` 客户/RBAC/资质审核、`warehouse/` 公共仓与主数据、`order/` 订单主数据、`firstleg/` 履约任务、`file/` 资质文件 | `../docs/一期/README.md` → `../docs/一期/一期开发进度表.md` → `../docs/一期/一期头程订单闭环设计.md`;再读目标模块 `AGENTS.md`、Controller/DTO/OpenAPI 与迁移脚本 | 客户审核与必填资质通过后才具备下单资格;订单状态由 `order/` 主导,履约分配由 `firstleg/` 主导;不得把二期入库状态回写为一期订单状态 |
|
||||
|
||||
@@ -0,0 +1,303 @@
|
||||
{
|
||||
"marker": "20260808033324-81f67c5c",
|
||||
"gateway": "http://8.163.30.128:9000",
|
||||
"generatedAt": "2026-08-08T03:33:24.483Z",
|
||||
"completedAt": "2026-08-08T03:33:25.630Z",
|
||||
"success": false,
|
||||
"fatal": {
|
||||
"name": "Error",
|
||||
"message": "unified timeline must contain INBOUNDED"
|
||||
},
|
||||
"testAccount": {
|
||||
"username": "merchant_admin"
|
||||
},
|
||||
"expectedTerminalState": {
|
||||
"processStatus": "WAIT_SPLIT",
|
||||
"measureReviewStatus": "APPROVED",
|
||||
"feeStatus": "CONFIRMED"
|
||||
},
|
||||
"resources": {
|
||||
"tenantId": "10001",
|
||||
"terminalInboundId": "2085909619958919170",
|
||||
"terminalOrderId": "2085909608158265345",
|
||||
"terminalInboundCode": "RK-2085909608158265345",
|
||||
"pendingOrderId": "2085931050820239362",
|
||||
"foreignOrderId": "2085665774056833025",
|
||||
"measurementImageFileIds": [],
|
||||
"weightImageFileIds": []
|
||||
},
|
||||
"steps": [
|
||||
{
|
||||
"module": "phase2-session",
|
||||
"name": "client login",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:24.485Z",
|
||||
"durationMs": 378,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-e1d83f36-20a8-41c8-9bbc-c9b0f17f23ef, client-phase2-e1d83f36-20a8-41c8-9bbc-c9b0f17f23ef",
|
||||
"traceId": "9dbb09bfcce341a4b44035938ab8696b",
|
||||
"evidence": {
|
||||
"username": "merchant_admin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-session",
|
||||
"name": "load current enterprise profile",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:24.863Z",
|
||||
"durationMs": 39,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-1785db69-72ae-45c4-a938-d213ccd0ebd9, client-phase2-1785db69-72ae-45c4-a938-d213ccd0ebd9",
|
||||
"traceId": "b72e77173cd14d09a18e73f9ba23595d",
|
||||
"evidence": {
|
||||
"tenantId": "10001",
|
||||
"tenantName": "一期演示企业",
|
||||
"status": "ACTIVE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-session",
|
||||
"name": "client has order view permission",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:24.903Z",
|
||||
"durationMs": 20,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-7741c947-ae45-47b2-9881-4fa657c7e466, client-phase2-7741c947-ae45-47b2-9881-4fa657c7e466",
|
||||
"traceId": "4920d2a37c8c4fdebdd2e3b1b9428364",
|
||||
"evidence": {
|
||||
"permissionCount": 27
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-fixture",
|
||||
"name": "platform fixture account login",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:24.923Z",
|
||||
"durationMs": 338,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-76407f5d-871c-46b5-b2ac-d3d28d6c91d2, client-phase2-76407f5d-871c-46b5-b2ac-d3d28d6c91d2",
|
||||
"traceId": "993863250f3e4c8490a965aad602a83e",
|
||||
"evidence": {
|
||||
"username": "platform_admin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-fixture",
|
||||
"name": "discover current enterprise inbound fixtures",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.261Z",
|
||||
"durationMs": 50,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-2c94e800-97b5-49cb-98b8-a109fd867ed7, client-phase2-2c94e800-97b5-49cb-98b8-a109fd867ed7",
|
||||
"traceId": "b5b9f906bf06437990bcb3800741be67",
|
||||
"evidence": {
|
||||
"total": "23",
|
||||
"statusCounts": {
|
||||
"WAIT_MEASURE|NOT_SUBMITTED|UNPRICED": 10,
|
||||
"MEASURING|NOT_SUBMITTED|UNPRICED": 9,
|
||||
"WAIT_SPLIT|APPROVED|UNPRICED": 1,
|
||||
"WAIT_SPLIT|APPROVED|CONFIRMED": 2,
|
||||
"WAIT_SPLIT|APPROVED|CALCULATED": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-fixture",
|
||||
"name": "terminal state filters find selected inbound",
|
||||
"passed": false,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.312Z",
|
||||
"durationMs": 28,
|
||||
"http": 200,
|
||||
"code": "A0400",
|
||||
"message": "入库流程状态不合法",
|
||||
"requestId": "client-phase2-e1a0cb4e-0259-492c-86be-406384be4dc6, client-phase2-e1a0cb4e-0259-492c-86be-406384be4dc6",
|
||||
"traceId": "747017cc66f84cc580a3f4300c1405d5",
|
||||
"evidence": {
|
||||
"inboundId": "2085909619958919170"
|
||||
},
|
||||
"error": {
|
||||
"name": "Error",
|
||||
"message": "business code: expected=\"200\" actual=\"A0400\""
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-fixture",
|
||||
"name": "load platform terminal inbound reference detail",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.340Z",
|
||||
"durationMs": 35,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-8e64ad1a-e627-4584-94d0-5d9811253c49, client-phase2-8e64ad1a-e627-4584-94d0-5d9811253c49",
|
||||
"traceId": "30b4719d515f4a21a56fa5f0753b0ac5",
|
||||
"evidence": {
|
||||
"inboundId": "2085909619958919170",
|
||||
"orderId": "2085909608158265345",
|
||||
"processStatus": "WAIT_SPLIT",
|
||||
"measureReviewStatus": "APPROVED",
|
||||
"feeStatus": "CONFIRMED"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-fixture",
|
||||
"name": "discover foreign terminal fixture for isolation",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.375Z",
|
||||
"durationMs": 78,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-7275ca3a-596e-4b14-ba4a-99e6f9ffffc2, client-phase2-7275ca3a-596e-4b14-ba4a-99e6f9ffffc2",
|
||||
"traceId": "d52bded392cb4ccda9c06f91b6a77255",
|
||||
"evidence": {
|
||||
"total": "263"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-client-visibility",
|
||||
"name": "unfinished inbound billing remains unavailable",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.453Z",
|
||||
"durationMs": 24,
|
||||
"http": 200,
|
||||
"code": "A0404",
|
||||
"message": "入库费用尚未由客服审核并发布",
|
||||
"requestId": "client-phase2-57f2bf52-8e7b-45fd-8cf3-8e4df7ee171e, client-phase2-57f2bf52-8e7b-45fd-8cf3-8e4df7ee171e",
|
||||
"traceId": "1e91adb1b3db4a21af8b29f3985e83e4",
|
||||
"evidence": {
|
||||
"orderId": "2085931050820239362",
|
||||
"processStatus": "WAIT_MEASURE",
|
||||
"feeStatus": "UNPRICED",
|
||||
"rejectionCode": "A0404"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-client-visibility",
|
||||
"name": "unknown order inbound billing is rejected",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.477Z",
|
||||
"durationMs": 33,
|
||||
"http": 200,
|
||||
"code": "A0404",
|
||||
"message": "订单尚未生成入库单",
|
||||
"requestId": "client-phase2-427aeba9-c3f3-4f47-9efb-c229ee4de1e0, client-phase2-427aeba9-c3f3-4f47-9efb-c229ee4de1e0",
|
||||
"traceId": "a40ef9c3eed448c8af859a77451fccd4",
|
||||
"evidence": {
|
||||
"orderId": 1,
|
||||
"rejectionCode": "A0404"
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-client-billing",
|
||||
"name": "terminal inbound billing is visible to client",
|
||||
"passed": false,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.510Z",
|
||||
"durationMs": 29,
|
||||
"http": 200,
|
||||
"code": "A0404",
|
||||
"message": "入库费用尚未由客服审核并发布",
|
||||
"requestId": "client-phase2-da5ccf76-4871-4bf8-a696-9caf543261df, client-phase2-da5ccf76-4871-4bf8-a696-9caf543261df",
|
||||
"traceId": "fb940334084d46babcf2f7aa0ae018e9",
|
||||
"evidence": {
|
||||
"rejectionCode": "A0404"
|
||||
},
|
||||
"error": {
|
||||
"name": "Error",
|
||||
"message": "business code: expected=\"200\" actual=\"A0404\""
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-client-billing",
|
||||
"name": "terminal billing aggregate contract",
|
||||
"passed": true,
|
||||
"skipped": true,
|
||||
"startedAt": "2026-08-08T03:33:25.540Z",
|
||||
"durationMs": 0,
|
||||
"http": null,
|
||||
"code": null,
|
||||
"message": "Terminal billing endpoint did not return a visible aggregate",
|
||||
"requestId": null,
|
||||
"traceId": null,
|
||||
"evidence": null
|
||||
},
|
||||
{
|
||||
"module": "phase2-client-images",
|
||||
"name": "published measurement and weight image access",
|
||||
"passed": true,
|
||||
"skipped": true,
|
||||
"startedAt": "2026-08-08T03:33:25.540Z",
|
||||
"durationMs": 0,
|
||||
"http": null,
|
||||
"code": null,
|
||||
"message": "Terminal billing endpoint did not return image references",
|
||||
"requestId": null,
|
||||
"traceId": null,
|
||||
"evidence": null
|
||||
},
|
||||
{
|
||||
"module": "phase2-unified-orders",
|
||||
"name": "unified order list exposes phase-two terminal state",
|
||||
"passed": true,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.540Z",
|
||||
"durationMs": 46,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-ae9de96c-91aa-4e8e-b94a-ebf318130dab, client-phase2-ae9de96c-91aa-4e8e-b94a-ebf318130dab",
|
||||
"traceId": "e1648c5fea3a400ab475e24952971fa7",
|
||||
"evidence": {
|
||||
"orderId": "2085909608158265345",
|
||||
"mainStatus": "INBOUNDED",
|
||||
"inboundId": "2085909619958919170",
|
||||
"measurementReviewStatus": "APPROVED",
|
||||
"actualGrossWeightKg": 1383,
|
||||
"actualVolumeCbm": 0.1895
|
||||
}
|
||||
},
|
||||
{
|
||||
"module": "phase2-unified-orders",
|
||||
"name": "unified order detail includes phase-two timeline",
|
||||
"passed": false,
|
||||
"skipped": false,
|
||||
"startedAt": "2026-08-08T03:33:25.586Z",
|
||||
"durationMs": 43,
|
||||
"http": 200,
|
||||
"code": "200",
|
||||
"message": "success",
|
||||
"requestId": "client-phase2-0f0b5563-07a7-45cc-b1c4-41456d58d634, client-phase2-0f0b5563-07a7-45cc-b1c4-41456d58d634",
|
||||
"traceId": "e9a45bb51adc4ac5bc0011f17218285e",
|
||||
"evidence": {
|
||||
"orderId": "2085909608158265345",
|
||||
"mainStatus": "INBOUNDED",
|
||||
"timelineCount": 5
|
||||
},
|
||||
"error": {
|
||||
"name": "Error",
|
||||
"message": "unified timeline must contain INBOUNDED"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user