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:
@@ -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}")
|
||||
Reference in New Issue
Block a user