feat: 安徽运八需求全流水线输出同步 + 知识库/agents/资源文件更新

This commit is contained in:
xst
2026-07-14 15:50:17 +08:00
parent e34a3c64ce
commit 2bc036c867
79 changed files with 15673 additions and 2722 deletions
@@ -0,0 +1,295 @@
# 安徽运八需求 覆盖率审计
> 审计日期: 2026-07-13
> 审计范围: 需求文档 (requirement.md) → 测试点 (103个) → 测试用例 (128个) → 风险评估 (2项)
> 审计方法: 四维追溯矩阵 + 风险覆盖核查 + 覆盖热力图
---
## 覆盖概览
| 指标 | 值 | 目标 | 状态 |
| :--- | :---: | :---: | :---: |
| 需求→测试点覆盖率 | 93.75% (45/48) | >= 95% | **FAIL** |
| P0测试点→用例覆盖率 | 100% (25/25) | 100% | **PASS** |
| P1测试点→用例覆盖率 | 100% (50/50) | >= 90% | **PASS** |
| P0风险覆盖率 | N/A (无P0风险项) | 100% | **PASS** |
| P1风险覆盖率 | 100% (1/1) | >= 90% | **PASS** |
| 过度覆盖率 | 0% (0/128) | <= 5% | **PASS** |
**结论**: 需求→测试点覆盖率 93.75% 未达到 95% 门槛,存在3个覆盖缺口需补充。P0 测试点→用例覆盖率 100% 达标,风险覆盖率达标,无过度覆盖。
---
## 覆盖缺口
### 缺口 GAP-001: 第一次上报列表字段完整性 — 无测试点
- **需求条目**: REQ-B-07 (需求文档 Section 2.2 "列表字段")
- **缺口类型**: 无测试点覆盖
- **风险等级**: P1
- **详细说明**: 需求明确列出第一次上报列表页的14个字段(货源单号、运单号、托运单号、车牌号、司机姓名、托运方名称、业务类型、货物名称、装货地址、卸货地址、运输里程、合同编号、上报状态、操作)。其他模块(看板/第二次/第三次/ETC/申诉/日志)均有列表字段完整性的测试点(TP-A-008, TP-C-004, TP-D-002, TP-E-002, TP-F-002, TP-G-005),但第一次上报模块缺少对应的列表字段完整性测试点。现有 TP-A-008 覆盖的是看板列表字段(不同字段集合),TP-B-011/012 覆盖的是详情弹窗字段(非列表)。
- **对比**: 同为"列表字段"需求项,第二次上报有 TP-C-004,第三次上报有 TP-D-002ETC 有 TP-E-002,仅第一次上报缺失。
- **建议**: 新增测试点 TP-B-020,验证第一次上报列表页14个字段完整且顺序与需求一致。对应新增用例覆盖。
### 缺口 GAP-002: 第二次上报自动重试机制 — 无测试点
- **需求条目**: REQ-C-05 (需求文档 Section 2.3 "特殊说明" 第4条)
- **缺口类型**: 无测试点覆盖
- **风险等级**: P1
- **详细说明**: 需求明确要求"若上报失败,系统会自动重试(最多3次),若仍失败则告警通知运营人员"。其他上报阶段均已有自动重试测试点(第一次: TP-B-007, 第三次: TP-D-007, ETC: TP-E-006),但第二次上报模块缺少对应的自动重试测试点。第二次上报是核验项最多的阶段(7类核验),也是最容易出现异常的环节,重试机制缺失覆盖是高风险的遗漏。
- **对比**: 三阶段+ETC共4个上报入口,第一次/第三次/ETC均有重试测试点,仅第二次缺失。
- **建议**: 新增测试点 TP-C-023,验证第二次上报失败后自动重试最多3次、间隔递增、全部失败后告警。对应新增用例覆盖。
### 缺口 GAP-003: 第二次上报详情弹窗分组字段完整性 — 无测试点
- **需求条目**: REQ-C-08 (需求文档 Section 2.3 "详情弹窗字段分组")
- **缺口类型**: 无测试点覆盖
- **风险等级**: P2
- **详细说明**: 需求明确定义第二次上报详情弹窗的6个分组,其中"资金流水信息"分组包含10个必选字段(支付金额、支付方式、支付时间、付款方名称、收款方名称、收款人、收款账号、收款账号类型、流水号、支付状态)和"车辆轨迹信息"分组包含6个必选字段(定位类型、定位时间、定位地点、经度、纬度、轨迹类型)。现有 TP-C-004 覆盖的是列表字段(14个列表字段),而非详情弹窗分组字段。其他模块的详情弹窗均有字段完整性测试点(第一次: TP-B-011/012, 第三次: TP-D-003, ETC: TP-E-003, 申诉: TP-F-004),仅第二次上报缺失。
- **对比**: 同为"详情弹窗字段分组"需求项,第一次上报有 TP-B-011/012,第三次上报有 TP-D-003,仅第二次上报缺失独立的详情弹窗测试点。
- **建议**: 新增测试点 TP-C-024,验证第二次上报详情弹窗6个分组(运单/托运方/收货方/资金流水/车辆轨迹/异常)的字段完整性和数据正确性。资金流水10字段和车辆轨迹6字段需重点验证。对应新增用例覆盖。
---
## 需求→测试点 追溯矩阵
### 模块A: 上报运单看板 (7条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-A-01 | 看板模糊搜索(运单号/托运单号/货源单号) | TP-A-001 | **PASS** |
| REQ-A-02 | 看板按上报阶段筛选(全部/第一次/第二次/第三次) | TP-A-002 | **PASS** |
| REQ-A-03 | 看板按核验状态筛选(全部/异常/通过) | TP-A-003 | **PASS** |
| REQ-A-04 | 看板按申诉状态筛选(全部/未申诉/申诉中/申诉通过/申诉驳回) | TP-A-004 | **PASS** |
| REQ-A-05 | 操作按钮(查询/重置/导出) | TP-A-001, TP-A-006, TP-A-007 | **PASS** |
| REQ-A-06 | 看板列表14字段 | TP-A-008 | **PASS** |
| REQ-A-07 | 操作列(申诉/进度/详情) + 详情弹窗分组 | TP-A-010, TP-A-011 | **PASS** |
### 模块B: 第一次上报-装货完成 (9条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-B-01 | 装货完成后自动触发(仅安徽税源地) | TP-B-001, TP-B-002 | **PASS** |
| REQ-B-02 | 上报数据包含7个子对象必选字段 | TP-B-001, TP-B-003 | **PASS** |
| REQ-B-03 | 核验通过后自动调用修改字段接口 | TP-B-006 | **PASS** |
| REQ-B-04 | 上报失败自动重试最多3次 | TP-B-007 | **PASS** |
| REQ-B-05 | 全部重试失败后通知运营人员 | TP-B-008 | **PASS** |
| REQ-B-06 | 上报状态规则+标签颜色 | TP-B-009, TP-B-010 | **PASS** |
| **REQ-B-07** | **第一次上报列表14字段** | **无** | **GAP** |
| REQ-B-08 | 详情弹窗按子对象分组(含异常信息) | TP-B-011, TP-B-012, TP-B-013 | **PASS** |
| REQ-B-09 | 手动上传按钮(仅上传失败状态) | TP-B-009 | **PASS** |
### 模块C: 第二次上报-打款完成 (10条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-C-01 | 打款完成后自动触发 | TP-C-001 | **PASS** |
| REQ-C-02 | 上报数据(运抵/资金流水/合同/轨迹) | TP-C-001 | **PASS** |
| REQ-C-03 | 资金流水单号重复系统自动检查 | TP-C-014, TP-C-015 | **PASS** |
| REQ-C-04 | 补传轨迹功能 | TP-C-022 | **PASS** |
| **REQ-C-05** | **上报失败自动重试最多3次+告警** | **无(告警部分间接覆盖)** | **GAP** |
| REQ-C-06 | 第二次上报列表字段 | TP-C-004 | **PASS** |
| REQ-C-07 | 收款账号类型(个人/对公)+标签颜色 | TP-C-005 | **PASS** |
| **REQ-C-08** | **详情弹窗6分组字段完整性** | **无** | **GAP** |
| REQ-C-09 | 7类核验(通过+异常各14场景) | TP-C-006~TP-C-019 | **PASS** |
| REQ-C-10 | 第二次上报依赖第一次完成 | TP-C-020 | **PASS** |
### 模块D: 第三次上报-开票完成 (7条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-D-01 | 开票完成后触发(依赖第二次) | TP-D-001, TP-D-005 | **PASS** |
| REQ-D-02 | 上报数据(运单+发票+油气发票) | TP-D-001, TP-D-004 | **PASS** |
| REQ-D-03 | 增值税发票验证失败处理 | TP-D-006 | **PASS** |
| REQ-D-04 | 上报失败自动重试最多3次+告警 | TP-D-007 | **PASS** |
| REQ-D-05 | 第三次上报列表11字段 | TP-D-002 | **PASS** |
| REQ-D-06 | 详情弹窗字段分组(发票17字段+油气发票) | TP-D-003, TP-D-008 | **PASS** |
| REQ-D-07 | 发票金额精度校验(价税合计2位小数) | TP-D-010 | **PASS** |
### 模块E: ETC发票上传 (6条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-E-01 | ETC发票上传触发 | TP-E-001 | **PASS** |
| REQ-E-02 | 税务抵扣前置条件 | TP-E-004 | **PASS** |
| REQ-E-03 | ETC发票验证失败处理 | TP-E-005 | **PASS** |
| REQ-E-04 | 上报失败自动重试最多3次+告警 | TP-E-006 | **PASS** |
| REQ-E-05 | ETC上传列表11字段 | TP-E-002 | **PASS** |
| REQ-E-06 | 详情弹窗3分组(运单7+ETC18+异常4) | TP-E-003 | **PASS** |
### 模块F: 异常申诉功能 (5条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-F-01 | 申诉完整闭环(异常查询→发起→反馈→判断) | TP-F-001, TP-F-003 | **PASS** |
| REQ-F-02 | 申诉列表13字段 | TP-F-002 | **PASS** |
| REQ-F-03 | 申诉详情弹窗5分组字段 | TP-F-004 | **PASS** |
| REQ-F-04 | 申诉复核说明(省平台复核,驳回可重新申诉) | TP-F-006 | **PASS** |
| REQ-F-05 | 异常代码一览表映射 | TP-F-011 | **PASS** |
### 模块G: 上报日志 (4条需求)
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-G-01 | 查询条件(单号/阶段/结果/时间范围) | TP-G-001~TP-G-004 | **PASS** |
| REQ-G-02 | 日志列表9字段 | TP-G-005 | **PASS** |
| REQ-G-03 | 详情弹窗(完整请求/响应报文) | TP-G-006 | **PASS** |
| REQ-G-04 | 所有上报接口调用记录全覆盖 | TP-G-007 | **PASS** |
### 跨模块需求
| 需求条目 | 需求描述 | 测试点 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| REQ-X-01 | 三阶段依赖链完整性 | TP-B-005, TP-C-020, TP-D-005, TP-X-001 | **PASS** |
| REQ-X-02 | 非安徽税源地不上报 | TP-B-002, TP-X-004 | **PASS** |
| REQ-X-03 | 多省份数据隔离 | TP-X-005 | **PASS** |
---
## 测试点→用例 追溯矩阵
> 完整103条追溯见测试用例文件内置映射表(第199-305行),以下为P0测试点专项核查。
### P0测试点覆盖确认 (25/25 = 100%)
| P0测试点 | 描述 | 对应用例 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| TP-A-001 | 看板模糊搜索 | AH_REPORT_DASH_001, 002, 003 | **PASS** |
| TP-B-001 | 装货完成后自动触发第一次上报 | AH_REPORT_R1_001 | **PASS** |
| TP-B-002 | 仅安徽税源地运单触发 | AH_REPORT_R1_002, 003 | **PASS** |
| TP-B-004 | 省份代码=34(防历史缺陷) | AH_REPORT_R1_003, 006 | **PASS** |
| TP-B-005 | 第一次是后续前置条件(防历史缺陷) | AH_REPORT_R1_007, 008 | **PASS** |
| TP-B-014 | 第一次上报幂等性(防历史缺陷) | AH_REPORT_R1_013, 014, CROSS_006 | **PASS** |
| TP-C-001 | 打款完成后自动触发第二次上报 | AH_REPORT_R2_001 | **PASS** |
| TP-C-002 | 资金流水数据来源支付流水表(防历史缺陷) | AH_REPORT_R2_002 | **PASS** |
| TP-C-003 | 财务修改金额后使用最新金额(防历史缺陷) | AH_REPORT_R2_003 | **PASS** |
| TP-C-006 | 运单重复核验—通过场景 | AH_REPORT_R2_005 | **PASS** |
| TP-C-007 | 运单重复核验—异常场景 | AH_REPORT_R2_006 | **PASS** |
| TP-C-020 | 第二次依赖第一次完成(防历史缺陷) | AH_REPORT_R2_024 | **PASS** |
| TP-C-021 | 第二次上报幂等性(防历史缺陷) | AH_REPORT_R2_025, CROSS_006 | **PASS** |
| TP-D-001 | 开票完成后触发第三次上报 | AH_REPORT_R3_001 | **PASS** |
| TP-D-005 | 第三次依赖第二次完成(防历史缺陷) | AH_REPORT_R3_006, 007 | **PASS** |
| TP-E-001 | ETC发票上传触发 | AH_REPORT_ETC_001 | **PASS** |
| TP-E-004 | 税务抵扣前置条件 | AH_REPORT_ETC_004 | **PASS** |
| TP-F-001 | 申诉完整闭环 | AH_REPORT_APL_001 | **PASS** |
| TP-F-003 | 申诉状态流转全路径 | AH_REPORT_APL_004, 005 | **PASS** |
| TP-G-001 | 日志按单号模糊搜索 | AH_REPORT_LOG_001, 002 | **PASS** |
| TP-G-002 | 日志按上报阶段筛选 | AH_REPORT_LOG_003 | **PASS** |
| TP-X-001 | 三阶段依赖链端到端(防历史缺陷) | AH_REPORT_CROSS_001 | **PASS** |
| TP-X-002 | 多模块数据一致性(防历史缺陷) | AH_REPORT_CROSS_002 | **PASS** |
| TP-X-003 | 安徽运八全流程完整链路 | AH_REPORT_CROSS_003 | **PASS** |
| TP-X-004 | 非安徽税源地全流程不上报 | AH_REPORT_CROSS_004 | **PASS** |
### P1测试点覆盖核查 (50/50 = 100%)
全部50个P1测试点均有对应用例覆盖,详见测试用例文件内置映射表。抽查5个高风险P1测试点:
| P1测试点 | 描述 | 对应用例 | 覆盖状态 |
| :--- | :--- | :--- | :---: |
| TP-B-003 | 第一次上报建单信息格式校验 | AH_REPORT_R1_004, 005, 021 (3条) | **PASS** |
| TP-B-007 | 第一次上报自动重试3次 | AH_REPORT_R1_010 | **PASS** |
| TP-C-019 | 轨迹合规核验—异常(点位不足) | AH_REPORT_R2_022, 023 (2条) | **PASS** |
| TP-D-006 | 增值税发票验证失败 | AH_REPORT_R3_008, 009 (2条) | **PASS** |
| TP-E-007 | ETC税额计算精度(资损风险) | AH_REPORT_ETC_008 | **PASS** |
---
## 风险覆盖审计
### 风险矩阵覆盖
| 风险ID | 等级 | 风险描述 | 覆盖测试点 | 覆盖用例 | 覆盖状态 |
| :--- | :---: | :--- | :--- | :--- | :---: |
| RISK-FINANCIAL | P1 | ETC税额计算/发票金额精度/打款金额数据溯源,涉及资损 | TP-C-002, TP-C-003, TP-D-010, TP-E-007 | AH_REPORT_R2_002, R2_003, R3_012, ETC_008 | **PASS** |
| RISK-AVAILABILITY | P2 | 监管平台接口超时/弱网/服务不可用导致上报中断 | TP-B-007, TP-B-015, TP-B-016, TP-D-007, TP-E-006, TP-F-013 | AH_REPORT_R1_010, R1_015, R1_016, R3_010, ETC_007, APL_015 | **PASS** |
### 风险覆盖统计
| 风险等级 | 总数 | 已覆盖 | 覆盖率 | 目标 | 状态 |
| :--- | :---: | :---: | :---: | :---: | :---: |
| P0 | 0 | 0 | N/A | 100% | **PASS** |
| P1 | 1 | 1 | 100% | >= 90% | **PASS** |
| P2 | 1 | 1 | 100% | — | **PASS** |
---
## 过度覆盖审计
### 反向追溯: 用例 → 需求
全部128条测试用例均可追溯至明确的测试点,所有测试点均可追溯至需求条目或历史缺陷(历史缺陷本身源于需求Bug)。
| 检查项 | 结果 |
| :--- | :---: |
| 总用例数 | 128 |
| 可追溯用例 | 128 |
| 无需求依据的用例 | 0 |
| 冗余/重复用例 | 0 |
| 过度覆盖率 | 0% |
| 目标(<= 5%) | **PASS** |
**说明**: 所有用例均通过"对应TP-xxx"或"[AI修正: 历史缺陷防御]"标记明确了来源。历史缺陷用例(BUG-202607-01/02/03/04)均有对应的需求依赖项作为依据,不属于过度覆盖。
---
## 覆盖热力图
| 模块 | 需求条目 | 测试点 | 测试用例 | 覆盖密度 | 评价 |
| :--- | :---: | :---: | :---: | :---: | :--- |
| A 上报运单看板 | 7 | 14 | 18 | **高** | 全维度覆盖,包含UI/权限/边界/空状态 |
| B 第一次上报 | 9 | 19 | 23 | **高** | 全维度覆盖,但列表字段完整性缺失(GAP-001) |
| C 第二次上报 | 10 | 22 | 26 | **中高** | 7类核验全覆盖(**亮点**),但重试和详情弹窗缺失(GAP-002/003) |
| D 第三次上报 | 7 | 11 | 14 | **中高** | 主流程+异常+金额精度全覆盖 |
| E ETC发票上传 | 6 | 9 | 12 | **中高** | 税额精度(资损)专项覆盖(**亮点**),多发票场景覆盖 |
| F 异常申诉 | 5 | 13 | 17 | **高** | 完整闭环+状态流转+权限+异常代码映射全覆盖(**亮点**) |
| G 上报日志 | 4 | 9 | 11 | **中高** | 搜索/筛选/报文详情/审计全覆盖 |
| X 跨模块 | — | 6 | 7 | **高** | 端到端链路+数据一致性+省份隔离全覆盖 |
### 覆盖盲区
| 盲区 | 位置 | 影响 |
| :--- | :--- | :--- |
| 第一次上报列表字段完整性 | 模块B | 列表字段渲染错误无法被测试捕获(如字段缺失、顺序错乱、格式错误) |
| 第二次上报自动重试 | 模块C | 最易出异常的阶段缺失重试验证,依赖链断裂后无自动恢复覆盖 |
| 第二次上报详情弹窗分组完整性 | 模块C | 资金流水10字段和车辆轨迹6字段在详情弹窗中的展示未验证 |
---
## 历史缺陷防御覆盖核查
| 历史缺陷ID | 防御测试点数 | 防御用例数 | 覆盖状态 |
| :--- | :---: | :---: | :---: |
| BUG-202607-01 (阶段依赖链断裂) | 4 (TP-B-005, C-020, D-005, X-001) | 6 | **PASS** |
| BUG-202607-02 (重试幂等缺陷) | 5 (TP-B-014, C-021, D-009, E-008, F-012) | 6 | **PASS** |
| BUG-202607-03 (跨模块数据不一致) | 3 (TP-C-002, C-003, X-002) | 4 | **PASS** |
| BUG-202607-04 (省份代码硬编码) | 2 (TP-B-004, X-005) | 2 | **PASS** |
全部4个已知历史缺陷均有充分的正向+反向防御覆盖。
---
## 审计结论与建议
### 整体评价
- 本次覆盖率审计发现 **3个覆盖缺口**,需求→测试点覆盖率 **93.75%**,略低于95%目标
- **亮点**: 第二次上报7类核验逐项覆盖(通过+异常各14个测试点)、申诉完整闭环验证、跨模块端到端链路、历史缺陷100%防御覆盖、ETC税额精度专项覆盖
- **改进项**: 3个缺口均为"完整性"类遗漏(列表字段/重试机制/详情弹窗),属于测试点设计时未逐条对照需求清单的系统性遗漏
### 建议行动
| 优先级 | 行动项 | 对应缺口 |
| :---: | :--- | :--- |
| **P0** | 新增 TP-B-020 "第一次上报列表字段完整性校验" 及对应用例(参考 TP-C-004 结构) | GAP-001 |
| **P0** | 新增 TP-C-023 "第二次上报自动重试—最多3次间隔递增" 及对应用例(参考 TP-B-007 结构) | GAP-002 |
| **P1** | 新增 TP-C-024 "第二次上报详情弹窗分组字段完整性" 及对应用例(重点: 资金流水10字段+车辆轨迹6字段) | GAP-003 |
| **P2** | 需求"异常代码一览表"仅有标题无内容,确认后补充 TP-F-011 的详细验证数据 | REQ-F-05 |
| **P2** | 确认自动重试间隔时间(当前假设5s/15s/30s),更新所有重试用例的测试数据 | — |
---
> **审计元数据**:
> - 审计依据: requirement.md (7模块/48需求条目), 测试点 (103个/7模块), 测试用例 (128个/7模块), 风险评估 (2项风险)
> - 追溯方法: 正向追溯 (需求→测试点) + 反向追溯 (用例→需求) + 风险覆盖交叉验证
> - 覆盖率计算: 需求→测试点 = 已覆盖需求条目 / 总需求条目; 过度覆盖 = 无需求依据的用例 / 总用例数