Files
baiyue-firstleg/scripts/admin-test-env-modules/IT测试客户八千票待分柜数据生成方案.md
T
2026-08-30 17:02:19 +08:00

99 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IT测试客户八千票待分柜数据生成方案
## 目标
通过测试环境正式 HTTP 接口,最多尝试生成 8,000 票头程订单并推进到:
- 入库单 `processStatus=WAIT_SPLIT`
- 测量审核 `reviewStatus=APPROVED`
只固定两个条件:
1. 商户账号登录后的企业名称必须精确等于“IT测试”。
2. 国内起运仓必须精确等于启用状态的“义乌仓”。
不固定渠道、报价税制、目的类型、目的仓、履约类型、提货方式、买单/退税、装载方式、是否查验、SKU 数、箱型、尺寸、托数和重量。它们从当前客户真实可选择且服务端校验通过的数据中选择。
## 数量规则
- 最大尝试数:8,000 票。
- 每票独立随机 `1–300` 箱,随机到多少就生成多少。
- 不要求 `1–300` 全部出现,允许重复和缺号。
- 每票随机总箱数必须等于所有 SKU 箱数之和,并与入库、测量和待分柜箱数保持一致。
- 托数固定按每托最多 30 箱计算:`palletCount = ceil(totalPackageCount / 30)`;1–30 箱为 1 托,31–60 箱为 2 托,300 箱为 10 托。
- 理论平均每票 `150.5` 箱,8,000 票理论期望总箱数约 `1,204,000` 箱;实际数量以成功结果为准。
- 执行按 100 票统计一个批次,共最多 80 批。
入仓码流水为四位数。8,000 票只能降低触及 `9999` 上限的概率,不能保证所有渠道前缀都有足够余量;测试环境已有流水、渠道各自计数和并发生成都会影响实际可用数量。
## 随机线路
每票执行时:
1. 查询“IT测试”客户可见的启用国内仓,并只保留“义乌仓”。
2. 查询义乌仓当前客户可见且具有报价税制的渠道。
3. 随机轮换渠道和报价税制候选。
4. 对 FBA/海外仓线路,通过正式估价接口选择真实可计价目的仓。
5. 私人地址只使用客户当前可选择的渠道,不伪造目的仓 ID。
6. 候选为空、价格变更或服务错误时记录失败,不回退到硬编码渠道或历史价格。
## SKU 与测量
- SKU 数随机为 `1–4`,但不得超过本票总箱数。
- 总箱数随机拆分到各 SKU,每个 SKU 至少 1 箱。
- 毛重、净重、数量、申报价值和体积根据各 SKU 箱数计算。
- 称重图片数量与上述托数一致;每托只在既有 `TP-001`、`YW-TP-002` 中随机复用一个托盘编码,不创建新的托盘主档,因此同一票和不同票都允许重复使用这两个编码。
- 库位由正式仓储预占/结算接口分配,不创建库位主档;普通库位不足时直接使用仓库公共位 `A0`。托盘复用不改变 `palletCount = ceil(totalPackageCount / 30)` 的业务托数。
- 箱唛打印冻结真实总箱数;多 SKU 测量使用各 SKU 实际箱数和对应箱序号。
- 通过正式文件、称重 OCR、托盘库位预占、测量提交和审核接口推进状态,不直接写数据库。
## 尽力执行语义
执行入口为:
```powershell
node scripts/it-test-wait-split-bulk.mjs `
--count 8000 `
--batch-size 100 `
--customer-name 'IT测试' `
--origin-warehouse-name '义乌仓' `
--box-min 1 `
--box-max 300 `
--output-dir '<本地报告目录>'
```
- 随机数在每票请求前直接产生,不设置预览或人工确认步骤。
- 每票先把本次箱数和随机值写入 `results.jsonl`,然后请求测试环境。
- 单票失败不会停止后续票,失败报告保存到 `failures/`。
- 每 100 票及每次失败后更新 `summary.json`。
- 成功标准以该票真实到达 `WAIT_SPLIT / APPROVED` 且箱数、客户、义乌仓一致为准。
- 最终允许不足 8,000 票成功,实际成功数、失败数和总箱数以 `summary.json` 为准。
## 报告内容
`results.jsonl` 对每票记录:
- 全局序号、批次、随机箱数
- 订单 ID/订单号
- 入库单 ID/入仓码
- 渠道、目的类型和目的仓
- 是否到达待分柜
- 断言失败、deployment blocker、`requestId`/`traceId`
`summary.json` 汇总:
- 已尝试、成功和失败票数
- 成功票总箱数、最小/最大/平均箱数
- 各渠道成功票数
- 各目的类型成功票数
- 进程 ID、开始时间、更新时间和报告目录
## 安全边界
- 仅用于已明确授权的测试环境,禁止用于生产环境。
- 账号、密码、Token 和环境地址只从本机环境配置加载,不进入源码或报告。
- 不自动删除已成功或部分成功的数据。
- 不新增托盘或库位主档;只能复用 `TP-001`、`YW-TP-002`,库位不足落公共位 `A0`。
- 不重置数据库、不执行 SQL、不绕过正式状态机。
- 清理测试数据或文件必须另行获得明确授权。