This commit is contained in:
2026-10-21 21:30:24 +08:00
parent 234216b3eb
commit 5356a8c898
28 changed files with 1543 additions and 45 deletions
+21
View File
@@ -1,5 +1,26 @@
# 后端脚本管理与全量 HTTP 验收索引
`dispatch-loading-flow-test-env.mjs` 是 TEST 固定客户两托一车的定向 HTTP 验收入口,验证实收入库、确认预约、审核、扫码拣货、五张装车图片的 Admin 读取、自动出库派送及原请求幂等。默认只预览;显式 `--execute --run-id <唯一标识> --warehouse-id <起运仓> --destination-warehouse-id <FBA仓> --test-image <明确标注TEST的PNG>` 写入业务测试记录,通过 `node --env-file="<统一TEST配置>"` 读取凭据和固定客户。报告位于 `reports/dispatch-loading-<run-id>/`,保留失败前的请求和业务数据;同标识拒绝重跑,先核对原请求再决定恢复。`--resume-report <原报告>` 仅用于已明确收到编辑 A0400、仍为零拣货草稿的原单,保留原车与原司机,回查状态后补齐编辑字段继续;未知写入结果不能使用此恢复入口。默认停用本次临时 PDA 账号;`--keep-pda-for-ui` 仅在成功后将临时登录资料保存到系统临时目录供页面验收,页面结束后必须停用账号。所有 HTTP 会话结束时注销,不执行 SQL、删除、重置或部署。新增入口验证运行语法检查和 `script-documentation-contract.test.mjs`,经 `local-check.ps1`。
Admin/Client TEST 回归统一配置 `ADMIN_TEST_FIXED_CUSTOMER_ID` 与 `MERCHANT_TEST_USERNAME/PASSWORD`,复用指定 ACTIVE 客户;独立 Admin runner 同样读取这些显式环境变量。Client 默认不再注册审核、修改固定客户资料/账号、创建成员角色或通知,也不运行余额/渠道共享配置及缺第二客户的隔离场景;这些范围列为 skipped,`fullCoverage=false`,执行范围通过不代表全量覆盖。Admin 排除的主档生命周期范围见模块 README。业务单据及附件仍按本轮证据需要新增;不自动清理历史记录。
## TEST 业务数据重置准备
`test-env-business-reset-plan.mjs` 是**离线预览入口**,读取两份统一空库基线与 `test-env-business-reset-policy.json` 的显式逐表清单;不联网、不读取凭据、不执行 SQL,也没有清库执行模式。策略按全部客户的头程、海外仓、尾程、车队业务整理;资金记录与实际余额清零,保留授信额度/有效期;基础资料、编号序列、自营采集、独立审计、文件元数据和物理文件保留。此策略是候选处理范围,不能直接作为执行白名单。
```powershell
# 默认只打印摘要;无需环境文件
node scripts/test-env-business-reset-plan.mjs
# 输出新的独占报告目录;相同目录再次运行会失败,不覆盖既有证据
node scripts/test-env-business-reset-plan.mjs --out-dir reports/business-reset-<本次唯一标识>
# 人工选择 TEST 连接执行 inspection.sql,将首条查询的 inventory_json 原样保存后再比对
node scripts/test-env-business-reset-plan.mjs --inventory <实际结构清单.json> --out-dir reports/business-reset-<新的唯一标识>
```
报告 `plan.json` 逐表区分 `KEEP`、`CLEAR_CANDIDATE`、`RESET_REVIEW` 和 `REVIEW`,包含源码指纹、外键引用和触发器清单。独立审计保留,订单自身的状态/作业历史按已确认范围随单清理;人工船期计划、车辆运维档案和站内消息保留。业务导出与自营/基础资料导出混在同表,必须按明确类型白名单处理。基线变化、未分类新表、策略残留、实际缺表/多表/视图及保留表引用待清主表都会显式报告;不会根据表前缀自动扩大清理。`inspection.sql` 只查询目标 schema 的表、字段、外键、触发器及索引,并检查指向目标表的外部外键;操作者须保证账号对目标结构的完整可见性,缺少权限不能解释为数据不存在。`TABLE_ROWS` 仅为估算,导入完整且表名吻合的实际清单后才生成 `counts.sql` 精确计数查询;脚本本身仍不连接数据库。结构 JSON 不包含业务行或连接凭据。
退出 0 只表示预览成功;结果始终为 `REVIEW_REQUIRED / executionSupported=false`,不是清库放行。解析失败退出1并保留已生成文件,修正原因后使用新报告目录重跑,不自动删除或覆盖报告。数据库连接由操作者在环境操作阶段明确选择,不能用初始化文件重放代替重置;真实 SQL、删除/重置、维护窗口、备份恢复、缓存及消息重投处理均需按环境规则单独落实。资金可用余额须按有效授信重算,不能与实际余额一并固定归零;停用/报废资源不自动复活,业务过程历史与独立审计、船期计划、车辆运维、混合通知/导出及固定协调锁仍需专项核对。直接离线测试为 `test-env-business-reset-plan.test.mjs`,新增入口同时运行 `script-documentation-contract.test.mjs`,均经 `local-check.ps1`。
## 先看范围,再看证据
`acceptance-overview.mjs` 是离线只读总览入口,不需要凭据、不联网、不创建报告或测试数据。默认范围直接读取 Admin 实际注册表,不维护另一份模块枚举: