test(运单资料文件包下载): 需求文档与 QE Fleet 全流程测试设计产物入库

- 需求 v1.0 定稿(md+docx)与 UI 原型入库;确认单判定 docx 为同文载体、安徽运八并行无冲突
- 全流程产物:分析 + 59 测试点 + 85 用例 + 测试数据 145 组;评审 3 阻断与覆盖缺口 GAP-001 已修复,裁决 PASS_WITH_FIX
- 导出 Excel(云效模型)+ XMind + 版本快照 v1;含 docx 生成脚本与转换校验产物
- .gitignore 排除 node_modules 与 Excel 锁文件
This commit is contained in:
xst
2026-09-09 09:31:55 +08:00
parent c7cc4d5648
commit 901b6741ff
48 changed files with 8183 additions and 0 deletions
@@ -0,0 +1,147 @@
# 运单资料文件包下载需求 测试用例
> 生成时间: 2026-09-08
> 依据: requirements/运单资料文件包下载需求.md(v1.0 定稿,含 13 项确认决议)、output/test_points/运单资料文件包下载需求_测试点.md(59 个测试点)、output/analysis/运单资料文件包下载需求_测试数据.md(145 组数据)、output/analysis/运单资料文件包下载需求_关联与冲突.md(无冲突,与安徽运八并行)、knowledge_base/00_project/project_profile.md、knowledge_base/01_standards/test_case_template.md、review_checklist.md
> 原型: resources/prototypes/anhuibaba_file_package.html
> 用例编号前缀: PLT_TMS_FPKG(平台端-运输管理-运单文件包)
>
> **测试用例总数: 85**
> **优先级分布: P0=33 / P1=43 / P2=7 / P3=2**
> **类型分布: 功能测试 62 / 安全性测试 10 / 回归测试 7 / 性能测试 3 / 兼容性测试 1 / 易用性测试 1 / 冒烟测试 1**
> **模块分布: 菜单权限 7 / 上传校验 14 / 数据校验 11 / 任务列表 13 / 打包归批 21 / 下载审计 7 / 非功能 11 / 跨模块冒烟 1**
> **测试点映射: 59/59 全覆盖——P0 测试点 25 个 100% 对应用例,P1 测试点 26 个 100% 对应用例,P2/P3 测试点 8 个全部保留(取舍理由见文末)**
>
> 阅读约定:本文件全文仅一个用例总表;"测试数据"列引用 output/analysis/运单资料文件包下载需求_测试数据.md 中的数据ID;账号默认 ACC-001(super_admin/951260684NiAn..,环境真实账号),ACC-002/003/006 为需在角色管理创建的账号(数据缺口 #9/#10);XLS-001~005 等示例单号落地时须映射为测试环境真实运单(数据缺口 #1);文末集中列出 Q1~Q6 保留待确认项与实现口径确认项。
## 用例编号与测试点映射总览
- TP-M-001→002;TP-M-002→003;TP-M-003→004/005;TP-M-004→006;TP-M-005→007/008
- TP-U-001→009/085;TP-U-002→001/010;TP-U-003→011;TP-U-004→012/013/085;TP-U-005→014;TP-U-006→015/016;TP-U-007→017/018;TP-U-008→019;TP-U-009→020;TP-U-010→021;TP-U-011→022;TP-U-012→023;TP-U-013→024;TP-U-014→025;TP-U-015→026/027/083;TP-U-016→028/029;TP-U-017→030;TP-U-018→031
- TP-T-001→001/032/033;TP-T-002→034;TP-T-003→035/036;TP-T-004→037/038;TP-T-005→039/040;TP-T-006→041/042;TP-T-007→043;TP-T-008→044
- TP-P-001→045;TP-P-002→046/047;TP-P-003→048;TP-P-004→049;TP-P-005→050;TP-P-006→051/052;TP-P-007→053/054/084;TP-P-008→055/056;TP-P-009→057/058;TP-P-010→059;TP-P-011→060;TP-P-012→061;TP-P-013→062/063;TP-P-014→064
- TP-D-001→001/065;TP-D-002→066;TP-D-003→067;TP-D-004→068;TP-D-005→069;TP-D-006→070/071
- TP-N-001→072;TP-N-002→073;TP-N-003→074/075;TP-N-004→076/077;TP-N-005→078;TP-N-006→079/080;TP-N-007→081;TP-N-008→082
---
## 用例总表
| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| PLT_TMS_FPKG_001 | 平台端-运单管理-运单文件包 | 冒烟验证上传合法清单到下载总包的端到端主流程 | P0 | 冒烟测试 | 1. ACC-001(super_admin)已登录平台端管理后台;2. 环境存在需求五章示例运单 YD20260901001/YD20260901002/YD20260901003(均已结算打款、含承运合同附件与银行电子回单、司机车辆证件齐全,数据缺口 #1) | 1. 进入"运单文件包"页面点击"下载模板"获得 XLS-008<br>2. 按模板填写 XLS-001/002/003 三行(序号 1/2/3,货源单号 HY202609001/HY202609002/HY202609001)<br>3. 点击"上传清单"选择文件并确认"开始上传并创建任务"<br>4. 轮询任务列表直至状态"已完成"<br>5. 点击该行"下载文件包"并解压 | ACC-001 账号;XLS-008 模板;XLS-001/002/003 清单行;IDC-006 总包命名 | 1. 模板为合法 .xlsx 且仅含 序号/货源单号/运单号 三列<br>2. 上传成功提示含任务编号(IDC-001 格式,编码规则以实现为准)<br>3. 列表置顶新增任务行,状态经 待处理→处理中→已完成,成功数=3、失败数=0、完成时间有值<br>4. 下载文件名=运单资料_【任务编号】.zip,zip 含 2 个批次包(张三-340102199001011234-皖A12345、李四-340102199001015678-皖B67890)及运单包 1-YD20260901001-HY202609001-含司机及车辆证件、3-YD20260901003-HY202609001、2-YD20260901002-HY202609002-含司机及车辆证件,解压无损坏 | 对应TP-U-002/TP-T-001/TP-D-001;REQ-001/REQ-004/REQ-008/REQ-016(核心链路首轮冒烟) |
| PLT_TMS_FPKG_002 | 平台端-运单管理-运单文件包-菜单权限 | 验证"运单文件包"菜单挂载位置与页面骨架完整 | P0 | 功能测试 | ACC-001 已登录且其角色已配置"运单文件包"菜单权限 | 1. 在运单管理相关模块下查找菜单"运单文件包"<br>2. 点击菜单进入页面<br>3. 自上而下核对页面结构:上传任务入口(模板下载+上传按钮)与任务列表<br>4. 核对面包屑与左侧菜单高亮 | ACC-001 账号;菜单名称"运单文件包"(决议#1);IDC-011 模板下载入口 | 1. 菜单名称逐字为"运单文件包"且挂在运单管理相关模块下<br>2. 页面自上而下为上传任务入口(含"下载模板""上传清单"按钮)在前、任务列表表格在后<br>3. 面包屑与菜单高亮定位正确<br>4. 角色-菜单权限关联数据中已含该菜单配置,页面无需求未定义的多余功能入口 | 对应TP-M-001;REQ-001 |
| PLT_TMS_FPKG_003 | 平台端-运单管理-运单文件包-菜单权限 | 验证被授权运营人员可见菜单并完成上传查看下载全链路 | P0 | 安全性测试 | 1. 已通过平台管理-角色管理创建运营人员账号 ACC-002(仅授权"运单文件包"菜单,数据缺口 #9);2. 环境存在 XLS-007 对应的有效运单(已结算、含合同与回单) | 1. ACC-002 登录平台端确认侧边栏可见"运单文件包"<br>2. 下载 XLS-008 模板并填写 XLS-007(1/HY202609001/YD20260901001)<br>3. 上传并等待任务完成<br>4. 点击"下载文件包"获取 zip<br>5. 全程观察是否出现权限拦截 | ACC-002 运营账号;XLS-008 模板;XLS-007 最小合法清单 | 1. 菜单可见,上传/查看进度/下载全链路无 401/403 拦截<br>2. 上传成功创建任务并提示任务编号<br>3. 任务完成后 zip 下载解压正常<br>4. 数据库任务表记录上传人=ACC-002 账号名<br>5. 页面内无其他角色越权入口 | 对应TP-M-002;REQ-002(权限分配由平台管理员在角色管理完成,项目画像 §2.2) |
| PLT_TMS_FPKG_004 | 平台端-运单管理-运单文件包-菜单权限 | 验证非授权角色登录后侧边栏无"运单文件包"菜单 | P0 | 安全性测试 | 1. 存在未授权"运单文件包"菜单的对照账号 ACC-003(财务/客服类角色,数据缺口 #9);2. 车队长 ACC-004(13113113113)与司机 ACC-005(15188888888)账号可用 | 1. ACC-003 登录平台端,遍历侧边栏全部模块与菜单搜索<br>2. ACC-004 登录检查其端内是否有该功能入口<br>3. ACC-005 登录司机端检查是否有该功能入口<br>4. 记录各角色会话下页面渲染内容 | ACC-003/ACC-004/ACC-005 账号 | 1. ACC-003 侧边栏全程无"运单文件包"入口(含菜单搜索)<br>2. 车队长端与司机端均无该功能入口<br>3. 各非授权角色页面不渲染任何任务列表数据<br>4. 角色权限配置数据中未授权角色的菜单集合不含该菜单 | 对应TP-M-003;REQ-002 |
| PLT_TMS_FPKG_005 | 平台端-运单管理-运单文件包-菜单权限 | 验证未登录与低权限会话 URL 直达页面被拦截 | P0 | 安全性测试 | 1. 已从 ACC-001 会话获取"运单文件包"页面路由地址;2. ACC-003(无该菜单权限)账号可用 | 1. 未登录状态浏览器直接输入页面 URL<br>2. ACC-003 登录后直接输入页面 URL<br>3. 观察两种场景的跳转与页面渲染<br>4. 打开开发者工具查看任务列表接口响应 | 页面路由 URL;ACC-003 账号 | 1. 未登录访问跳转登录页(或 403 页面),不渲染任务数据<br>2. ACC-003 访问返回 403 或无权限提示页,不渲染任务数据<br>3. 两种场景下任务列表接口请求均被服务端拒绝(401/403),无任务数据泄露 | 对应TP-M-003;REQ-002(漏测清单 §3 未登录访问) |
| PLT_TMS_FPKG_006 | 平台端-运单管理-运单文件包-菜单权限 | 验证无权限会话直接调用上传列表下载接口被服务端拒绝 | P1 | 安全性测试 | 1. ACC-003 已登录并取得有效会话凭证;2. 已存在一个已完成打包任务(任务编号 T1);3. 接口测试工具可用 | 1. 用 ACC-003 会话直接调用任务列表查询接口<br>2. 直接调用上传接口(携带合法 xlsx 文件)<br>3. 直接调用任务 T1 的下载接口<br>4. 记录三个接口的状态码与响应体<br>5. 检查任务列表 | ACC-003 会话凭证;任务编号 T1;合法 xlsx 文件 | 1. 三个接口均返回 401/403(或业务鉴权错误码),不返回业务数据与文件流<br>2. 上传接口不创建任务(数据库无新增任务记录)<br>3. 服务端鉴权独立于前端菜单隐藏,接口不因缺少前端入口而放行 | 对应TP-M-004;REQ-002(RISK-COMPLIANCE P2 缓解措施) |
| PLT_TMS_FPKG_007 | 平台端-运单管理-运单文件包-菜单权限 | 验证跨机构任务列表与文件包下载的数据隔离 | P1 | 安全性测试 | 1. 多机构部署环境:A 机构运营账号 ACC-001、B 机构运营账号均可登录(多机构选择登录);2. B 机构已存在一个已完成打包任务(任务编号 TB,含 B 机构运单资料) | 1. ACC-001 登录查看任务列表全量<br>2. 从 B 机构会话获取任务编号 TB 与其下载请求报文<br>3. ACC-001 会话携带 TB 重放下载接口<br>4. 查询数据库任务表 | ACC-001(A 机构);B 机构任务编号 TB | 1. ACC-001 任务列表不显示 B 机构任务(列表数据仅本机构)<br>2. 携带 TB 的下载请求被数据权限拦截(403/无权限类响应),不返回 zip 文件流<br>3. 数据库按机构维度过滤,A 机构会话查不到 B 机构任务记录 | 对应TP-M-005;REQ-002/REQ-026(项目画像 §10 权限类必测机构隔离,升为 P1);环境依赖:多机构部署与 B 机构数据见测试数据缺口 #18;若环境为单机构部署或 super_admin 按设计具备跨机构可见性,隔离断言改用绑定 A 机构的非超管运营账号(ACC-002 补机构绑定)执行并在执行报告记录结论,不得静默跳过 |
| PLT_TMS_FPKG_008 | 平台端-运单管理-运单文件包-菜单权限 | 验证上传清单含他机构运单号时按行级失败处理不导出 | P2 | 安全性测试 | 1. ACC-001(A 机构)已登录;2. B 机构存在有效运单 YDB-001(含证件与回单资料) | 1. 按 XLS-008 模板构造 2 行清单:第 1 行为 A 机构有效运单 XLS-001,第 2 行运单号填 B 机构运单 YDB-001、货源单号填 B 机构货源<br>2. 上传并等待任务完成<br>3. 下载 zip 检查内容<br>4. 下载失败清单核对 | XLS-008 模板;XLS-001 行;B 机构运单号 YDB-001 | 1. 任务状态"已完成·部分失败",成功数=1、失败数=1<br>2. 失败清单第 2 行原样记录,失败原因属"运单号在系统中不存在"或权限类文案(以实现为准)<br>3. zip 内不含 YDB-001 的任何运单包、证件或回单文件<br>4. B 机构运单在 A 机构会话下不可见不可导出 | 对应TP-M-005;REQ-002/REQ-026(B 机构运单 YDB-001 环境依赖见测试数据缺口 #18) |
| PLT_TMS_FPKG_009 | 平台端-运单管理-运单文件包-上传校验 | 验证模板下载产物为合法 xlsx 且仅含三列 | P0 | 功能测试 | ACC-001 已登录并进入"运单文件包"页面 | 1. 点击上传入口"下载模板"按钮<br>2. 检查下载文件名与文件格式(IDC-011:运单清单模板.xlsx)<br>3. 用 Excel/WPS 打开核对表头与模板内说明文字<br>4. 在该模板中按 XLS-007 填写 1 行有效运单后直接上传 | IDC-011 模板文件;XLS-007(1/HY202609001/YD20260901001) | 1. 下载得到合法 .xlsx 文件(文件名与 IDC-011 一致,以实现为准)<br>2. 表头仅含 序号/货源单号/运单号 三列,列名与需求 4.2.1 逐字一致<br>3. 模板内填写说明独立于数据表头,上传时不参与数据解析(不因说明行被拒)<br>4. 用模板填写的 XLS-007 上传成功并创建任务(模板自洽) | 对应TP-U-001;REQ-003 |
| PLT_TMS_FPKG_010 | 平台端-运单管理-运单文件包-上传校验 | 验证合法清单上传创建任务并正确回填列表字段 | P0 | 功能测试 | 1. ACC-001 已登录;2. 环境存在 XLS-001/002/003 对应运单(数据缺口 #1);3. 已记录上传前"全部任务"统计卡片数值 | 1. 点击"上传清单"选择本地文件"运单清单_合肥仓0908.xlsx"(内含 XLS-001/002/003 三行)<br>2. 确认"开始上传并创建任务"<br>3. 查看成功提示与任务列表置顶新行<br>4. 核对新行各字段取值<br>5. 核对统计卡片计数 | 源文件名 IDC-012(运单清单_合肥仓0908.xlsx);XLS-001/002/003 | 1. 上传成功提示含系统生成任务编号(IDC-001 格式,编码规则以实现为准)<br>2. 列表置顶新增一行:源文件名=运单清单_合肥仓0908.xlsx、上传人=当前账号、上传时间=当前时间、总行数=3<br>3. 任务状态由"待处理"流转"处理中"并最终"已完成",成功数=3、失败数=0<br>4. "全部任务"统计卡片计数较上传前 +1;数据库任务表新增记录且统计字段与清单一致 | 对应TP-U-002;REQ-001/REQ-004/REQ-005 |
| PLT_TMS_FPKG_011 | 平台端-运单管理-运单文件包-上传校验 | 验证非 xlsx 格式文件上传整体拒绝且前后端双重限制 | P0 | 功能测试 | 1. ACC-001 已登录;2. 本地准备 ERR-001(.xls)、ERR-002(.csv/.docx/.jpg)、ERR-003(zip 改后缀名为 .xlsx 的伪造文件);3. 接口测试工具可用 | 1. 点击"上传清单"分别选择 .xls、.csv、.docx 文件,观察文件选择器过滤与页面提示<br>2. 选择 ERR-003 伪 xlsx 上传<br>3. 用接口工具携带 ACC-001 会话直传 .csv 与伪 xlsx(绕过前端)<br>4. 每次上传后检查任务列表与数据库 | ERR-001/ERR-002/ERR-003;BND-014 类伪格式文件 | 1. 前端文件选择器过滤非 .xlsx,或选择后立即提示"格式不支持"类具体原因<br>2. 伪 xlsx 被后端魔数/结构校验拒绝(防仅校验后缀),提示明确<br>3. 接口直传同样被拒(后端独立校验防绕过)<br>4. 全部场景不创建任务:列表无新增行、数据库无任务记录 | 对应TP-U-003;REQ-005 |
| PLT_TMS_FPKG_012 | 平台端-运单管理-运单文件包-上传校验 | 验证列名缺失或不符的清单整体拒绝且提示具体列问题 | P0 | 功能测试 | 1. ACC-001 已登录;2. 按 ERR-004/ERR-005 构造 4 个清单文件(缺序号列、缺货源单号列、列名拼写错误、三列+多余备注列) | 1. 上传缺"序号"列文件(仅货源单号/运单号两列)<br>2. 上传缺"货源单号"列文件<br>3. 上传列名不符文件(如"单号""序号(必填)""No."、序号尾带空格)<br>4. 上传含多余未知列文件<br>5. 每次上传后检查任务列表 | ERR-004(缺列);ERR-005(列名不符变体) | 1. 四类文件均整体拒绝,提示信息指明具体列问题(如"列名缺失或不符"并指明列,具体文案以实现为准)<br>2. 均不创建任务:列表无新增行、数据库无任务记录<br>3. 不产生失败清单(未进入数据级校验) | 对应TP-U-004;REQ-005 |
| PLT_TMS_FPKG_013 | 平台端-运单管理-运单文件包-上传校验 | 验证三列名齐全仅列顺序打乱的清单可正常上传 | P0 | 功能测试 | 1. ACC-001 已登录;2. 构造列顺序为 运单号/货源单号/序号 的 3 行清单(行数据同 XLS-001/002/003) | 1. 上传列序打乱清单<br>2. 等待任务完成并核对统计<br>3. 下载 zip 核对批次划分与命名 | ERR-007 构造文件(列名齐全顺序打乱);XLS-001/002/003 行数据 | 1. 上传成功创建任务且总行数=3(按列名匹配解析,不因列顺序拒绝)<br>2. 任务"已完成"、成功数=3<br>3. zip 批次划分、运单包命名与列序正常文件完全一致(归批与命名不受列序影响) | 对应TP-U-004;REQ-005(需求 4.2.2 仅约束"列名缺失或不符"未约束列顺序,按列名匹配口径设计;若实现按固定列序读取则本用例失败需回归,见文末实现口径确认项) |
| PLT_TMS_FPKG_014 | 平台端-运单管理-运单文件包-上传校验 | 验证损坏与加密 xlsx 上传被拒绝且服务端无异常暴露 | P1 | 功能测试 | 1. ACC-001 已登录;2. 准备 ERR-008(截断 xlsx、缺 workbook.xml 的伪 xlsx)、带密码加密 xlsx、0 字节空文件 | 1. 依次上传截断 xlsx 与伪 xlsx<br>2. 上传带密码加密 xlsx<br>3. 上传 0 字节空文件<br>4. 观察每次提示并检查任务列表、服务端日志 | ERR-008(截断/伪 xlsx);加密 xlsx;BND-014(0 字节空文件) | 1. 全部整体拒绝,提示"文件损坏/无法读取"类可理解原因,加密文件给出可理解提示而非堆栈报错<br>2. 页面无 500/白屏,服务端日志无未捕获异常堆栈<br>3. 均不创建任务,后台无残留半任务记录 | 对应TP-U-005;REQ-005 |
| PLT_TMS_FPKG_015 | 平台端-运单管理-运单文件包-上传校验 | 验证单文件 2000 行成功与 2001 行整体拒绝的行数上限边界 | P1 | 功能测试 | 1. ACC-001 已登录;2. 环境已准备 2000 个有效运单并生成 XLS-006 清单(数据缺口 #1/#12);3. 已构造 2001 行清单 | 1. 上传 XLS-006(2000 行)等待任务完成并核对成功数<br>2. 上传 2001 行清单<br>3. 检查第二次上传后的任务列表与提示 | XLS-006(2000 行);BND-005/BND-006(2000/2001 行) | 1. 2000 行任务创建成功且最终成功数=2000、失败数=0<br>2. 2001 行文件上传即整体拒绝,提示行数超限类原因<br>3. 2001 行不创建任务(列表无新增行、数据库无记录)<br>4. 行数口径:2000 行含、2001 行即超限拒绝 | 对应TP-U-006;REQ-004(决议#9);Q3 已按需求口径收敛:需求 4.2.1 明确"单文件行数上限 2000 行",按数据行计 2000 成功/2001 拒绝 |
| PLT_TMS_FPKG_016 | 平台端-运单管理-运单文件包-上传校验 | 验证仅表头 0 数据行的空清单被拒绝且不生成空任务 | P1 | 功能测试 | 1. ACC-001 已登录;2. 准备未填写任何数据行的 XLS-008 模板文件 | 1. 直接上传未填写数据的模板 XLS-008<br>2. 观察拒绝提示<br>3. 检查任务列表与对象存储 | XLS-008(仅表头 0 数据行);BND-001 | 1. 上传被文件级拒绝,提示"清单无数据行"类明确原因<br>2. 不创建任务:列表无新增行、数据库无任务记录<br>3. 不生成任何空 zip 或空文件包(对象存储无空包残留) | 对应TP-U-006;REQ-004;Q2 已收敛:按文件级拒绝处理,依据需求三章"填写运单清单并上传"与 4.2.2 处理原则(任务处理对象为有效数据行)及测试点建议口径,若实现按 0 行任务创建需回归修订本用例 |
| PLT_TMS_FPKG_017 | 平台端-运单管理-运单文件包-上传校验 | 验证文件大小 10MB 临界值两侧的接受与拒绝行为 | P1 | 功能测试 | 1. ACC-001 已登录;2. 用 openpyxl 构造恰好 10MB 与 10MB+1B 的合法结构 xlsx(数据缺口 #12) | 1. 上传恰好 10MB 的合法清单<br>2. 上传 10MB+1B 的清单<br>3. 分别检查任务列表与提示 | BND-012(10MB 整);BND-013(10MB+1B) | 1. 恰好 10MB 文件上传成功并正常创建任务("大小不超过 10MB"含等于)<br>2. 10MB+1B 整体拒绝,提示大小超上限类原因<br>3. 拒绝场景不创建任务 | 对应TP-U-007;REQ-004(决议#9);10MB 字节口径(10 的 6 次方或 2 的 20 次方)见数据缺口 #16,执行前与开发确认 |
| PLT_TMS_FPKG_018 | 平台端-运单管理-运单文件包-上传校验 | 验证行数上限与大小上限两条限制相互独立生效 | P1 | 功能测试 | 1. ACC-001 已登录;2. 构造文件一:50 行但单元格嵌入超长文本使体积超 10MB;3. 构造文件二:2001 行普通数据体积约 1MB | 1. 上传文件一观察拒绝原因<br>2. 上传文件二观察拒绝原因<br>3. 对比两条提示文案<br>4. 检查任务列表 | 文件一(行数少体积超限);文件二(行数超限体积小);BND-006/BND-013 | 1. 文件一被大小限制拒绝(提示大小超上限)<br>2. 文件二被行数限制拒绝(提示行数超限)<br>3. 两条提示原因可区分不混淆<br>4. 两者均不创建任务 | 对应TP-U-007;REQ-004(项目画像 §8.3 Excel 大数据量惯例,两条限制独立生效) |
| PLT_TMS_FPKG_019 | 平台端-运单管理-运单文件包-数据校验 | 验证序号非正整数的行计入失败清单且有效行不受影响 | P0 | 功能测试 | 1. ACC-001 已登录;2. 环境存在 XLS-002 对应有效运单;3. 构造 7 行清单:1 行合法(序号 9+XLS-002 数据)+6 行序号分别为 0、-1、1.5、abc、空、全角数字"1"(货源单号/运单号按 XLS-101~105 构造) | 1. 上传该 7 行清单等待任务完成<br>2. 查看任务状态与成功/失败数<br>3. 下载失败清单核对 6 个失败行的原因<br>4. 下载 zip 核对成功行 | XLS-101/102/103/104/105(序号 0/-1/1.5/abc/空);全角数字"1"构造行;ERR-020 | 1. 任务状态"已完成·部分失败",成功数=1、失败数=6<br>2. 6 个失败行原因均含"序号非正整数"类文案(一行并存多项问题时原因以首要或并列展示,以实现文案为准,不得将非法序号行判为成功)<br>3. 合法行正常打包(zip 含其运单包)<br>4. 成功数+失败数=总行数 7,数据库统计一致 | 对应TP-U-008;REQ-006(执行时顺带探测 BND-025/026/027 极值序号:int32 上限 2147483647 行与 15 位以上数字行应"合法或明确报错,不得静默截断",防止破坏最小序号判定链;见文末确认项 #9) |
| PLT_TMS_FPKG_020 | 平台端-运单管理-运单文件包-数据校验 | 验证序号全文件唯一的重复序号行计入失败清单且首行保留 | P0 | 功能测试 | 1. ACC-001 已登录;2. 构造 3 行清单:行1 序号 1+YD20260901001(张三批)、行2 序号 1+YD20260901002(李四批)、行3 序号 2+YD20260901003(张三批)——重复序号 1 跨张三/李四两个批次 | 1. 上传该 3 行清单等待完成<br>2. 核对失败清单行与原因<br>3. 下载 zip 核对保留行批次归属与证件挂载 | XLS-106(两行序号均为 1);XLS-003 行;决议#13 | 1. 行1(首现行)保留处理、行2(重复行)进失败清单且原因明确"序号重复"类<br>2. 唯一性范围为全文件:重复序号跨张三/李四批次同样剔除,不按批次内判定<br>3. 行3 正常打包;行1 与行3 归张三同一批次,行1 为最小序号运单含证件后缀<br>4. 成功数=2、失败数=1,统计一致 | 对应TP-U-009;REQ-006(决议#13 序号全文件唯一;序号决定最小序号判定联动 PLT_TMS_FPKG_053) |
| PLT_TMS_FPKG_021 | 平台端-运单管理-运单文件包-数据校验 | 验证货源单号或运单号为空的行计入失败清单且原因区分字段 | P0 | 功能测试 | 1. ACC-001 已登录;2. 构造 6 行清单:XLS-107(货源单号空串)、货源单号为纯空格行、XLS-108(运单号空串)、运单号为纯空格行、XLS-109(两者均空)、1 行合法基准行(序号 9+XLS-002) | 1. 上传该清单等待完成<br>2. 逐行核对失败清单原因<br>3. 核对成功行打包情况 | XLS-107/108/109;ERR-022(空串与纯空格) | 1. 空串与纯空格均判为空(trim 后校验)<br>2. 失败原因区分"货源单号为空"与"运单号为空";两者均空时并列或合并提示(以实现文案为准,不误报单一字段原因)<br>3. 合法基准行正常打包<br>4. 任务"已完成·部分失败",成功数=1、失败数=5,统计一致 | 对应TP-U-010;REQ-006 |
| PLT_TMS_FPKG_022 | 平台端-运单管理-运单文件包-数据校验 | 验证运单号在系统中不存在的行失败原因准确且不影响其他行 | P0 | 功能测试 | 1. ACC-001 已登录;2. 构造 4 行清单:XLS-110(1/HY202609001/YD20991231001 不存在)、行2 运单号为"YD20260901001 "(尾带空格,系统存在该单,ERR-027)、行3 运单号为 XLS-001 单号的小写变体 yd20260901001、XLS-001 合法行 | 1. 上传该 4 行清单等待完成<br>2. 核对失败清单原因<br>3. 下载 zip 核对成功行<br>4. 记录尾空格行与大小写变体行的判定结果并核对 zip 中其导出行为 | XLS-110;ERR-027(尾空格运单号);XLS-001 小写变体构造行;XLS-001 | 1. XLS-110 行失败且原因"运单号在系统中不存在"(原型文案)<br>2. 一行失败不影响同文件其他有效行打包<br>3. 尾空格行与大小写变体行的存在性校验与实际导出均采用同一匹配口径(trim/大小写敏感与否两处行为一致:匹配则一致成功导出、不匹配则一致按"运单号在系统中不存在"失败),不出现校验通过但导出缺单的不一致<br>4. 任务统计与状态准确 | 对应TP-U-011;REQ-006 |
| PLT_TMS_FPKG_023 | 平台端-运单管理-运单文件包-数据校验 | 验证货源单号与运单实际所属货源不一致的行失败且正确配对行成功 | P0 | 功能测试 | 1. ACC-001 已登录;2. 环境运单 YD20260901001 实际所属货源为 HY202609001(数据缺口 #1);3. 构造 2 行清单:XLS-111(1/HY202609009/YD20260901001 错配)、XLS-001(1/HY202609001/YD20260901001 正确配对) | 1. 上传该 2 行清单等待完成<br>2. 核对失败清单原因<br>3. 下载 zip 确认正确配对行打包 | XLS-111(错配);XLS-001(正确配对);决议#6 | 1. 错配行失败且原因"文件中货源单号与该运单实际所属货源不一致"(原型文案)<br>2. 正确配对行正常打包<br>3. 归属判定以系统数据为准,不因清单填写顺序改变<br>4. 成功数=1、失败数=1,任务"已完成·部分失败" | 对应TP-U-012;REQ-006(决议#6) |
| PLT_TMS_FPKG_024 | 平台端-运单管理-运单文件包-数据校验 | 验证同一运单号文件内重复时首现行保留且不产生重复运单包 | P0 | 功能测试 | 1. ACC-001 已登录;2. 构造 XLS-112:两行同一运单号 YD20260901001(序号 1、2 不同,货源单号均正确填 HY202609001) | 1. 上传该 2 行清单等待完成<br>2. 核对失败清单与原因<br>3. 下载 zip 检索该运单包出现次数 | XLS-112(序号 1、2 同运单号) | 1. 首现行(序号 1)保留处理并打包,zip 中该运单包仅出现一次<br>2. 重复行(序号 2)进失败清单,失败原因明确为运单号文件内重复类文案(区别于序号重复原因)<br>3. 不产生两个运单包<br>4. 成功数=1、失败数=1,统计一致 | 对应TP-U-013;REQ-006 |
| PLT_TMS_FPKG_025 | 平台端-运单管理-运单文件包-数据校验 | 验证缺司机或车辆信息的运单行失败原因标注无法归批 | P0 | 功能测试 | 1. ACC-001 已登录;2. 环境准备缺司机信息运单、缺车辆信息运单各 1 单(XLS-113/114,数据缺口 #5);3. 构造 4 行清单:XLS-113、XLS-114、XLS-001、XLS-003(后两行同属张三批合法行) | 1. 上传该 4 行清单等待完成<br>2. 核对失败清单两行原因<br>3. 下载 zip 核对批次划分与证件挂载 | XLS-113(缺司机);XLS-114(缺车辆);XLS-001/003 | 1. 两行均失败且原因标注"无法归批"类文案(可区分缺司机/缺车辆或统一归批失败文案,以实现为准)<br>2. 剔除后批次按剩余有效行正确划分:XLS-001/003 归张三一批且最小序号运单含证件<br>3. 任务"已完成·部分失败",成功数=2、失败数=2 | 对应TP-U-014;REQ-006(六#5) |
| PLT_TMS_FPKG_026 | 平台端-运单管理-运单文件包-数据校验 | 验证单文件多类数据级错误并存时各行独立判定 | P1 | 功能测试 | 1. ACC-001 已登录;2. 构造 6 行清单:1 行合法(XLS-001)+1 行序号重复(XLS-106 重复行)+1 行运单不存在(XLS-110)+1 行货源错配(XLS-111)+1 行无法归批(XLS-113)+1 行单号为空(XLS-107);序号重复行与合法行 XLS-001 共用序号 1(首现行保留成功、重复行计失败,口径同 020),其余 4 个失败行序号取互不相同的合法值(如 2/3/4/5) | 1. 上传该 6 行清单等待完成<br>2. 逐行核对失败清单原因<br>3. 核对成功行打包 | XLS-001/106/110/111/113/107 组合清单 | 1. 5 个失败行各自失败原因准确、互不串行(序号重复、运单不存在、货源不一致、无法归批、单号为空各自对应)<br>2. 合法行正常打包<br>3. 成功数=1+失败数=5=总行数 6<br>4. 任务状态"已完成·部分失败" | 对应TP-U-015;REQ-006/REQ-007(规则组合场景;执行时顺带验证单行多重非法的失败原因展示优先级,XLS-115) |
| PLT_TMS_FPKG_027 | 平台端-运单管理-运单文件包-上传校验 | 验证文件级错误与数据级错误共存时文件级优先整体拒绝 | P1 | 功能测试 | 1. ACC-001 已登录;2. 构造清单:表头缺"货源单号"列且数据行含不存在的运单号 YD20991231001 | 1. 上传该清单<br>2. 观察拒绝提示<br>3. 检查任务列表与失败清单 | ERR-004(缺列)+XLS-110(不存在运单号)组合构造文件 | 1. 上传即整体拒绝(文件级优先),提示列名缺失类原因<br>2. 不创建任务,不进入数据级校验与失败清单流程<br>3. 无"已完成·部分失败"类任务记录产生 | 对应TP-U-015;REQ-005/REQ-006(4.2.2 处理原则:文件级错误整体拒绝) |
| PLT_TMS_FPKG_028 | 平台端-运单管理-运单文件包-数据校验 | 验证单元格注入类内容按行级失败处理且无注入副作用 | P1 | 安全性测试 | 1. ACC-001 已登录;2. 构造 6 行清单:ERR-030(货源单号 HY202609001' OR '1'='1)、ERR-031(运单号 YD20260901001'; DROP TABLE waybill;--)、ERR-032(序号 1 OR 1=1)、ERR-033(运单号含 script 标签)、1 行含 Emoji 运单号、1 行合法基准(XLS-002) | 1. 上传该清单等待完成<br>2. 核对失败清单中各行的展示与文件内容<br>3. 检查任务列表页面回显<br>4. 检查数据库与任务状态 | ERR-030/031/032/033;Emoji 构造行;XLS-002 | 1. 注入内容行均按数据级原因失败(查无此单/序号非正整数等),SQL 不执行、无数据库异常、无 500<br>2. 失败清单 xlsx 与页面回显对脚本标签转义展示,不执行脚本<br>3. Emoji 行不崩溃不乱码<br>4. 合法行正常打包,数据库表数据完整无被篡改痕迹 | 对应TP-U-016;REQ-006 |
| PLT_TMS_FPKG_029 | 平台端-运单管理-运单文件包-数据校验 | 验证超长单号与超长特殊字符源文件名的防御处理 | P1 | 功能测试 | 1. ACC-001 已登录;2. 构造清单 A:运单号为 256 字符以上连续字符串(ERR-035);3. 构造清单 B:合法 3 行数据、源文件名为 300 字符及含 # % & 空格 全角字符 Emoji 的文件(ERR-036/038/039,经接口直传构造) | 1. 上传清单 A 观察行级处理<br>2. 上传清单 B 观察任务创建与列表"源文件名"展示<br>3. 完成后下载失败清单与总包核对命名<br>4. 检查服务端目录无逃逸文件 | ERR-035(超长运单号);ERR-034(XSS 文件名);ERR-036/037/038/039(超长、路径穿越类、特殊字符、Unicode 文件名) | 1. 超长运单号行按"运单号在系统中不存在"失败,不截断误判为存在、系统不崩溃<br>2. 特殊字符/超长文件名任务正常创建处理,列表展示截断省略且有完整名 tooltip(原型 .te 样式);含脚本标签的源文件名(ERR-034)在列表转义展示为纯文本,不触发弹窗执行<br>3. 下载产物(总包/失败清单)命名不受源文件名污染,上传下载目录无路径逃逸文件<br>4. Emoji/生僻字文件名编码正常(UTF-8 兼容) | 对应TP-U-016;REQ-006(ERR-037 路径穿越并入断言 3) |
| PLT_TMS_FPKG_030 | 平台端-运单管理-运单文件包-上传校验 | 验证上传弹窗按钮态回显与状态重置的交互细节 | P1 | 易用性测试 | 1. ACC-001 已登录;2. 本地准备 BND-015 典型 3 行清单(12KB 级,内含 XLS-001/002/003) | 1. 打开上传弹窗观察未选文件时"开始上传并创建任务"按钮状态<br>2. 点击选择 BND-015 文件观察 drop 区状态与回显内容<br>3. 分别用取消按钮、右上角关闭、点击遮罩三种方式关闭弹窗后重新打开<br>4. 用拖拽方式将文件拖入 drop 区上传<br>5. 重复打开弹窗检查是否残留上次文件 | BND-015(12KB 3 行清单);XLS-001/002/003 | 1. 未选文件时按钮置灰 disabled<br>2. 选择文件后 drop 区变绿色态并显示"已选择:运单清单_合肥仓0908.xlsx(大小·行数)"类回显,文件名/大小/行数与实际一致<br>3. 三种关闭方式均生效;重开弹窗不残留上次选择文件(状态重置)<br>4. 拖拽与点击两种方式均可正常上传 | 对应TP-U-017;REQ-004(原型交互;防重复点击归 PLT_TMS_FPKG_074 验证) |
| PLT_TMS_FPKG_031 | 平台端-运单管理-运单文件包-上传校验 | 验证同一清单文件重复上传生成两个独立任务 | P2 | 功能测试 | 1. ACC-001 已登录;2. 已用文件"运单清单_合肥仓0908.xlsx"(XLS-001/002/003)完成过一次上传生成任务 T1 | 1. 使用同一文件再次上传生成任务 T2<br>2. 对比两任务编号、源文件名、总行数、上传时间<br>3. 等待两任务均完成后分别下载 zip 并比对内容<br>4. 删除任务 T1 后检查任务 T2 | CMB-013(同文件上传 2 次);XLS-001/002/003 | 1. 生成两个任务,任务编号不同、总行数均为 3、上传时间分别记录<br>2. 两任务各自完成且 zip 内容一致、互不覆盖(决议口径:允许重复、不合并去重)<br>3. 删除 T1 不影响 T2 的列表展示与下载<br>4. 数据库存在两条独立任务记录 | 对应TP-U-018;REQ-023(六#7 确认决议口径) |
| PLT_TMS_FPKG_032 | 平台端-运单管理-运单文件包-任务列表 | 验证任务状态待处理到处理中到已完成的正向流转 | P0 | 功能测试 | 1. ACC-001 已登录;2. 环境运单齐备(XLS-001/002/003);3. 已知当前并发队列空闲(若有并发占用,配合 CNC-003 制造"待处理"观察窗口) | 1. 上传 XLS-001/002/003 三行清单<br>2. 上传后立即刷新列表观察状态<br>3. 轮询观察状态变化直至终态<br>4. 核对各状态下完成时间字段与数据库状态值 | XLS-001/002/003;STT-001/002/003 | 1. 状态按 待处理→处理中→已完成 依次流转,单向推进不回跳不跳态<br>2. 处理中期间列表可见进度变化<br>3. 已完成后完成时间字段有值;待处理/处理中状态下完成时间为"—"<br>4. 数据库任务状态字段值与页面标签一一对应(状态字典正确) | 对应TP-T-001;REQ-008 |
| PLT_TMS_FPKG_033 | 平台端-运单管理-运单文件包-任务列表 | 验证五种任务状态标签文案与颜色的映射不混用 | P0 | 功能测试 | 1. 准备 5 种状态任务各 1:待处理(并发占满排队 STT-001)、处理中(STT-002)、已完成(STT-003)、已完成·部分失败(5 行 3 成 2 败 STT-004)、失败(OBS 断开构造 STT-005);2. ACC-001 已登录 | 1. 在任务列表逐一查看 5 种状态标签<br>2. 截图比对各标签颜色与文案<br>3. 与原型 anhuibaba_file_package.html 标签样式比对<br>4. 刷新页面与翻页后复核渲染一致性 | STT-001~005 各 1 任务;漏测清单 §6 颜色映射 | 1. 五种标签文案逐字为 待处理/处理中/已完成/已完成·部分失败/失败<br>2. 颜色映射与原型一致(待处理灰、处理中蓝、已完成绿、失败红、已完成·部分失败橙,具体色值以原型为准),五色不混用<br>3. 同一状态在列表各处渲染一致,无状态与颜色错配 | 对应TP-T-001;REQ-008(漏测清单 §6 标签颜色映射) |
| PLT_TMS_FPKG_034 | 平台端-运单管理-运单文件包-任务列表 | 验证部分行失败的任务记已完成部分失败且仍可下载 | P0 | 功能测试 | 1. ACC-001 已登录;2. 构造 5 行清单:3 行合法(XLS-001/002/003)+2 行非法(序号 0 行按 XLS-101、序号 99 行运单号 YD20991231001 按 XLS-110) | 1. 上传该 5 行清单等待完成<br>2. 查看状态标签与成功/失败数<br>3. 查看该行操作列按钮<br>4. 下载 zip 核对内容<br>5. 下载失败清单核对行数 | XLS-001/002/003+XLS-101+XLS-110;STT-004 | 1. 状态标签为橙色"已完成·部分失败"(非"失败")<br>2. 成功数=3、失败数=2<br>3. 操作列同时显示"下载文件包"与"失败清单"两个按钮<br>4. zip 内仅含 3 个成功运单的资料<br>5. 失败清单含 2 行且原因准确 | 对应TP-T-002;REQ-007/REQ-008(决议#7 部分失败仍可下载) |
| PLT_TMS_FPKG_035 | 平台端-运单管理-运单文件包-任务列表 | 验证失败任务无下载按钮且删除按钮仅失败状态可见 | P1 | 功能测试 | 1. 准备失败任务 1(OBS 断开构造 STT-005)、已完成任务 1(STT-003)、处理中任务 1(STT-002);2. ACC-001 已登录 | 1. 查看失败任务行的状态、总行数/成功/失败数、完成时间、操作按钮<br>2. 查看已完成任务行操作按钮<br>3. 查看处理中任务行操作按钮<br>4. 比对三类状态的按钮映射 | STT-005/STT-003/STT-002 任务 | 1. 失败任务无"下载文件包"按钮,总行数有值、成功数 0、失败数 0、完成时间"—"<br>2. 仅失败任务行显示"删除"按钮,已完成/处理中任务无删除入口<br>3. 失败任务无"失败清单"按钮(系统级失败不产生数据级失败清单) | 对应TP-T-003;REQ-008/REQ-024(漏测清单 §4 状态与按钮映射) |
| PLT_TMS_FPKG_036 | 平台端-运单管理-运单文件包-任务列表 | 验证删除失败任务有确认交互且删除后重新上传可成功 | P1 | 功能测试 | 1. 存在失败任务 T1(源清单为 XLS-001/002/003 三行文件);2. ACC-001 已登录 | 1. 点击 T1 行"删除"按钮<br>2. 在确认弹窗先点取消<br>3. 再次点击并确认删除<br>4. 检查列表与数据库记录<br>5. 重新上传同一清单文件等待新任务完成 | STT-005→STT-007;XLS-001/002/003 清单文件 | 1. 删除有二次确认交互,取消后任务保留<br>2. 确认后列表移除该行,数据库任务记录删除或标记已删除(STT-007)<br>3. 重新上传同清单创建新任务并正常完成(成功数=3)<br>4. 新任务编号与旧任务不同,互不影响 | 对应TP-T-003;REQ-024(六#10 删除后重新上传) |
| PLT_TMS_FPKG_037 | 平台端-运单管理-运单文件包-任务列表 | 验证任务列表十项字段完整且默认按上传时间倒序 | P1 | 功能测试 | 1. ACC-001 已登录;2. 列表中已有 3 条以上不同时间上传、不同状态的任务 | 1. 核对列表表头字段与需求 4.3.2 清单<br>2. 逐行核对各字段取值(任务编号/源文件名/上传人/上传时间/任务状态/总行数/成功/失败/完成时间/操作)<br>3. 核对默认排序<br>4. 核对数值与时间格式 | 需求 4.3.2 十字段;IDC-012;IDC-001 | 1. 表头含任务编号/源文件名/上传人/上传时间/任务状态/总行数/成功/失败/完成时间/操作十项无缺漏<br>2. 默认按上传时间倒序(最新在上)<br>3. 空值展示"—"而非 0 或 null;时间为 YYYY-MM-DD HH:mm:ss 格式<br>4. 各字段值与数据库任务表一致 | 对应TP-T-004;REQ-009 |
| PLT_TMS_FPKG_038 | 平台端-运单管理-运单文件包-任务列表 | 验证任务列表分页翻页数据不重复不丢失且总数正确 | P1 | 功能测试 | 1. ACC-001 已登录;2. 通过 XLS-007 等最小清单累计创建超过 1 页容量的任务(15 条以上) | 1. 记录第 1 页任务编号集合与分页总条数<br>2. 翻至第 2 页记录任务编号集合<br>3. 对比两页集合<br>4. 切换每页条数(20→50)复核<br>5. 若页面提供状态筛选/搜索则验证筛选与重置 | XLS-007 复用上传形成的任务集 | 1. 两页任务编号无重复无丢失<br>2. 分页总条数与数据库任务总数一致<br>3. 切换每页条数后分页重算正确、数据不重不漏<br>4. 若提供筛选则筛选结果准确且重置恢复默认;若未提供筛选,确认设计取舍后关闭本断言(见文末实现口径确认项) | 对应TP-T-004;REQ-009(漏测清单 §4 后台 CRUD 检查项) |
| PLT_TMS_FPKG_039 | 平台端-运单管理-运单文件包-任务列表 | 验证上传后异步处理不阻塞页面且处理中任务展示进度 | P1 | 功能测试 | 1. ACC-001 已登录;2. 准备 1000 行规模合法清单(CNC-001/CNC-006,处理时长足以观察) | 1. 上传 1000 行清单<br>2. 上传提交后立即切换其他菜单操作验证页面不阻塞<br>3. 返回任务列表观察处理中行的进度展示<br>4. 间隔 1 分钟记录进度数值变化直至完成 | BND-007(1000 行清单,按 CNC-006 的 500 批×2 运单混合结构构造);STT-002(原型 186/200 形式) | 1. 上传提交后页面立即可操作,无整页阻塞等待<br>2. 处理中行显示进度条与"已处理/总数"形式进度(如 186/1000)<br>3. 进度随时间持续推进,最终与成功/失败数一致<br>4. 数据库统计字段与进度展示同源一致 | 对应TP-T-005;REQ-019 |
| PLT_TMS_FPKG_040 | 平台端-运单管理-运单文件包-任务列表 | 验证关闭页面或退出登录后任务继续在后台推进 | P1 | 功能测试 | 1. ACC-001 已登录;2. 准备 500 行以上合法清单 | 1. 上传 500 行清单后立即退出登录(或关闭浏览器)<br>2. 等待 5 分钟<br>3. 重新登录进入任务列表查看该任务进度与状态<br>4. 等待其终态并核对统计 | XLS-007 扩展 500 行清单;STT-002 | 1. 退出期间任务仍在后台处理(数据库状态与统计持续推进)<br>2. 重新进入后进度继续显示而非归零重处理<br>3. 任务最终正常完成,无因会话中断导致的失败或重复任务<br>4. 成功/失败数与清单实际数据一致 | 对应TP-T-005;REQ-019 |
| PLT_TMS_FPKG_041 | 平台端-运单管理-运单文件包-任务列表 | 验证失败清单下载内容四列与实际失败行一一对应 | P1 | 功能测试 | 1. 已存在"已完成·部分失败"任务(参照 PLT_TMS_FPKG_026 的构造方式,含 XLS-101/110/111/113 四类失败行 + 1 行合法行);2. ACC-001 已登录 | 1. 点击该行"失败清单"下载 xlsx<br>2. 核对文件名(IDC-010:失败清单_【任务编号】.xlsx)<br>3. 逐行核对四列内容<br>4. 与上传清单原值及任务失败数比对 | IDC-010;XLS-101/110/111/113 构造任务 | 1. 下载得到 xlsx,文件名=失败清单_【任务编号】.xlsx<br>2. 含 序号/货源单号/运单号/失败原因 四列<br>3. 行数=任务失败数;每行前三列与上传清单原值一致,失败原因与 4.2.2 各规则文案一致<br>4. 数据库失败明细记录与 xlsx 内容一致 | 对应TP-T-006;REQ-018 |
| PLT_TMS_FPKG_042 | 平台端-运单管理-运单文件包-任务列表 | 验证失败清单按钮仅在存在失败行时显示 | P1 | 功能测试 | 1. 准备全部成功任务 1(XLS-001/002/003,STT-003)、部分失败任务 1(STT-004);2. 一次文件级被拒上传记录(未创建任务);3. ACC-001 已登录 | 1. 查看全部成功任务操作列<br>2. 查看部分失败任务操作列<br>3. 确认文件级被拒场景在列表中无任务行<br>4. 比对按钮与失败状态的映射 | STT-003 与 STT-004 任务;ERR-004 被拒上传 | 1. 全部成功任务不显示"失败清单"按钮(仅"下载文件包")<br>2. 部分失败任务两个按钮齐备<br>3. 文件级被拒上传无任务行亦无失败清单入口(未创建任务) | 对应TP-T-006;REQ-018(漏测清单 §4 按钮映射) |
| PLT_TMS_FPKG_043 | 平台端-运单管理-运单文件包-任务列表 | 验证打包过程中服务异常后任务置失败且无半成品可下载 | P1 | 功能测试 | 1. ACC-001 已登录;2. 具备服务重启/打包进程终止的运维配合手段;3. 已上传 1000 行清单使处理窗口足够 | 1. 上传 1000 行清单进入"处理中"<br>2. 处理期间重启服务或终止打包进程<br>3. 服务恢复后观察该任务终态<br>4. 检查下载按钮并直调下载接口<br>5. 删除该任务后重新上传 | XLS-006(1000 行);STT-005 | 1. 异常后任务最终置"失败",不永久停留"处理中"(无僵尸任务)<br>2. 下载按钮不显示,直调下载接口返回不可下载错误,无半成品 zip 提供下载<br>3. 半成品临时文件被清理,不占用 7 天保留期配额(存储核查)<br>4. 删除重传后新任务正常完成 | 对应TP-T-007;REQ-024(六#10) |
| PLT_TMS_FPKG_044 | 平台端-运单管理-运单文件包-任务列表 | 验证查看结构弹窗的任务信息与文件包结构树预览 | P3 | 功能测试 | 1. 已完成任务 1(多批次,XLS-001/002/003)与处理中任务 1;2. ACC-001 已登录 | 1. 点击已完成任务行"查看结构"<br>2. 核对弹窗内任务信息(源文件名/上传人/时间/处理结果)与批次划分说明<br>3. 展开结构树逐层核对命名<br>4. 与实际下载 zip 的目录结构逐层比对<br>5. 查看处理中任务是否提供结构预览<br>6. 测试关闭按钮与遮罩关闭 | STT-003/STT-002 任务;IDC-006/007/008 命名 | 1. 弹窗展示任务信息与批次划分说明且与实际归批一致<br>2. 结构树命名与实际 zip 逐层一致(总包/批次包/运单包/证件后缀)<br>3. 处理中任务不提供结构预览下载(原型仅"结构预览"按钮无下载)<br>4. 关闭按钮与遮罩关闭均可用 | 对应TP-T-008;REQ-011;⚠️ 待确认 Q1:"查看结构/文件包结构预览"仅见于原型、需求正文未定义——影响本用例保留与否与断言范围;建议需求方确认本期是否实现,确认裁剪则删除本用例,确认实现则按弹窗实际字段回填断言 |
| PLT_TMS_FPKG_045 | 平台端-运单管理-运单文件包-打包归批 | 验证按系统内三要素归批并复现需求五章示例 | P0 | 功能测试 | 1. ACC-001 已登录;2. 环境运单与需求五章示例一致:YD20260901001/YD20260901003 同属张三/340102199001011234/皖A12345,YD20260901002 属李四/340102199001015678/皖B67890,另有张三/皖A12345 挂货源 HY202609002 的有效运单 1 单(CMB-007,数据缺口 #1/#8) | 1. 上传 XLS-001/002/003 三行清单并追加 CMB-007 运单行(序号 1/2/3/4,货源单号 HY202609001/HY202609002/HY202609001/HY202609002)<br>2. 等待任务完成并下载 zip<br>3. 解压核对批次包数量与运单包归属<br>4. 确认清单不含司机列、归批依据为系统内数据 | XLS-001/002/003;CMB-007(跨货源同批次行);CMB-001/002;IDC-004/005 | 1. zip 内恰有 2 个批次包:张三-340102199001011234-皖A12345 与 李四-340102199001015678-皖B67890<br>2. 批次①含运单包 1-YD20260901001-HY202609001-含司机及车辆证件、3-YD20260901003-HY202609001 与 4-【CMB-007 运单号】-HY202609002(跨货源运单仍归同批,归批不看货源单号)<br>3. 批次②含 2-YD20260901002-HY202609002-含司机及车辆证件(单运单批次)<br>4. 批次包数量=三要素去重数 2,与需求五章示例逐项一致 | 对应TP-P-001;REQ-010(含 CMB-007 跨货源不拆批负向对照,与 046 拆批两侧互补) |
| PLT_TMS_FPKG_046 | 平台端-运单管理-运单文件包-打包归批 | 验证同一司机换车牌或同一车牌换司机均拆分批次 | P0 | 功能测试 | 1. 环境准备:张三(同证)分别挂皖A12345 与皖C88888 的运单各 1 单(CMB-003);皖A12345 分别由张三与王五承运的运单各 1 单(CMB-004)(数据缺口 #8);2. ACC-001 已登录 | 1. 上传含 CMB-003 两组运单的清单等待完成并下载 zip<br>2. 核对批次包数量与归属<br>3. 上传含 CMB-004 两组运单的清单重复验证<br>4. 核对各批次最小序号证件挂载 | CMB-003(同司机换车);CMB-004(同车换司机) | 1. 场景一 zip 含 2 个批次包(张三+皖A12345、张三+皖C88888),各批次独立判定最小序号并挂证件<br>2. 场景二 zip 含 2 个批次包(张三+皖A12345、王五+皖A12345)<br>3. 任一要素不同即拆批,各批次包内运单包归属正确<br>4. 批次包数量=三要素去重批次数 | 对应TP-P-002;REQ-010 |
| PLT_TMS_FPKG_047 | 平台端-运单管理-运单文件包-打包归批 | 验证同名同车牌但身份证号不同拆分为两个批次 | P0 | 功能测试 | 1. 环境准备两个司机档案:姓名均为张三、车辆均绑定皖A12345、身份证号分别为 340102199001011234 与 330102199201012345(CMB-005,数据缺口 #7),各有运单 1 单;2. ACC-001 已登录 | 1. 上传含两运单的清单(序号 1、2)<br>2. 任务完成后下载 zip<br>3. 核对批次包数量与两包身份证号差异<br>4. 核对各批次运单包证件子目录 | CMB-005;IDC-004 | 1. zip 含 2 个批次包,批次包名仅身份证号段不同(三要素缺一不可)<br>2. 每个批次包为单运单批次且运单包均含证件后缀与四个子目录<br>3. 不因姓名与车牌相同而合并为一批 | 对应TP-P-002;REQ-010 |
| PLT_TMS_FPKG_048 | 平台端-运单管理-运单文件包-打包归批 | 验证三层目录命名规则与需求示例逐字一致 | P0 | 功能测试 | 1. 已完成任务(XLS-001/002/003)且已下载 zip;2. 解压工具可用 | 1. 核对总包文件名<br>2. 核对批次包目录名(含身份证号完整 18 位)<br>3. 核对最小序号运单包名与证件后缀<br>4. 核对非最小序号运单包名<br>5. 检查 zip 顶层层级与连接符 | IDC-006/007/008;XLS-001/002/003 任务;决议#3 | 1. 总包名=运单资料_【任务编号】.zip<br>2. 批次包名=张三-340102199001011234-皖A12345(连接符"-",身份证号完整 18 位明文非脱敏)<br>3. 最小序号运单包=1-YD20260901001-HY202609001-含司机及车辆证件;非最小序号运单包=3-YD20260901003-HY202609001 无证件后缀<br>4. zip 顶层即批次包目录,无多余嵌套层级 | 对应TP-P-003;REQ-011(决议#3,命名与 4.4.2 逐字一致) |
| PLT_TMS_FPKG_049 | 平台端-运单管理-运单文件包-打包归批 | 验证最小序号运单包四子目录齐全且其余运单包仅含合同回单 | P0 | 功能测试 | 1. 已完成任务(XLS-001/002/003);2. 运单均已结算打款含支付回单与承运合同,张三/李四档案证件照片齐全(数据缺口 #1);3. ACC-001 已登录 | 1. 解压 zip 进入批次①最小序号运单包 1-YD20260901001-…-含司机及车辆证件<br>2. 核对四个子目录及文件<br>3. 进入 3-YD20260901003-…运单包核对子目录<br>4. 进入批次②单运单批次运单包 2-…核对<br>5. 抽检各子目录文件可打开 | IDC-009(合同/电子回单/司机证件/车辆证件);CMB-001/002 | 1. 最小序号运单包含 合同/电子回单/司机证件/车辆证件 四个子目录且均有文件<br>2. 3-…运单包仅含 合同/电子回单,确无司机证件/车辆证件子目录(既不生成空目录,目录内也不得含任何证件文件)<br>3. 单运单批次 2-…运单包含四子目录且带证件后缀<br>4. 抽检合同/回单/证件文件均可打开非损坏 | 对应TP-P-004;REQ-012(验收要点 2/3) |
| PLT_TMS_FPKG_050 | 平台端-运单管理-运单文件包-打包归批 | 验证合同子目录仅导出承运合同不含委托与框架合同 | P1 | 功能测试 | 1. 环境准备:运单 A 含承运合同、运单 B 仅含委托合同、运单 C 含承运+框架合同(CMB-015,数据缺口 #2/#3);2. ACC-001 已登录 | 1. 上传含运单 A/B/C 的清单等待完成<br>2. 下载 zip 分别核对三个运单包的合同子目录<br>3. 与各运单详情页-合同附件列表逐份比对<br>4. 核对失败清单 | CMB-015;STT-014/015;决议#5 | 1. 运单 A 合同子目录含全部承运合同文件且可打开<br>2. 运单 B 不导出委托合同(合同子目录不生成或不含委托合同文件),原因记入失败清单<br>3. 运单 C 仅导出承运合同,框架合同不入包<br>4. 导出合同集合与运单详情-合同附件当前列表一致 | 对应TP-P-005;REQ-013(决议#5 合同口径) |
| PLT_TMS_FPKG_051 | 平台端-运单管理-运单文件包-打包归批 | 验证多笔支付运单导出全部对应银行电子回单 | P1 | 功能测试 | 1. 环境准备含 3 笔支付记录的运单(数据缺口 #6);2. ACC-001 已登录;3. 承运结算-电子回单可查询该运单支付记录 | 1. 在承运结算-电子回单查询该运单支付与回单记录数<br>2. 上传含该运单的清单等待完成并下载 zip<br>3. 核对电子回单子目录文件数与内容<br>4. 抽查回单文件可打开 | BND-062/063;CMB-014(2 笔支付同类) | 1. 电子回单子目录含 3 份回单文件,与该运单 3 笔支付记录一一对应<br>2. 回单文件可打开且与银行回单原件一致<br>3. 同名回单自动追加 (1)、(2) 不互相覆盖 | 对应TP-P-006;REQ-013(术语表:电子回单=运单全部支付记录对应银行电子回单) |
| PLT_TMS_FPKG_052 | 平台端-运单管理-运单文件包-打包归批 | 验证司机与车辆证件按最小序号运单档案导出且全批仅一份 | P1 | 功能测试 | 1. 张三司机档案含身份证人像面/国徽面、驾驶证、从业资格证照片;皖A12345 车辆档案含行驶证、道路运输证照片(数据缺口 #1/#13);2. 已完成任务 zip(XLS-001/003 同批) | 1. 核对最小序号运单包司机证件子目录文件种类与档案一致<br>2. 核对车辆证件子目录文件种类<br>3. 全 zip 检索确认证件文件仅在最小序号运单包出现一次<br>4. 打开证件照片验证非损坏 | IDC-009;需求 4.4.3 档案口径 | 1. 司机证件含档案全部证件照片(身份证正反面、驾驶证、从业资格证等)<br>2. 车辆证件含行驶证、道路运输证等档案证件照片<br>3. 同批次其余运单包(3-…)无任何证件文件(不重复导出)<br>4. 照片文件可打开非损坏 | 对应TP-P-006;REQ-013(4.4.3 以最小序号运单挂载档案为准) |
| PLT_TMS_FPKG_053 | 平台端-运单管理-运单文件包-打包归批 | 验证最小序号运单被剔除后证件改挂重算的最小序号运单 | P0 | 功能测试 | 1. 张三批次构造 3 行:序号 1 行运单号填不存在的 YD20991231001(校验失败)、序号 3 行 YD20260901003、序号 5 行 YD20260901004(均有效,CMB-006+XLS-004);2. ACC-001 已登录 | 1. 上传该 3 行清单等待完成<br>2. 核对失败清单含序号 1 行<br>3. 下载 zip 核对批次①运单包命名与子目录<br>4. 全 zip 检索确认无序号 1 运单包 | CMB-006(序号 1、3、5);决议#8;XLS-003/004 | 1. 序号 1 行进失败清单,原因"运单号在系统中不存在"<br>2. 证件改挂序号 3:运单包名=3-YD20260901003-HY202609001-含司机及车辆证件,含四个子目录<br>3. 序号 5 运单包仅含合同+电子回单<br>4. 全 zip 无 1-… 运单包;成功数=2、失败数=1 | 对应TP-P-007;REQ-015(决议#8、六#6;全需求最易错点,回归必测) |
| PLT_TMS_FPKG_054 | 平台端-运单管理-运单文件包-打包归批 | 验证单运单批次唯一运单被剔除后整批不生成 | P0 | 功能测试 | 1. 构造 3 行清单:批次①为 XLS-001/003(张三批正常 2 行)、批次②唯一行填不存在的运单号(2/HY202609002/YD20991231001);2. ACC-001 已登录 | 1. 上传该清单等待完成<br>2. 下载 zip<br>3. 检索李四批次包是否存在<br>4. 核对失败清单与统计 | 构造清单(XLS-001/003+不存在单号行);CMB-006 变体 | 1. zip 内无 李四-340102199001015678-皖B67890 批次包<br>2. 失败清单含该行且原因"运单号在系统中不存在"<br>3. 张三批次包正常生成且证件挂载不受影响<br>4. 成功数=2、失败数=1,与 zip 内容一致 | 对应TP-P-007;REQ-015(决议#8 单运单批次剔除边界) |
| PLT_TMS_FPKG_055 | 平台端-运单管理-运单文件包-打包归批 | 验证运单无支付记录时电子回单缺失不阻断任务 | P0 | 功能测试 | 1. 环境准备无支付记录的已关闭运单 1 单(STT-012,司机取消终止流转,数据缺口 #4)与正常运单 XLS-001;2. ACC-001 已登录 | 1. 上传含两运单的清单等待完成<br>2. 查看任务状态<br>3. 下载 zip 核对无回单运单包的子目录<br>4. 核对失败清单原因 | STT-012(已关闭无支付);BND-061;六#4 | 1. 任务状态"已完成·部分失败"而非"失败"<br>2. 无回单运单包无"电子回单"子目录,其余子目录正常生成<br>3. 失败清单记"无电子回单:运单无支付记录"类原因(原型文案)<br>4. 正常运单不受影响完整打包 | 对应TP-P-008;REQ-015(六#4;按 4.4.4 条款一"不阻断仅记清单"口径设计,与条款二衔接见文末实现口径确认项数据缺口 #17) |
| PLT_TMS_FPKG_056 | 平台端-运单管理-运单文件包-打包归批 | 验证运单无合同附件时合同子目录不生成且不阻断 | P0 | 功能测试 | 1. 环境准备运单详情-合同附件为空的运单 1 单(CMB-016);2. 正常运单 XLS-001 可用;3. ACC-001 已登录 | 1. 上传含该运单与 XLS-001 的清单等待完成<br>2. 下载 zip 核对该运单包子目录<br>3. 核对失败清单与任务状态<br>4. 确认正常运单打包不受影响 | CMB-016;STT-014 | 1. 该运单包无"合同"子目录,其余子目录按规则正常<br>2. 失败清单记无合同类原因<br>3. 任务"已完成·部分失败",成功数含两运单中有效者<br>4. XLS-001 正常打包不阻断 | 对应TP-P-008;REQ-015(4.4.4 文件缺失不阻断) |
| PLT_TMS_FPKG_057 | 平台端-运单管理-运单文件包-打包归批 | 验证单文件 OBS 拉取前两次失败第三次成功正常入包 | P1 | 功能测试 | 1. 运维配合构造某运单合同文件 OBS 前 2 次访问失败、第 3 次成功(篡改 URL 或 mock,数据缺口 #11);2. ACC-001 已登录 | 1. 上传含该运单的清单<br>2. 观察任务处理与服务端重试日志<br>3. 任务完成后下载 zip<br>4. 核对该文件数量与内容 | BND-041/042(第 1、2 次失败第 3 次成功);数据缺口 #11 | 1. 系统自动重试,第 3 次拉取成功<br>2. 文件正常入包且 zip 内仅一份(无重试导致重复落盘)<br>3. 该运单不进失败清单<br>4. 任务正常完成不受影响 | 对应TP-P-009;REQ-015(项目画像 §6.1 华为云 OBS 为关键依赖) |
| PLT_TMS_FPKG_058 | 平台端-运单管理-运单文件包-打包归批 | 验证单文件重试 3 次全失败记入失败清单且不阻断任务 | P1 | 回归测试 | 1. 运维配合构造某运单全部文件 OBS 拉取持续失败(数据缺口 #11);2. 同清单另有正常运单;3. ACC-001 已登录 | 1. 上传清单观察服务端重试日志(恰 3 次后停止)<br>2. 任务完成后核对状态与失败清单<br>3. 下载 zip 检查该文件与临时残留<br>4. 核对其余运单完整打包 | BND-043(3 次全失败第 4 次不重试) | 1. 重试恰 3 次后停止,不无限重试<br>2. 该文件记入失败清单(原因含文件拉取失败类文案)<br>3. 任务继续处理其余文件并正常完成,不整体失败<br>4. zip 内无重复文件与半成品残留(重试幂等) | 对应TP-P-009;REQ-015;[AI修正: 历史缺陷防御](BUG-202607-02 重试幂等同类防御) |
| PLT_TMS_FPKG_059 | 平台端-运单管理-运单文件包-打包归批 | 验证运单包内文件保留原名且同目录重名自动追加序号 | P1 | 功能测试 | 1. 环境准备:同一运单上传 2 份同名合同附件;司机档案同时存在 身份证.jpg 与 身份证(1).jpg(BND-073,数据缺口 #13);2. ACC-001 已登录 | 1. 上传含该运单清单等待完成并下载 zip<br>2. 核对合同子目录两份同名文件命名<br>3. 核对司机证件子目录文件命名<br>4. 分别打开各文件核对内容对应各自原件<br>5. 检查跨运单包同名文件 | BND-071/072/073;CMB-014 | 1. 同目录第 2 个同名文件命名为 原名(1).后缀、第 3 个为 原名(2).后缀<br>2. 档案已有 身份证(1).jpg 时新导出同名文件命名不冲突(基于实际文件集合去重)<br>3. 各文件内容与各自原件对应且可打开<br>4. 跨运单包同名文件互不影响;原文件名(含中文/日期)未被篡改 | 对应TP-P-010;REQ-014 |
| PLT_TMS_FPKG_060 | 平台端-运单管理-运单文件包-打包归批 | 验证司机姓名含非法字符或超长时批次包命名不失败不乱码 | P1 | 功能测试 | 1. 环境准备司机档案:姓名含间隔号(阿依古丽·买买提)、姓名含 Windows 非法字符(正斜杠、反斜杠、冒号、星号、问号、英文双引号、尖括号、竖线,后台构造)、超长姓名档案(ERR-040,数据缺口 #5/#7 类构造);2. ACC-001 已登录 | 1. 上传含上述档案运单的清单等待完成<br>2. 下载 zip 到 Windows 解压<br>3. 核对批次包目录名的字符处理规则<br>4. 核对总包完整路径长度 | ERR-040(特殊字符/Emoji/超长姓名档案) | 1. 打包不失败、任务正常完成<br>2. 非法字符被统一替换或转义且规则可解释(具体策略以开发实现为准,见文末实现口径确认项)<br>3. Windows 解压无"路径过长/非法字符"错误、无乱码<br>4. 超长组合名不导致打包中断(截断策略确认后固化断言) | 对应TP-P-011;REQ-011(联动 PLT_TMS_FPKG_081 兼容性) |
| PLT_TMS_FPKG_061 | 平台端-运单管理-运单文件包-打包归批 | 验证 2000 行规模打包后 zip 包数量与任务统计严格一致 | P1 | 回归测试 | 1. XLS-006(2000 行混合多批次,其中混入 20 行非法行:运单号不存在类);2. ACC-001 已登录 | 1. 上传 2000 行清单等待完成<br>2. 记录总行数/成功数/失败数<br>3. 下载 zip 全量清点运单包数量与批次包数量<br>4. 与成功数、三要素去重批次数比对 | XLS-006;CMB-012/017 | 1. zip 内运单包数量=成功数(如成功 1980 则恰 1980 个运单包)<br>2. 批次包数量=三要素去重批次数<br>3. 成功数+失败数=总行数 2000<br>4. 全量清点无缺包无多包,列表统计与包内容不出现"两张皮" | 对应TP-P-012;REQ-004/REQ-012;[AI修正: 历史缺陷防御](BUG-202607-03 跨模块数据不一致) |
| PLT_TMS_FPKG_062 | 平台端-运单管理-运单文件包-打包归批 | 验证打包读取合同与回单来源于正确数据源而非缓存 | P1 | 回归测试 | 1. 环境运单 YD20260901001 含 2 份承运合同附件与 1 笔支付回单;2. 可查询支付流水表与合同附件表;3. ACC-001 已登录 | 1. 上传含该运单清单等待完成<br>2. 下载 zip 比对合同子目录文件与运单详情-合同附件列表<br>3. 比对电子回单文件与支付流水对应回单<br>4. 抽查服务端取数日志确认查询来源表 | STT-014;BND-062 | 1. zip 合同文件集合=运单详情-合同附件当前列表(非历史缓存)<br>2. 回单文件=支付流水表当前记录对应回单<br>3. 文件内容与原件一致可打开<br>4. 不出现旧版本文件或已删除附件残留 | 对应TP-P-013;REQ-013/REQ-015;[AI修正: 历史缺陷防御](BUG-202607-03 数据溯源) |
| PLT_TMS_FPKG_063 | 平台端-运单管理-运单文件包-打包归批 | 验证打包期间源数据变更时包内数据口径全任务一致 | P1 | 回归测试 | 1. 准备 500 行以上清单使打包窗口足够长;2. 运维/业务可对该批运单追加支付(生成新回单)与更换司机证件照;3. ACC-001 已登录 | 1. 上传大清单进入"处理中"<br>2. 打包期间给清单内某运单新增 1 笔支付(产生新回单)并更换另一运单司机档案证件照<br>3. 任务完成后下载 zip<br>4. 核对该运单回单份数与证件照版本的全任务一致性 | XLS-007 扩展 500 行;STT-011 | 1. 该运单回单份数按确认口径处理且全任务一致(快照口径不含新增回单、实时口径包含新增回单,二者取一,不出现同任务内新旧混杂)<br>2. 证件照片版本同样全任务一致<br>3. 任务正常完成不因源数据变更失败 | 对应TP-P-013;REQ-013/REQ-015;[AI修正: 历史缺陷防御](BUG-202607-03);⚠️ 待确认 Q4:打包期间源数据变更(新回单/换证件照/运单关闭)按任务开始时刻快照还是实时拉取——影响本用例断言 1 取值与 TP-P-013 回归口径;建议需求方确认后回填断言 |
| PLT_TMS_FPKG_064 | 平台端-运单管理-运单文件包-打包归批 | 验证 zip 不加密且身份证号明文下补偿控制同时生效 | P2 | 安全性测试 | 1. 已完成任务 zip(XLS-001/002/003);2. ACC-001 已登录 | 1. 下载 zip 直接解压验证无密码<br>2. 核对批次包目录名身份证号为完整 18 位明文<br>3. 打开证件照片验证可读<br>4. 核对该次下载的审计日志已记录与菜单权限控制生效 | IDC-004(340102199001011234);决议#3/#12 | 1. zip 无密码可直接解压(决议#12 落地)<br>2. 批次包名身份证号完整非脱敏(决议#3 落地)<br>3. 证件照片可打开<br>4. 权限+审计补偿链同时生效:无权限账号不可达下载接口(联动 PLT_TMS_FPKG_006)、每次下载有审计日志(联动 PLT_TMS_FPKG_067),不存在"不加密又无审计"中间态 | 对应TP-P-014;REQ-026(RISK-COMPLIANCE 暴露面确认) |
| PLT_TMS_FPKG_065 | 平台端-运单管理-运单文件包-下载审计 | 验证任务完成后下载总包 zip 的命名与完整性 | P0 | 功能测试 | 1. 已完成任务 1(全部成功,STT-003)与"已完成·部分失败"任务 1(STT-004);2. ACC-001 已登录 | 1. 在已完成任务行点击"下载文件包"<br>2. 核对下载文件名<br>3. 解压验证完整性<br>4. 对部分失败任务重复下载核对仅含成功运单<br>5. 下载前后对比任务状态与统计数 | IDC-006;STT-003/STT-004 | 1. 下载文件名=运单资料_【任务编号】.zip<br>2. zip 完整可解压无损坏,含全部批次文件包<br>3. 部分失败任务 zip 仅含成功运单资料<br>4. 下载不改变任务状态与成功/失败统计(数据库字段前后一致) | 对应TP-D-001;REQ-016 |
| PLT_TMS_FPKG_066 | 平台端-运单管理-运单文件包-下载审计 | 验证同一任务重复下载幂等不重复生成文件包 | P0 | 功能测试 | 1. 已完成任务 1(STT-003);2. 已记录首次下载 zip 的哈希值与文件包存储信息;3. ACC-001 与 ACC-006 两账号可用 | 1. ACC-001 连续下载 3 次并分别计算哈希<br>2. 用 ACC-006 再下载同一任务<br>3. 下载进行中立即再次点击下载<br>4. 核对服务端存储与任务完成时间 | CNC-005;IDC-006;ACC-001/ACC-006 | 1. 3 次 zip 哈希一致、内容完整<br>2. 两账号下载均成功且互不覆盖<br>3. 下载中再次点击不产生第二个半成品文件(获得完整包或排队提示)<br>4. 服务端完成时间与文件包存储不因重复下载变化(未重新打包) | 对应TP-D-002;REQ-016(七章幂等行) |
| PLT_TMS_FPKG_067 | 平台端-运单管理-运单文件包-下载审计 | 验证每次下载记录含操作人时间任务编号的审计日志 | P0 | 安全性测试 | 1. 已完成任务 1;2. ACC-001 与 ACC-006 可分别登录;3. 审计日志查询入口可用(运维工具-行为日志或专项审计表) | 1. ACC-001 下载一次并记录时间<br>2. ACC-006 下载一次<br>3. ACC-001 再次下载<br>4. 按任务编号检索审计日志逐条核对 | ACC-001/ACC-006;IDC-006;REQ-017 审计三要素 | 1. 每次下载产生一条审计日志,含操作人、操作时间、任务编号三要素<br>2. 重复下载逐次留痕(3 次下载 3 条记录,非仅记首次)<br>3. 日志时间与实际下载时间一致(秒级)<br>4. 按任务编号可反查全部下载人清单 | 对应TP-D-003;REQ-017;⚠️ 待确认 Q6:失败清单下载是否同样记审计日志——失败清单含货源/运单号属敏感业务数据;建议一并留痕,确认后补充失败清单下载审计断言 |
| PLT_TMS_FPKG_068 | 平台端-运单管理-运单文件包-下载审计 | 验证未完成任务直调下载接口被后端双重校验拒绝 | P1 | 回归测试 | 1. 准备待处理、处理中、失败任务各 1(STT-001/002/005);2. 抓包工具可获取已完成任务的下载接口报文;3. ACC-001 已登录 | 1. 确认三类任务行均无下载按钮<br>2. 抓取已完成任务下载请求,分别替换任务编号为待处理/处理中/失败任务后重放<br>3. 任务刚转"已完成"瞬间并发发起下载请求<br>4. 核对各响应 | STT-001/002/005 任务;下载接口报文 | 1. 三类状态前端均无下载按钮<br>2. 直调下载接口均返回明确错误(403/业务错误码),不返回 200 文件流或半成品<br>3. 完成瞬间并发请求要么等待打包落库后返回完整包、要么明确拒绝,不返回半成品 zip<br>4. 后端状态校验独立于前端按钮(双重拦截) | 对应TP-D-004;REQ-008/REQ-016;[AI修正: 历史缺陷防御](BUG-202607-01 仅前端控制同类防御) |
| PLT_TMS_FPKG_069 | 平台端-运单管理-运单文件包-下载审计 | 验证不提供按批次文件包单独下载的入口与接口 | P3 | 功能测试 | 1. 已完成多批次任务 1(XLS-001/002/003 两个批次);2. 接口探测工具可用;3. ACC-001 已登录 | 1. 检查任务行与任务详情/结构弹窗全部操作项<br>2. 探测下载接口携带批次参数的请求(如批次目录名/批次序号)<br>3. 正常下载总包确认功能不受影响 | 决议#11;多批次任务 | 1. 页面无"按批次下载"类按钮或入口<br>2. 携带批次参数的下载探测请求返回 404/403 或不被解释为批次下载,无导出单批次能力<br>3. 总包下载功能正常(负向裁剪不误伤主功能) | 对应TP-D-005;REQ-025(决议#11 本期不做,防过度实现) |
| PLT_TMS_FPKG_070 | 平台端-运单管理-运单文件包-下载审计 | 验证下载中断或取消后服务端文件包完好可重新下载 | P1 | 功能测试 | 1. 已完成任务 1(zip 较大,含证件图片);2. 浏览器开发者工具可限速断网;3. ACC-001 已登录 | 1. 开始下载后中途断网(或浏览器手动取消下载)<br>2. 恢复网络后重新点击下载<br>3. 核对二次下载 zip 完整性<br>4. 检查服务端日志与存储 | IDC-006;大 zip 任务 | 1. 中断/取消不影响服务端文件包(存储完好)<br>2. 重新下载获得完整 zip(与首次完整包一致可解压)<br>3. 服务端无异常日志刷屏、无残留半成品响应<br>4. 审计日志按实际成功下载记录 | 对应TP-D-006;REQ-016(漏测清单弱网项) |
| PLT_TMS_FPKG_071 | 平台端-运单管理-运单文件包-下载审计 | 验证 1000 单规模大 zip 下载不因网关超时失败 | P1 | 性能测试 | 1. 已完成 1000 单任务(含证件图片,zip 数百 MB 级);2. 已确认网关(OpenResty)超时阈值配置;3. ACC-001 已登录 | 1. 点击下载并计时至下载完成<br>2. 核对 zip 完整性<br>3. 重复 3 次记录耗时基线<br>4. 观察服务端资源 | CNC-006 产出任务;BND-007 | 1. 下载全程无网关 504/超时中断(耗时在网关超时阈值内或支持流式输出/断点续传)<br>2. 下载完成的 zip 完整可解压<br>3. 3 次耗时基线已记录供回归对比,服务端无内存异常 | 对应TP-D-006;REQ-016 |
| PLT_TMS_FPKG_072 | 平台端-运单管理-运单文件包-非功能 | 验证 1000 单规模任务 30 分钟内完成并记录基线 | P1 | 性能测试 | 1. 环境已造 1000 单有效运单(500 批×2 运单混合结构,数据缺口 #1);2. 生成对应 1000 行清单;3. 并发队列为空 | 1. 记录开始时间并上传 1000 行清单<br>2. 间隔 1 分钟轮询任务状态与进度<br>3. 记录转"处理中"与"已完成"时刻<br>4. 抽检 zip 内 3 个批次包完整性<br>5. 用 XLS-006 全量 2000 行重复观测(仅记录不设卡) | BND-007(1000 行);CNC-006;XLS-006(2000 行) | 1. 1000 单任务从上传到"已完成"实测小于 30 分钟<br>2. 进度持续推进,无 5 分钟以上零进度停滞<br>3. 抽检批次包结构完整、文件可打开<br>4. 耗时基线已记录;2000 行观测值单独记录不作为验收卡点 | 对应TP-N-001;REQ-020(RISK-AVAILABILITY P1 容量侧面) |
| PLT_TMS_FPKG_073 | 平台端-运单管理-运单文件包-非功能 | 验证并发提交多任务时处理数不超过上限且排队不丢失 | P1 | 性能测试 | 1. 准备 5 份合法清单(每份 300~500 行);2. 已确认并发上限配置(1~2);3. ACC-001 已登录 | 1. 5 份清单在 10 秒内先后上传(其中 1 份由 ACC-006 提交,构造 CNC-007 双账号并发)<br>2. 以 10 秒级轮询记录各任务状态<br>3. 统计同一时刻"处理中"任务数峰值<br>4. 等待全部任务终态并逐一下载验证 zip | CNC-002/003/007;BND-051/052/053;STT-001;ACC-006 | 1. 同一时刻"处理中"任务数不超过 2,其余停留"待处理"<br>2. 排队任务按提交顺序依次转"处理中"<br>3. 5 个任务全部完成且 zip 完整无丢失<br>4. 排队期间上传入口可用(可继续新建任务),数据库无任务丢失或状态错乱;各任务上传人字段与提交账号一一对应(ACC-001/ACC-006) | 对应TP-N-002;REQ-022(六#8;RISK-AVAILABILITY P1 主场景,不得省略) |
| PLT_TMS_FPKG_074 | 平台端-运单管理-运单文件包-非功能 | 验证同一文件毫秒级并发重复提交仅创建一个任务 | P1 | 回归测试 | 1. ACC-001 已登录;2. 接口工具可并发重放上传请求;3. 准备合法清单文件(XLS-001/002/003) | 1. 页面选择文件后 1 秒内快速连点"开始上传并创建任务"5 次<br>2. 另用接口工具携带同一会话并发重放上传请求 3 次<br>3. 查询任务列表与数据库任务表 | CNC-008;XLS-001/002/003 清单 | 1. 页面连点仅创建 1 个任务(前端防抖)<br>2. 接口并发重放仅创建 1 个任务(后端幂等键/分布式锁)<br>3. 数据库任务表仅 1 条新记录<br>4. 前端防抖与后端幂任一失效即本用例失败 | 对应TP-N-003;REQ-022/REQ-023;[AI修正: 历史缺陷防御](BUG-202607-02 重试+手动触发并发提交防御;项目画像 §8.2 必测幂等) |
| PLT_TMS_FPKG_075 | 平台端-运单管理-运单文件包-非功能 | 验证上传接口超时时有明确提示且重试前防重复建任务 | P1 | 功能测试 | 1. ACC-001 已登录;2. 代理工具可模拟上传接口响应延迟超过 30 秒 | 1. 开启延迟模拟后正常上传清单<br>2. 观察前端 Loading 与超时提示<br>3. 超时后先刷新列表查询任务是否已创建再决定重新上传<br>4. 核对最终任务数量 | 漏测清单 §2(30 秒级超时);XLS-001/002/003 | 1. 上传请求发出后按钮防重复点击、有 Loading 态<br>2. 超时给出明确提示,非静默失败<br>3. 重试前查询发现任务已创建则不重复上传,最终仅 1 个任务<br>4. 若服务端已建任务而前端提示失败,重传请求被幂等拦截不产生第二个任务 | 对应TP-N-003;REQ-022/REQ-023(漏测清单超时处理项) |
| PLT_TMS_FPKG_076 | 平台端-运单管理-运单文件包-非功能 | 验证文件包第 7 天内可下载过期后不可下载 | P1 | 功能测试 | 1. 已完成任务 1 并记录完成时间 T0;2. 具备保留期模拟手段(回拨数据库完成时间或开发提供 mock,需运维配合);3. ACC-001 已登录 | 1. 将任务完成时间模拟为 6 天前,点击下载验证<br>2. 模拟为恰好 7 天前整,点击下载验证临界行为<br>3. 模拟为 8 天前,点击下载并观察提示<br>4. 核对数据库保留期字段与清理任务记录 | BND-031/032/033;STT-021/022 | 1. 第 6 天可正常下载完整 zip<br>2. 第 7 天整临界行为与实现口径一致(以"完成时间+7 天"为界,需开发确认后固化)<br>3. 第 8 天下载被拒,提示"文件包已超过 7 天保留期,请重新上传清单生成"类文案(原型文案)<br>4. 数据库保留期字段/清理记录标记过期 | 对应TP-N-004;REQ-021(决议#10;临界口径见文末实现口径确认项) |
| PLT_TMS_FPKG_077 | 平台端-运单管理-运单文件包-非功能 | 验证过期任务的列表展示形态与存储清理及重新上传 | P1 | 功能测试 | 1. 已过期任务 1(承接 PLT_TMS_FPKG_076 步骤产出);2. 对象存储控制台/工具可核查;3. ACC-001 已登录 | 1. 查看过期任务在列表中的展示(状态标签、按钮、置灰形态)<br>2. 核查对象存储中该 zip 是否已清理<br>3. 使用同清单重新上传<br>4. 核对新任务与旧任务互不影响 | STT-006(原型"已过期"标签);STT-022;BND-033 | 1. 过期任务展示形态按确认口径实现:新增"已过期"展示标签 或 保持原状态+下载按钮置灰,二选一,不出现无法理解的展示态<br>2. 过期后存储文件被自动清理,无静默占用(对象存储核查)<br>3. 重新上传同清单创建新任务并可正常完成下载<br>4. 旧任务记录不影响新任务编号与统计 | 对应TP-N-004;REQ-021;⚠️ 待确认 Q5:过期任务列表展示形态——需求 4.3.1 状态机仅 5 态,原型任务列表有灰色"已过期"标签;影响本用例断言 1 与列表/状态字典实现;建议确认新增展示态 or 原状态+按钮置灰后回填 |
| PLT_TMS_FPKG_078 | 平台端-运单管理-运单文件包-非功能 | 验证下载 URL 鉴权与审计反查的敏感数据补偿控制 | P2 | 安全性测试 | 1. 已完成任务 1;2. 抓包工具可用;3. 无权限对照账号 ACC-003 可登录;4. ACC-001 已登录 | 1. ACC-001 下载并抓取下载 URL<br>2. 将该 URL 复制到未登录浏览器与 ACC-003 会话直接访问<br>3. 篡改 URL 中任务编号或签名类参数后重放<br>4. 在审计日志按任务编号反查下载人 | ACC-001/ACC-003;IDC-006;REQ-026 补偿控制 | 1. 下载 URL 携带鉴权信息,未登录/无权限会话访问被拒,不可离线伪造或转发生效<br>2. 若实现签名/一次性链接,则过期或二次使用失效<br>3. 篡改参数被校验拒绝,不返回文件流<br>4. 审计日志可完整反查"谁在何时下载了哪个任务"(联动 PLT_TMS_FPKG_067) | 对应TP-N-005;REQ-002/REQ-017/REQ-026(RISK-COMPLIANCE 补偿控制链) |
| PLT_TMS_FPKG_079 | 平台端-运单管理-运单文件包-非功能 | 验证 OBS 持续不可用时任务超时置失败可删除重传 | P1 | 功能测试 | 1. 运维配合断开服务对 OBS 的访问(网络策略或 mock);2. ACC-001 已登录;3. 准备合法清单(XLS-001/002/003) | 1. OBS 断开期间上传清单<br>2. 观察任务状态变化(重试→超时)<br>3. 确认任务最终置"失败"并检查可删除<br>4. 检查无僵尸"处理中"任务与半成品 zip | STT-005;数据缺口 #11 | 1. 任务不无限停留"处理中",超时后置"失败"<br>2. 失败任务可删除(联动 PLT_TMS_FPKG_036)<br>3. 无半成品 zip 可下载<br>4. 数据库任务终态与系统级失败原因记录完整可解释 | 对应TP-N-006;REQ-015/REQ-024(项目画像必测"依赖服务不可用") |
| PLT_TMS_FPKG_080 | 平台端-运单管理-运单文件包-非功能 | 验证 OBS 恢复后删除重传全链路成功且不拖累其他业务 | P1 | 功能测试 | 1. 承接 PLT_TMS_FPKG_079 的失败任务;2. OBS 已恢复访问;3. ACC-001 已登录 | 1. 删除 OBS 故障期的失败任务<br>2. 重新上传同清单等待完成<br>3. 下载 zip 抽检文件完整<br>4. 同期并行验证装卸货图片上传等其他 OBS 业务正常 | STT-005→STT-003;XLS-001/002/003 | 1. 删除重传后新任务全链路成功,无需人工修数据<br>2. zip 内容完整与正常时期一致<br>3. 平台其他 OBS 业务(装卸货图片等)不受本功能故障与恢复影响<br>4. 服务端无残留脏数据 | 对应TP-N-006;REQ-015/REQ-024 |
| PLT_TMS_FPKG_081 | 平台端-运单管理-运单文件包-非功能 | 验证 zip 中文目录与多来源 xlsx 的兼容性 | P2 | 兼容性测试 | 1. 已完成任务 zip(批次包名含中文司机姓名与车牌,如 张三-340102199001011234-皖A12345);2. WPS 生成的 xlsx 清单、.xls 改后缀 .xlsx 文件;3. Chrome/Edge/Firefox 浏览器可用 | 1. 在 Windows 资源管理器解压 zip 核对中文目录名<br>2. 用 WinRAR/7-Zip/Bandizip 各解压一次核对<br>3. 上传 WPS 生成的 xlsx 验证解析<br>4. 上传 .xls 改后缀 .xlsx 验证拒绝口径<br>5. 三种浏览器分别下载核对文件名 | IDC-007(中文批次包名);ERR-001/003;XLS-001/002/003 | 1. 中文批次包名在资源管理器与常用解压工具下显示正确无乱码(zip UTF-8 标志位兼容)<br>2. WPS 生成的合法 xlsx 可正常解析上传<br>3. .xls 改后缀 .xlsx 被拒绝(与 PLT_TMS_FPKG_011 口径一致)<br>4. Chrome/Edge/Firefox 下载文件名=运单资料_【任务编号】.zip 完整不乱码 | 对应TP-N-007;REQ-004/REQ-016(RISK-COMPATIBILITY;漏测清单导入导出兼容项) |
| PLT_TMS_FPKG_082 | 平台端-运单管理-运单文件包-非功能 | 验证新增运单文件包功能不影响既有功能与并行需求 | P2 | 回归测试 | 1. ACC-001 已登录;2. 运单管理、运单跟踪、安徽运八并行需求功能可用;3. 可触发 2 个 2000 行任务制造打包高峰 | 1. 触发 2 个 XLS-006(2000 行)任务进入"处理中"制造打包高峰<br>2. 高峰期操作运单管理列表/详情/导出、运单跟踪等既有菜单<br>3. 触发一次运单导出等其他下载<br>4. 核对安徽运八异步任务正常<br>5. 打包完成后核查运单数据是否被修改 | XLS-006×2;运单管理既有功能清单 | 1. 既有菜单功能全部正常(列表/详情/导出无报错、无劣化到不可用)<br>2. 高峰期运单导出等其他下载不被磁盘/带宽拖垮(验证并发上限 1~2 设计动机)<br>3. 打包前后运单状态与业务数据无任何修改(本功能只读消费运单数据)<br>4. 安徽运八异步任务不受干扰正常完成 | 对应TP-N-008;REQ-001;[AI修正: 冲突修订](关联与冲突报告确认与安徽运八并行无冲突,落"并行不干扰"回归验证点) |
| PLT_TMS_FPKG_083 | 平台端-运单管理-运单文件包-数据校验 | 验证全部行数据级失败(0 有效行)时任务终态与无空包残留 | P1 | 功能测试 | 1. ACC-001 已登录;2. 构造 3 行全非法清单:XLS-101(序号 0)+XLS-110(运单不存在)+XLS-107(单号为空) | 1. 上传该 3 行清单等待任务终态<br>2. 查看任务状态与成功/失败数<br>3. 下载失败清单核对 3 行原因<br>4. 检查任务下载入口与对象存储 | XLS-101/110/107 组合清单(CMB-018 构造基准) | 1. 3 行全部进入失败清单,原因分别对应 4.2.2 各规则文案<br>2. 成功数=0、失败数=3、总数=3,数据库统计一致<br>3. 任务无"下载文件包"入口(暂按不生成空 zip 设计),对象存储无空文件包残留<br>4. 任务终态按确认结论回填(暂按"已完成·部分失败"断言) | 对应TP-U-015(关联 TP-T-002);REQ-006/REQ-007;⚠️ 待确认:0 有效行终态(已完成·部分失败 or 失败)与是否生成空文件包,见文末确认项 #10(数据缺口 #14),确认后回填断言 3/4 |
| PLT_TMS_FPKG_084 | 平台端-运单管理-运单文件包-打包归批 | 验证最小序号运单因文件缺失剔除后证件改挂重算的最小序号运单 | P0 | 功能测试 | 1. 张三批次构造 3 行:序号 1 行为仅缺电子回单的运单(无支付记录/回单文件缺失,CMB-010)、序号 3/5 行为回单合同齐全的有效运单(CMB-006+XLS-004);2. ACC-001 已登录 | 1. 上传该 3 行清单等待完成<br>2. 核对失败清单含序号 1 行及缺失原因<br>3. 下载 zip 核对批次①运单包命名与子目录<br>4. 检索证件照片实际落位 | CMB-010(最小序号仅缺回单);CMB-006(序号 1、3、5);决议#8;XLS-003/004 | 1. 失败清单含序号 1 行,原因含回单/文件缺失类文案("无电子回单:运单无支付记录"或同类)<br>2. 证件改挂重算后的最小序号:序号 3 运单包名=3-…-含司机及车辆证件且含四子目录,序号 5 运单包仅含合同+电子回单<br>3. 序号 1 运单包最终形态(整包不生成 or 保留但缺电子回单子目录)按 4.4.4 条款一/二边界确认后回填;无论何种形态,断言 2 的证件改挂均须成立且不阻断其余运单<br>4. 成功数/失败数与 zip 内容一致 | 对应TP-P-007;REQ-015(决议#8;4.4.4 条款二字面将"文件缺失"列为剔除触发,本用例固化证件改挂断言);⚠️ 待确认:条款一(缺失不剔除仅记清单)与条款二(剔除改挂)边界,见文末确认项 #3(数据缺口 #17),确认后回填断言 3 |
| PLT_TMS_FPKG_085 | 平台端-运单管理-运单文件包-上传校验 | 验证多 Sheet 工作簿不得静默丢数据且处理行为明确 | P2 | 功能测试 | 1. ACC-001 已登录;2. 构造含 2 个 Sheet 的 xlsx:Sheet1 为模板三列 + XLS-001/002 两行有效数据,Sheet2 同结构含 XLS-003 一行有效数据 | 1. 上传该多 Sheet 文件<br>2. 观察上传结果(成功或拒绝提示)<br>3. 若创建任务:等待完成核对总行数/成功数并下载 zip<br>4. 若拒绝:核对提示文案与任务列表 | XLS-001/002/003(分置两个 Sheet);多 Sheet 构造文件(openpyxl) | 1. 系统有明确处理行为且两 Sheet 数据无一被静默丢弃:全部 Sheet 解析(总行数=3、zip 含 3 运单包)或整体拒绝并提示具体原因<br>2. 不得出现仅解析 Sheet1(总行数=2)而 Sheet2 数据静默丢失后生成缺单文件包<br>3. 数据库统计与实际解析行数一致 | 对应TP-U-001/TP-U-004;REQ-004/REQ-005;⚠️ 待确认:多 Sheet 读取口径(读首 Sheet 拒绝其余 or 全部解析),见文末确认项 #1(数据缺口 #15),确认后回填断言 1 取值 |
---
## P2/P3 用例取舍说明
- 本次未裁剪任何 P2/P3 测试点(8 个全部保留),理由:TP-M-005 机构隔离为项目画像 §10 硬约束(权限类用例必须验证机构隔离);TP-U-018 为确认决议 #7/六#7 的既定口径且执行成本低;TP-P-014 与 TP-N-005 是 zip 不加密决策(决议 #12)的合规补偿链验证,属 RISK-COMPLIANCE 缓解措施;TP-N-007 对应 RISK-COMPATIBILITY;TP-N-008 是关联与冲突报告(无冲突)落地的"并行不干扰"回归验证点;TP-T-008 与 TP-D-005 为范围确认类用例——分别防止 Q1 功能遗漏与按决议 #11 防止过度实现。
- 拆分/合并原则:同一测试点内"接受 vs 拒绝"或不同真实业务场景拆为独立用例(TP-M-003、TP-U-004、TP-P-007、TP-P-008、TP-D-006;TP-P-002 按要素维度处理——046 承接换车/换司机拆批、045 承接 CMB-007 跨货源不拆批对照);同一边界两侧行为合并为一条用例(2000/2001 行、10MB±1B、重试 3 次边界按两侧分设);端到端冒烟单独成条(001),不与明细用例混同。
- 优先级校验:P0 占比 33/85=39%,与测试点 P0 占比(25/59=42%)匹配;全部 P0 测试点 100% 有 P0 用例承接,无高风险场景下沉到 P2(007 机构隔离已按项目画像 §10 硬约束升为 P1)。
- 新增 085(P2)承接 TP-U-001/TP-U-004 的多 Sheet 解析口径不变式(数据缺口 #15),断言按"不得静默丢数据"设计,具体口径确认后回填;083/084 为评审与覆盖率审计修复新增(0 有效行终态、最小序号文件缺失剔除改挂)。
## 未收敛的 ⚠️ 待确认清单(Q1~Q6 保留项)
> Q2、Q3 已按需求口径收敛(Q3:需求 4.2.1"单文件行数上限 2000 行",2000 行含、2001 行拒绝,见 015 备注;Q2:仅表头 0 数据行按文件级拒绝、依据三章"运单清单"与 4.2.2 处理原则,见 016 备注)。以下 4 项未能从需求原文确定,相关用例不得按臆造规则执行,须确认后回填。
1. **Q1(承接用例 044,TP-T-008)**:问题——"查看结构/文件包结构预览"与"失败任务删除"仅见于原型,需求正文未定义;影响范围——044 用例保留与否及断言范围(若确认裁剪,"失败任务删除"仍以需求六#10 为准保留在 036);建议确认方向——需求方确认本期是否实现结构预览弹窗,确认实现则按弹窗实际字段回填断言,确认裁剪则删除 044。
2. **Q4(承接用例 063,TP-P-013)**:问题——打包期间源数据变更(新回单/换证件照/运单关闭)按任务开始时刻快照还是实时拉取;影响范围——063 断言 1 的取值(快照=不含新增回单;实时=包含新增回单)与 TP-P-013 回归口径;建议确认方向——需求方二选一后回填断言,并明确"全任务一致"的实现保证。
3. **Q5(承接用例 077,TP-N-004)**:问题——过期任务的列表展示形态:原型有灰色"已过期"标签,需求 4.3.1 状态机仅 5 态;影响范围——077 断言 1 与列表实现/状态字典;建议确认方向——确认新增"已过期"展示态(状态字段不动、仅展示层标记)或保持原状态+下载按钮置灰,确认后回填。
4. **Q6(承接用例 067,TP-D-003)**:问题——失败清单下载是否同样记审计日志;影响范围——067 断言范围与敏感数据留痕完整性(失败清单含货源单号/运单号);建议确认方向——建议一并留痕(与文件包下载同表或同流水),确认后补充失败清单下载审计断言。
## 其他实现口径确认项(非 Q1~Q6,来自测试数据缺口,执行前与开发/需求方确认)
1. 数据缺口 #15:多 Sheet、表头后附加说明行/合并单元格的读取口径(085 已固化"不得静默丢数据"不变式断言,具体取值确认后回填);列顺序已按"按列名匹配"设计(013),若实现按固定列序读取需回归。
2. 数据缺口 #16:10MB=10 的 6 次方还是 2 的 20 次方字节(017);序号/单号单元格数值型 vs 文本型读取规则(019)。
3. 数据缺口 #17:需求 4.4.4 条款一(无回单/无合同不剔除仅记清单,055/056)与条款二(文件缺失剔除改挂,053/054/084)在"最小序号运单仅缺回单/合同"场景的适用边界(084 已按条款二字面口径固化证件改挂断言,运单包最终形态待确认回填)。
4. BND-032 保留期临界(完成时间+7 天整)的实现口径(076)。
5. ERR-006 列名全半角/空格 trim 匹配口径(012)。
6. ERR-027 运单号前后空格匹配:已按"存在性校验与实际导出同口径"设计(022),trim 与否本身需实现确认。
7. ERR-040 批次包名非法字符替换/转义与超长截断策略(060)。
8. IDC-001 任务编号编码规则:断言不写死格式,仅验证系统生成且唯一(001/010)。
9. BND-025/026/027 序号 int32 上限与 Excel 15 位精度截断:已锚定 019 备注,执行 019 时顺带探测,预期"合法或明确报错,不得静默截断"。
10. 数据缺口 #14:数据级校验全部失败(0 有效行)的任务终态(已完成·部分失败 or 失败)与是否生成空文件包(083 暂按"已完成·部分失败、不生成空 zip"设计,确认后回填断言)。
11. 机构隔离环境依赖(007/008):多机构部署形态、B 机构运营账号 ACC-B01 与 B 机构运单 YDB-001 的可用性见测试数据缺口 #18;若环境不支持,按 007 备注的替代口径执行。