test(物流公司管理需求): 需求文档与 QE Fleet 全流程设计产物入库

- 需求 v1.1 + 2026-09-29 需求方确认的 Q7~Q19 决议(含 BR-07/BR-09/6.7/6.9 矛盾表述修订)
- 测试点 159 个、测试用例 164 条(P0 55/P1 81/P2 23/P3 5),需求→测试点→用例三级追溯覆盖率 100%
- 质量裁决 PASS(首轮 PASS_WITH_FIX,13 项待确认确认后复裁决升级);评审原始 2 阻断项+9 建议项+3 优化项已全部修复
- 确认单:与 4 个历史需求均为并行关系、0 冲突、0 回写
- 附导出 v1/v2 版本快照、Playwright/Appium 脚本骨架、覆盖率审计脚本与指标、评审修复脚本
This commit is contained in:
xst
2026-09-29 10:03:35 +08:00
parent 1a53a1f537
commit 8c61209dd4
47 changed files with 14470 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
# -*- coding: utf-8 -*-
"""第二批修复:O-001(余 2 处笔误)、O-002(泛化尾述收敛)、O-003(数据引用对齐)。"""
from __future__ import annotations
import sys
from pathlib import Path
REPO = Path(__file__).resolve().parent.parent
sys.stdout.reconfigure(encoding="utf-8")
CASES = REPO / "output" / "test_cases" / "物流公司管理需求_测试用例.md"
FIXES: list[tuple[str, str, str, str]] = [
# O-001 余项
("PLT_BSC_LC_019", "预期结果",
"1. 不传许可证时提单成功(核心边界口径,不得误判为必传)",
"1. 不传许可证时提交成功(核心边界口径,不得误判为必传)"),
("PLT_BSC_LC_066", "测试数据",
"生效=T-0、过期=T+365",
"生效时间=T、过期时间=T+365"),
# O-002 泛化尾述收敛
("PLT_BSC_LC_012", "预期结果",
"3. 空态下分页组件收敛(不显示明细分页)、导出按钮行为符合平台口径",
"3. 空态下分页组件收敛(不显示明细分页)、导出按钮不可点 或 给出无数据提示(记录实际行为)"),
("PLT_BSC_LC_041", "预期结果",
"4. 控制台无未捕获异常,页面功能正常",
"4. 控制台无未捕获异常;列表查询/重置/导出等页面功能可正常执行(无因注入样本导致的渲染或请求异常)"),
("PLT_TMS_LC_011", "预期结果",
"3. 恢复后搜索、分页、单选功能正常",
"3. 恢复后搜索可命中、分页可翻页、单选可勾选并回填(三功能逐一验证)"),
("PLT_TMS_LC_074", "预期结果",
"3. \"无外协公司\"选项下记录可正常操作,展示列为\"无外协公司\"",
"3. \"无外协公司\"选项下记录可执行打款/驳回,状态流转与未筛选时一致,展示列为\"无外协公司\""),
# O-003 数据引用对齐
("PLT_TMS_LC_005", "测试数据",
"BLK-03(名称/代码关键词、无结果关键词 ZZZ不存在);WT-08",
"LC-07(名称部分字符\"测试庚\"、信用代码前缀 91532301);无结果关键词 ZZZ不存在;WT-08"),
("PLT_BSC_LC_040", "测试数据",
"UQ-10(1 秒连点 2 次);REQ-011;项目画像 §8.2",
"UQ-10(1 秒连点 3 次);REQ-011;项目画像 §8.2"),
]
FIX_MAP = {
"PLT_BSC_LC_019": "O-001", "PLT_BSC_LC_066": "O-001",
"PLT_BSC_LC_012": "O-002", "PLT_BSC_LC_041": "O-002",
"PLT_TMS_LC_011": "O-002", "PLT_TMS_LC_074": "O-002",
"PLT_TMS_LC_005": "O-003", "PLT_BSC_LC_040": "O-003",
}
lines = CASES.read_text(encoding="utf-8").splitlines(keepends=True)
line_of: dict[str, int] = {}
for i, line in enumerate(lines):
if line.startswith("| PLT_"):
line_of[line.split("|")[1].strip()] = i
for case_id, col, old, new in FIXES:
li = line_of[case_id]
line = lines[li]
cnt = line.count(old)
if cnt != 1:
raise SystemExit(f"❌ {case_id} [{col}] 命中 {cnt} 次(期望 1):{old[:50]!r}")
lines[li] = line.replace(old, new)
print(f"✅ {case_id} [{col}] 已修复")
for case_id, fix_id in FIX_MAP.items():
li = line_of[case_id]
line = lines[li]
tag = f";[AI修正: 评审修复 {fix_id}]"
if tag in line:
continue
idx = line.rstrip().rfind(" |")
if idx < 0:
raise SystemExit(f"❌ {case_id} 备注列尾部结构异常")
lines[li] = line[:idx] + tag + line[idx:]
print(f"✅ {case_id} 补标注 [AI修正: 评审修复 {fix_id}]")
CASES.write_text("".join(lines), encoding="utf-8")
print(f"\n完成:{len(FIXES)} 处修复 + {len(FIX_MAP)} 处标注 -> {CASES}")