# 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、不绕过正式状态机。 - 清理测试数据或文件必须另行获得明确授权。