diff --git a/scripts/README.md b/scripts/README.md index a3e6cbca3..c77c9ef28 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -1,6 +1,6 @@ # 后端脚本管理与全量 HTTP 验收索引 -`mixed-container-outbound-test-env.mjs` 是经明确授权的测试环境留存混柜 FBA 票出库续跑入口:参数为 `source-report containerNo MIXED-FBA output-report`,凭据由显式 `node --env-file` 注入。它实时校验既有收货数据,创建排车、出库、派送及临时 PDA 账号,执行拣货、发车、测试签收文件保存和国内状态回查;finally 停用临时账号,不删除业务数据。输出报告作为检查点,失败后须先核对其中业务单号和实时状态,再用同一输出文件续跑;不得删除报告后盲目重试。它只覆盖选定 FBA 分支,不代表普通海外仓目的地转换或一件代发专用出库验收通过。 +`mixed-container-outbound-test-env.mjs` 是经明确授权的测试环境留存混柜出库续跑入口:参数为 `source-report containerNo MIXED-FBA|MIXED-DROPSHIP output-report`,凭据由显式 `node --env-file` 注入。FBA 分支实时校验既有收货数据,创建排车、出库、派送及临时 PDA 账号,执行拣货、发车、测试签收文件保存和国内状态回查;一件代发分支只走专用候选、两托四箱出库、PDA 幂等拣货和完成回查,并明确记录派送未覆盖,不返回全流程成功退出码。finally 停用临时账号,不删除业务数据。输出报告作为检查点,失败后须先核对其中业务单号和实时状态,再用同一输出文件续跑;不得删除报告后盲目重试。它不代表普通海外仓目的地转换或所有分支签收验收通过。 全量验收只认测试环境 HTTP 脚本。它们通过 Gateway 调用已部署服务,按业务模块执行真实登录、权限、状态、幂等、跨服务和数据链路检查;脚本通过后,剩余工作是 Admin/Client 的真实接口调用与浏览器样式验收,以及 PDA 页面/设备验收。 diff --git a/scripts/mixed-container-outbound-test-env.mjs b/scripts/mixed-container-outbound-test-env.mjs index 48f55f897..9f5a48cf4 100644 --- a/scripts/mixed-container-outbound-test-env.mjs +++ b/scripts/mixed-container-outbound-test-env.mjs @@ -152,9 +152,17 @@ try { result.finalStatus = 'BLOCKED' process.exitCode = 1 } finally { - await disablePicker(context, picker, label === 'MIXED-DROPSHIP' ? 9 : 8) + try { + await disablePicker(context, picker, label === 'MIXED-DROPSHIP' ? 9 : 8) + } catch (error) { + result.cleanupError = error.message + result.finalStatus = 'CLEANUP_FAILED' + } result.checks = context.steps + if (context.steps.some(step => step.passed === false)) result.finalStatus = 'CHECK_FAILED' + if (result.finalStatus !== 'PASSED') process.exitCode = 1 save() console.log(JSON.stringify({ containerNo, inboundCode, finalStatus: result.finalStatus, error: result.error, - dispatchNo: result.dispatchNo, outboundNo: result.transfer?.outboundNo, deliveryNos: result.transfer?.deliveries?.map(row => row.deliveryNo), report: output })) + dispatchNo: result.dispatchNo, outboundNo: result.transfer?.outboundNo || result.task?.outboundNo, + deliveryNos: result.transfer?.deliveries?.map(row => row.deliveryNo), report: output })) }