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,163 @@
# 运单资料文件包下载需求 结构化分析
> 生成时间: 2026-09-08
> 需求文档: requirements/运单资料文件包下载需求.md(v1.0 定稿)
> 原始载体: requirements/运单资料文件包下载需求.docx(同版本 Word 载体,内容一致,见 decisions/运单资料文件包下载需求_确认结论.md)
> 原型: resources/prototypes/anhuibaba_file_package.html(任务列表 / 上传弹窗 / 文件包结构预览 / 失败清单)
> 项目画像: knowledge_base/00_project/project_profile.md
> 确认状态: 需求方已于 2026-09-08 确认全部 13 项待确认事项(需求文档第八章),本文档无遗留待确认项
## 1. 需求背景
运营人员在线下归档、审计、对账场景中需要按批次收集运单资料:运单合同、电子回单,以及司机证件照片、车辆证件照片。目前只能逐单进入运单详情手工下载整理,效率低且易遗漏。
## 2. 目标
提供"上传运单清单 → 系统自动生成资料文件包 → 任务完成后下载"的批量导出能力。核心规则:**司机姓名+身份证号+车牌号三要素完全一致的运单归为一批,生成一个文件包**;文件包内按运单建运单包;批次内**最小序号**运单包额外含司机及车辆证件照片。
**本期范围**:仅做资料导出打包;不新增数据采集,合同、电子回单、司机证件、车辆证件均读取运八平台现有数据。
## 3. 用户角色
| 角色 | 职责 |
| :--- | :--- |
| 运营人员 | 唯一可见角色:下载模板、上传清单、查看任务进度、下载文件包/失败清单 |
| 系统后台 | 异步打包任务:校验、归批、逐运单下载关联文件、组装 zip、清理过期包 |
| 平台管理员 | 权限分配(菜单仅授权运营人员) |
## 4. 功能模块
### 4.1 菜单入口(运八平台端)
运单管理相关模块下新增独立菜单"运单文件包"。页面结构:上方"上传任务"入口(模板下载 + 上传按钮),下方"任务列表"。菜单需权限控制——文件包含身份证等敏感证件照片。
### 4.2 文件上传
- 模板列:序号(正整数,全文件唯一)/ 货源单号 / 运单号,格式 .xlsx,提供模板下载。
- 限制:单文件 ≤2000 行,≤10MB。
- 文件级校验(整体拒绝,不创建任务):非 xlsx、列名缺失或不符、文件损坏、行数/大小超限。
- 数据级校验(该行计入失败清单):序号非正整数或重复、货源单号/运单号为空、运单号不存在、货源单号与运单实际所属货源不一致、运单号文件内重复、运单缺司机或车辆信息无法归批。
- 处理原则:文件级错误整体拒绝;数据级错误剔除失败行后继续处理有效行。
### 4.3 任务
- 状态机:待处理 → 处理中 → 已完成(全部有效行成功)/ 已完成·部分失败(部分行失败)/ 失败(系统级错误整体未生成文件包)。
- 任务列表字段:任务编号、源文件名、上传人、上传时间、任务状态、总行数/成功数/失败数、完成时间、操作(下载文件包——任务成功后显示;下载失败清单——存在失败行时显示,xlsx,含序号/货源单号/运单号/失败原因)。
### 4.4 文件包生成
- 批次划分:按有效行运单在**系统内**的司机姓名+身份证号+车牌号归组。同一司机换车、同一车辆换司机拆分为不同批次。
- 目录结构(三层):任务总包 `运单资料_【任务编号】.zip` → 批次包 `【司机姓名】-【身份证号】-【车牌号】` → 运单包 `【序号】-【运单号】-【货源单号】`(最小序号运单追加 `-含司机及车辆证件` 后缀)。
- 运单包子目录:合同 / 电子回单 / 司机证件 / 车辆证件;文件保留系统原文件名,重名自动追加 (1)、(2)。
- 内容矩阵:合同+电子回单 → 全部运单;司机证件+车辆证件 → 仅批次内最小序号运单(证件以最小序号运单挂载的司机、车辆档案为准)。
- 合同口径:以运单详情-合同附件为准(含承运合同),不含委托合同/框架合同。
- 电子回单口径:运单全部支付记录对应的银行电子回单。
- 文件缺失:不阻断任务,对应子目录不生成,原因记入失败清单;最小序号运单被剔除时重算最小序号并改挂证件;单个文件下载失败自动重试 3 次,仍失败记入失败清单。
### 4.5 下载
任务完成后任务列表显示"下载"按钮,下载任务总包 zip;支持重复下载,不重复生成(幂等);下载记录审计日志(操作人、时间、任务编号);按批次文件包单独下载本期不做。
## 5. 核心规则
### 5.1 归批与证件挂载
- 三要素 = 系统内司机姓名+身份证号+车牌号,完全一致归一批(非按上传行顺序、非按货源单号)。
- 最小序号 = 上传清单中该批次内序号最小的运单;序号全文件唯一。
- 单运单批次的运单包仍含司机及车辆证件。
- 失败行剔除后,证件挂载到批次内剩余运单中序号最小者。
### 5.2 校验与失败处理
- 文件级 → 整体拒绝;数据级 → 行级剔除继续。
- 无电子回单(如运单被关闭、无支付记录):不阻断,子目录不生成,原因记失败清单。
### 5.3 异步与性能
- 打包为后台异步任务,上传后无需等待;任务列表可见进度(成功/失败条数)。
- 1000 单规模任务 30 分钟内完成。
- 多任务并发:后台排队处理,并发上限 1~2,防磁盘/带宽压力。
### 5.4 存储与幂等
- 文件包默认保留 7 天,过期自动清理,不可下载,需重新上传生成。
- 同一任务重复点击下载不重复生成文件包。
- 同一文件重复上传:允许,各自生成独立任务,不合并去重。
### 5.5 敏感数据合规
- 司机身份证号、证件照片属敏感个人信息:菜单需权限控制、下载记审计日志。
- 批次包命名含完整身份证号(确认决议 #3);zip 不加密,依赖权限+审计(确认决议 #12)。
## 6. 状态流转
```
任务:待处理 → 处理中 → 已完成 | 已完成·部分失败 | 失败
失败/完成后可删除任务重新上传(系统异常场景)
文件包:已生成 →(7天)→ 过期清理 → 不可下载
```
## 7. 异常与边界场景(需求第六章汇总)
1. 模板格式/列名错误 → 上传即拒绝
2. 序号重复、非正整数 → 行级失败清单
3. 运单号不存在 / 货源单号不匹配 → 行级失败清单
4. 运单被关闭、未产生支付记录无电子回单 → 不阻断,记失败清单
5. 运单缺司机或车辆信息无法归批 → 行级失败清单
6. 批次内最小序号运单被剔除 → 证件改挂重算后的最小序号运单
7. 同一文件重复上传 → 允许,独立任务
8. 多任务并发 → 排队,并发上限 1~2
9. 文件包超保留期 → 不可下载,重新上传
10. 任务处理中系统异常 → 任务置"失败",支持删除重传
## 8. 歧义标注与待确认项
> ✅ **无遗留待确认项**:原 v0.1 草稿 13 项待确认事项已于 2026-09-08 经需求方全部确认并采纳文档建议方案(需求文档第八章确认决议记录):
| # | 事项 | 确认结论 |
|:---:|:---|:---|
| 1 | 菜单名称与挂载位置 | "运单文件包",挂运单管理模块下 |
| 2 | 可见角色/权限 | 运营人员 |
| 3 | 批次文件包命名 | 司机姓名-身份证号-车牌号(含完整身份证号) |
| 4 | 运单包内子目录 | 合同/电子回单/司机证件/车辆证件 |
| 5 | "运单相关合同"范围 | 以运单详情-合同附件为准(含承运合同),不含委托合同/框架合同 |
| 6 | 货源单号与系统不一致时 | 该行失败 |
| 7 | 数据级校验失败行处理 | 剔除后继续,任务记"已完成·部分失败" |
| 8 | 失败行剔除后证件挂载 | 挂到批次内剩余运单的最小序号运单 |
| 9 | 行数/大小上限 | 2000 行 / 10MB |
| 10 | 文件包保留期 | 7 天 |
| 11 | 按批次包单独下载 | 本期不做 |
| 12 | zip 是否加密 | 不加密(依赖权限+审计) |
| 13 | 序号唯一性范围 | 全文件唯一 |
## 9. 需求条目清单(追溯链骨干,供测试点/用例/覆盖率审计引用)
| 需求条目 | 内容摘要 | 来源章节 | 优先级基准 |
| :--- | :--- | :--- | :---: |
| REQ-001 | 新增"运单文件包"菜单挂运单管理模块下,页面为上传入口+任务列表结构 | 4.1 | P0 |
| REQ-002 | 菜单权限控制:仅运营人员可见可操作(敏感数据) | 4.1/七 | P0 |
| REQ-003 | 模板下载:xlsx 模板,列=序号/货源单号/运单号 | 4.2.1 | P1 |
| REQ-004 | 上传限制:xlsx、≤2000 行、≤10MB | 4.2.1 | P1 |
| REQ-005 | 文件级校验整体拒绝:非 xlsx/列名缺失或不符/损坏/超限,不创建任务并提示具体原因 | 4.2.2 | P0 |
| REQ-006 | 数据级校验行级失败:序号非法/重复、单号为空、运单号不存在、货源不匹配、运单号文件内重复、无法归批 | 4.2.2 | P0 |
| REQ-007 | 数据级处理原则:剔除失败行继续有效行,任务记"已完成·部分失败" | 4.2.2 | P0 |
| REQ-008 | 任务状态机:待处理→处理中→已完成/已完成·部分失败/失败 | 4.3.1 | P0 |
| REQ-009 | 任务列表字段完整:任务编号/源文件名/上传人/上传时间/状态/总·成功·失败数/完成时间/操作 | 4.3.2 | P1 |
| REQ-010 | 批次划分:系统内司机姓名+身份证号+车牌号三要素归批,换车/换司机拆批 | 4.4.1 | P0 |
| REQ-011 | 三层目录结构与命名:总包/批次包/运单包命名规则,最小序号运单包带"-含司机及车辆证件"后缀 | 4.4.2 | P0 |
| REQ-012 | 运单包内容矩阵:合同+回单全员,司机证件+车辆证件仅最小序号运单;单运单批次仍含证件 | 4.4.3 | P0 |
| REQ-013 | 数据来源口径:合同=运单详情-合同附件(含承运不含委托/框架);回单=全部支付记录银行电子回单;证件=司机/车辆档案 | 4.4.3 | P1 |
| REQ-014 | 子目录组织与重名处理:合同/电子回单/司机证件/车辆证件子目录,原文件名保留,重名追加(1)(2) | 4.4.2 | P1 |
| REQ-015 | 文件缺失处理:无合同/回单不阻断记失败清单;最小序号剔除重算改挂;单文件下载失败重试 3 次 | 4.4.4 | P0 |
| REQ-016 | 下载:任务完成后可下载总包 zip;重复下载不重复生成(幂等) | 4.5/七 | P0 |
| REQ-017 | 下载审计日志:操作人、时间、任务编号 | 4.5/七 | P0 |
| REQ-018 | 失败清单下载:存在失败行时显示,xlsx 含序号/货源单号/运单号/失败原因 | 4.3.2 | P1 |
| REQ-019 | 异步处理:后台打包,上传后无需等待,列表可见进度 | 七 | P1 |
| REQ-020 | 性能:1000 单规模任务 30 分钟内完成 | 七 | P1 |
| REQ-021 | 保留期:7 天过期自动清理,不可下载需重新上传 | 七/六#9 | P1 |
| REQ-022 | 并发控制:多任务排队,并发上限 1~2 | 六#8 | P1 |
| REQ-023 | 重复上传:同一文件重复上传允许,独立任务不合并 | 六#7 | P2 |
| REQ-024 | 系统异常:任务处理中异常置"失败",支持删除后重新上传 | 六#10 | P1 |
| REQ-025 | 按批次文件包单独下载:本期不做(负向范围确认) | 4.5/八#11 | P3 |
| REQ-026 | zip 不加密,依赖权限控制+审计日志保障敏感数据(确认决议 #12) | 八#12 | P2 |
## 10. 项目差异化约束
- 所属端:运八平台端(Web 管理后台,Vue.js + Element UI SPA),非 C 端。
- 测试环境:管理端 https://ybxcx.ynyun8.com:8000/admin;超级管理员账号 super_admin(项目画像 §1)。
- 文件存储依赖华为云 OBS(项目画像 §6.1)——打包任务需从 OBS 拉取合同/回单/证件原件,OBS 不可用是打包失败的主要外部依赖风险。
- 敏感个人信息(身份证号、证件照片)导出场景:权限隔离 + 审计日志为合规必测项;批次包命名含完整身份证号放大泄露面。
- Excel 大文件处理:本项目既有 Excel 导出惯例默认 20000 条(项目画像 §8.3),本需求上传方向限 2000 行/10MB,测试需覆盖边界(2000/2001 行、10MB 临界)。
- 异步任务与并发:项目画像必测异常场景含"重复提交(幂等)、并发提交、超时重试、依赖服务不可用"——对应本需求重复下载幂等、并发任务排队、OBS 依赖失败重试 3 次。
- 与 requirements/安徽运八需求.md 为并行模块(相似度 0.105,见 decisions/运单资料文件包下载需求_确认结论.md),不共享数据口径,无冲突防御需求;历史缺陷防御重点关注文件打包下载类通用缺陷(见 knowledge_base/02_history/historical_defects.md)。
- 风险矩阵基线(output/analysis/运单资料文件包下载需求_风险评估.md):P0=0,P1=1(RISK-AVAILABILITY:并发/重试/幂等),P2=4(资损/合规/数据/兼容性);P1 风险对应测试点不得静默省略。