diff --git a/AGENTS.md b/AGENTS.md index c6700a7e1..2cc178073 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -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/` 主导;不得把二期入库状态回写为一期订单状态 | diff --git a/reports/client-phase2-test-env-20260808033324-81f67c5c.json b/reports/client-phase2-test-env-20260808033324-81f67c5c.json new file mode 100644 index 000000000..f255dfe6a --- /dev/null +++ b/reports/client-phase2-test-env-20260808033324-81f67c5c.json @@ -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" + } + } + ] +}