From b2a035c4f9e7d49109ec5824543329ecec7f47a3 Mon Sep 17 00:00:00 2001 From: xst Date: Thu, 9 Jul 2026 14:29:11 +0800 Subject: [PATCH] feat: Agentic QE Fleet v2.0.0 - 14-agent quality engineering platform - 14 specialized AI agents across 5 battle zones (Prepare/Analyze/Design/Review/Monitor) - New: risk-assessor, test-strategist, data-builder, coverage-auditor, quality-gatekeeper, execution-analyst, knowledge-curator - New: fleet_runner.py orchestrator with multi-zone manifest pipeline - New: fleet_config.yml for centralized configuration - New: knowledge activation system (keyword + semantic matching) - New: semantic conflict detection with severity grading (P0-P3) - New: three-tier quality gate (PASS/PASS_WITH_FIX/BLOCKED) - New: monitor zone for test execution analysis and auto knowledge curation - Backward compatible: /case_generate alias, case_pipeline.py preserved - Comprehensive docs: USER_GUIDE.md + MAINTENANCE_GUIDE.md --- .claude/commands/case_generate.md | 14 + .claude/instructions.md | 30 + .claude/settings.json | 15 + .claude/skills/qe_fleet/SKILL.md | 108 + .gitignore | 6 + AGENTS.md | 144 ++ README.md | 187 ++ agents/analyze/conflict_detector.md | 70 + agents/analyze/requirement_analyzer.md | 72 + agents/analyze/risk_assessor.md | 81 + agents/design/case_designer.md | 70 + agents/design/data_builder.md | 102 + agents/design/test_strategist.md | 63 + agents/design/testpoint_designer.md | 83 + agents/monitor/execution_analyst.md | 118 + agents/monitor/knowledge_curator.md | 114 + agents/prepare/document_parser.md | 47 + agents/prepare/knowledge_activator.md | 79 + agents/review/case_reviewer.md | 103 + agents/review/coverage_auditor.md | 93 + agents/review/quality_gatekeeper.md | 96 + decisions/README.md | 57 + decisions/确认结论模板.md | 47 + docs/MAINTENANCE_GUIDE.md | 438 ++++ docs/USER_GUIDE.md | 377 +++ .../2026-07-09-agentic-qe-fleet-design.md | 357 +++ fleet_config.yml | 138 ++ knowledge_base/00_project/project_profile.md | 78 + .../01_standards/definition_of_done.md | 86 + .../01_standards/review_checklist.md | 105 + knowledge_base/01_standards/terminology.md | 114 + .../01_standards/terminology_optional_saas.md | 38 + .../01_standards/test_case_template.md | 87 + .../02_history/common_missed_scenes.md | 43 + .../02_history/historical_defects.md | 63 + knowledge_base/02_history/marketing_rules.md | 62 + .../marketing_activity_cases.md | 52 + .../03_best_practices/payment_flow_cases.md | 9 + output/analysis/新人礼需求_关联与冲突.md | 16 + output/analysis/新人礼需求_分析.md | 111 + output/manifests/新人礼需求.json | 56 + .../新人礼需求/requirement.md | 61 + .../新人礼需求/technical_solution_01.md | 66 + output/test_cases/新人礼需求_测试用例.md | 47 + output/test_points/新人礼需求_测试点.md | 80 + output/versions/新人礼需求/VERSION_INDEX.md | 7 + .../versions/新人礼需求/v7/snapshot_meta.json | 10 + .../versions/新人礼需求/v7/snapshot_note.md | 6 + .../新人礼需求/v7/新人礼需求_测试用例.xlsx | Bin 0 -> 12294 bytes .../v8/normalized_inputs/requirement.md | 61 + .../v8/normalized_inputs/technical_solution_01.md | 66 + .../versions/新人礼需求/v8/snapshot_meta.json | 14 + output/versions/新人礼需求/v8/新人礼需求.json | 43 + .../新人礼需求/v8/新人礼需求_关联与冲突.md | 16 + .../versions/新人礼需求/v8/新人礼需求_分析.md | 111 + .../新人礼需求/v8/新人礼需求_测试点.md | 71 + .../新人礼需求/v8/新人礼需求_测试用例.md | 33 + .../新人礼需求/v8/新人礼需求_测试用例.xlsx | Bin 0 -> 12287 bytes .../v9/normalized_inputs/requirement.md | 61 + .../v9/normalized_inputs/technical_solution_01.md | 66 + .../versions/新人礼需求/v9/snapshot_meta.json | 14 + output/versions/新人礼需求/v9/新人礼需求.json | 44 + .../新人礼需求/v9/新人礼需求_关联与冲突.md | 16 + .../versions/新人礼需求/v9/新人礼需求_分析.md | 111 + .../新人礼需求/v9/新人礼需求_测试点.md | 80 + .../新人礼需求/v9/新人礼需求_测试用例.md | 47 + .../新人礼需求/v9/新人礼需求_测试用例.xlsx | Bin 0 -> 14234 bytes requirements.txt | 3 + requirements/新人礼需求.md | 72 + scripts/case_pipeline.py | 2117 +++++++++++++++++ scripts/export_excel.py | 359 +++ scripts/fleet_agents.py | 212 ++ scripts/fleet_manifest.py | 180 ++ scripts/fleet_runner.py | 1089 +++++++++ scripts/governance_audit.py | 252 ++ source_docs/requirements_raw/新人礼需求.docx | Bin 0 -> 819204 bytes .../technical_solutions/新人礼技术方案.docx | Bin 0 -> 358398 bytes 操作手册.md | 460 ++++ 项目简介.md | 1 + 79 files changed, 9905 insertions(+) create mode 100644 .claude/commands/case_generate.md create mode 100644 .claude/instructions.md create mode 100644 .claude/settings.json create mode 100644 .claude/skills/qe_fleet/SKILL.md create mode 100644 .gitignore create mode 100644 AGENTS.md create mode 100644 README.md create mode 100644 agents/analyze/conflict_detector.md create mode 100644 agents/analyze/requirement_analyzer.md create mode 100644 agents/analyze/risk_assessor.md create mode 100644 agents/design/case_designer.md create mode 100644 agents/design/data_builder.md create mode 100644 agents/design/test_strategist.md create mode 100644 agents/design/testpoint_designer.md create mode 100644 agents/monitor/execution_analyst.md create mode 100644 agents/monitor/knowledge_curator.md create mode 100644 agents/prepare/document_parser.md create mode 100644 agents/prepare/knowledge_activator.md create mode 100644 agents/review/case_reviewer.md create mode 100644 agents/review/coverage_auditor.md create mode 100644 agents/review/quality_gatekeeper.md create mode 100644 decisions/README.md create mode 100644 decisions/确认结论模板.md create mode 100644 docs/MAINTENANCE_GUIDE.md create mode 100644 docs/USER_GUIDE.md create mode 100644 docs/superpowers/specs/2026-07-09-agentic-qe-fleet-design.md create mode 100644 fleet_config.yml create mode 100644 knowledge_base/00_project/project_profile.md create mode 100644 knowledge_base/01_standards/definition_of_done.md create mode 100644 knowledge_base/01_standards/review_checklist.md create mode 100644 knowledge_base/01_standards/terminology.md create mode 100644 knowledge_base/01_standards/terminology_optional_saas.md create mode 100644 knowledge_base/01_standards/test_case_template.md create mode 100644 knowledge_base/02_history/common_missed_scenes.md create mode 100644 knowledge_base/02_history/historical_defects.md create mode 100644 knowledge_base/02_history/marketing_rules.md create mode 100644 knowledge_base/03_best_practices/marketing_activity_cases.md create mode 100644 knowledge_base/03_best_practices/payment_flow_cases.md create mode 100644 output/analysis/新人礼需求_关联与冲突.md create mode 100644 output/analysis/新人礼需求_分析.md create mode 100644 output/manifests/新人礼需求.json create mode 100644 output/normalized_inputs/新人礼需求/requirement.md create mode 100644 output/normalized_inputs/新人礼需求/technical_solution_01.md create mode 100644 output/test_cases/新人礼需求_测试用例.md create mode 100644 output/test_points/新人礼需求_测试点.md create mode 100644 output/versions/新人礼需求/VERSION_INDEX.md create mode 100644 output/versions/新人礼需求/v7/snapshot_meta.json create mode 100644 output/versions/新人礼需求/v7/snapshot_note.md create mode 100644 output/versions/新人礼需求/v7/新人礼需求_测试用例.xlsx create mode 100644 output/versions/新人礼需求/v8/normalized_inputs/requirement.md create mode 100644 output/versions/新人礼需求/v8/normalized_inputs/technical_solution_01.md create mode 100644 output/versions/新人礼需求/v8/snapshot_meta.json create mode 100644 output/versions/新人礼需求/v8/新人礼需求.json create mode 100644 output/versions/新人礼需求/v8/新人礼需求_关联与冲突.md create mode 100644 output/versions/新人礼需求/v8/新人礼需求_分析.md create mode 100644 output/versions/新人礼需求/v8/新人礼需求_测试点.md create mode 100644 output/versions/新人礼需求/v8/新人礼需求_测试用例.md create mode 100644 output/versions/新人礼需求/v8/新人礼需求_测试用例.xlsx create mode 100644 output/versions/新人礼需求/v9/normalized_inputs/requirement.md create mode 100644 output/versions/新人礼需求/v9/normalized_inputs/technical_solution_01.md create mode 100644 output/versions/新人礼需求/v9/snapshot_meta.json create mode 100644 output/versions/新人礼需求/v9/新人礼需求.json create mode 100644 output/versions/新人礼需求/v9/新人礼需求_关联与冲突.md create mode 100644 output/versions/新人礼需求/v9/新人礼需求_分析.md create mode 100644 output/versions/新人礼需求/v9/新人礼需求_测试点.md create mode 100644 output/versions/新人礼需求/v9/新人礼需求_测试用例.md create mode 100644 output/versions/新人礼需求/v9/新人礼需求_测试用例.xlsx create mode 100644 requirements.txt create mode 100644 requirements/新人礼需求.md create mode 100644 scripts/case_pipeline.py create mode 100644 scripts/export_excel.py create mode 100644 scripts/fleet_agents.py create mode 100644 scripts/fleet_manifest.py create mode 100644 scripts/fleet_runner.py create mode 100644 scripts/governance_audit.py create mode 100644 source_docs/requirements_raw/新人礼需求.docx create mode 100644 source_docs/technical_solutions/新人礼技术方案.docx create mode 100644 操作手册.md create mode 100644 项目简介.md diff --git a/.claude/commands/case_generate.md b/.claude/commands/case_generate.md new file mode 100644 index 0000000..939abe2 --- /dev/null +++ b/.claude/commands/case_generate.md @@ -0,0 +1,14 @@ +# /case_generate(向后兼容) + +> 本命令保留为 `/qe-fleet run` 的别名。实际执行逻辑请参见 `.claude/skills/qe_fleet/SKILL.md`。 + +用法: + +```text +/case_generate requirements/你的需求.md +/case_generate source_docs/requirements_raw/你的需求.docx +/case_generate source_docs/requirements_raw/你的需求.doc +/case_generate source_docs/requirements_raw/你的需求.pdf +``` + +收到该命令后,等同于 `/qe-fleet run $ARGUMENTS`,按 qe-fleet skill 规则执行。 diff --git a/.claude/instructions.md b/.claude/instructions.md new file mode 100644 index 0000000..c017d6d --- /dev/null +++ b/.claude/instructions.md @@ -0,0 +1,30 @@ +# Role +你是一名资深测试专家,负责驱动 Agentic QE Fleet — 一个由 14 个专业 AI Agent 组成的质量工程舰队。 + +# Global Guidelines +1. 所有输出必须基于需求与知识库,禁止臆造不存在的业务能力。 +2. 测试点和测试用例必须可追溯到具体需求条目、历史缺陷或团队规则。 +3. 生成任务前,必须优先读取 `knowledge_base/` 下的标准、历史经验和最佳实践。 +4. 每次任务都必须读取 `knowledge_base/00_project/project_profile.md`,并把项目差异化约束体现在分析、测试点、用例中。 +5. 多需求场景下必须结合关联需求与冲突检查结果,不可只看单个需求文档。 +6. 术语使用必须以 manifest 中的 `effective_terminology_files` 为准,不主动引入未命中的可选术语域。 +7. 项目统一工作流由 `scripts/fleet_runner.py` 驱动。 +8. 当用户输入 `/qe-fleet run` 或 `/case_generate` 时,你必须自动完成整条链路: + - 先执行 `python3 scripts/fleet_runner.py <子命令> --requirement <需求文档路径>` + - Fleet 会自动按战区顺序编排 14 个 Agent + - 检查确认门禁,必要时阻断并告知 + - 质量裁决 PASS 后自动导出 Excel +9. 若用户已经补完确认单,并要求"继续""按确认结论重跑",优先执行 `python3 scripts/case_pipeline.py apply-confirmation --requirement <需求文档路径>`。 +10. 除非脚本失败,否则不要让用户手动执行这些命令。 +11. 若本次改动涉及 `scripts/`、`.claude/`、`agents/`、`knowledge_base/01_standards/`、`AGENTS.md`、`README.md`、`fleet_config.yml` 中任一范围,必须在结束前执行 `python3 scripts/governance_audit.py auto`,并同步修正文档或规则滞后。 +12. 最终测试用例必须使用 `knowledge_base/01_standards/test_case_template.md` 中规定的唯一表头。 +13. 测试用例在写入前必须先按 `knowledge_base/01_standards/review_checklist.md` 做一次自检。 +14. 若发现跨需求规则冲突,必须给出明确修订建议(问题、影响范围、修订方向)。 +15. 若输入需求为 `doc`、`docx` 或 `pdf`,后续分析必须优先使用 prepare 战区产出的标准化 Markdown。 +16. 如需求有歧义或关键前提缺失,必须显式标记: + +```md +> ⚠️ 待确认:问题、影响范围、建议确认方向 +``` + +17. 若 `confirmation_gate` 未解除或质量裁决为 BLOCKED,不得向用户声称"流程已完成"或"Excel 已导出"。 diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..810a670 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,15 @@ +{ + "allowedTools": [ + "Bash", + "Read", + "Write", + "Glob", + "Grep", + "LS" + ], + "denyTools": [], + "shell": { + "enabled": true + }, + "customInstructions": "Always prioritize accuracy and completeness in testing scenarios. When generating test cases, ensure edge cases are explicitly identified." +} diff --git a/.claude/skills/qe_fleet/SKILL.md b/.claude/skills/qe_fleet/SKILL.md new file mode 100644 index 0000000..4fccdd5 --- /dev/null +++ b/.claude/skills/qe_fleet/SKILL.md @@ -0,0 +1,108 @@ +--- +name: qe-fleet +description: Agentic QE Fleet — 14 个专业 AI Agent 组成的自治质量工程舰队。当用户输入 /qe-fleet 或 /case_generate 时使用本 skill。 +metadata: + short-description: 多 Agent QE Fleet:从需求到测试用例的全流程自动化 + 质量门禁 + 知识沉淀 +--- + +# Agentic QE Fleet + +当用户输入以下任一意图时使用本 skill: + +- `/qe-fleet run <需求文档>` +- `/qe-fleet prepare <需求文档>` +- `/qe-fleet analyze <需求文档>` +- `/qe-fleet design <需求文档>` +- `/qe-fleet review <需求文档>` +- `/qe-fleet export <需求文档>` +- `/qe-fleet monitor <需求文档> --results <测试结果>` +- `/qe-fleet status <需求文档>` +- `/case_generate <需求文档>`(向后兼容别名) + +## 自动执行要求 + +收到 `/qe-fleet` 命令后,不要停在说明阶段,必须自动完成以下步骤: + +### /qe-fleet run + +1. 执行: +```bash +python3 scripts/fleet_runner.py run --requirement <需求文档路径> +``` + +2. fleet_runner.py 会自动按战区顺序执行: + - **PREPARE**: document-parser(文档解析) → knowledge-activator(知识激活) + - **ANALYZE**: requirement-analyzer(需求分析) + conflict-detector(冲突检测) → risk-assessor(风险评估) + - **DESIGN**: test-strategist(测试策略) → testpoint-designer(测试点) + data-builder(测试数据) → case-designer(用例设计) + - **REVIEW**: case-reviewer(用例评审) + coverage-auditor(覆盖率审计) → quality-gatekeeper(质量裁决) + - **MONITOR**: execution-analyst(执行分析) → knowledge-curator(知识沉淀) + - **EXPORT**: 质量裁决 PASS 后自动导出 Excel + +3. 检查确认门禁: + - 若 analyze 战区 `confirmation_gate.required=true` 且 `decision_status` 不是 `confirmed`,阻断并告知 + - 提供确认单路径和阻断原因 + +4. 检查质量裁决: + - 若 review 战区 quality_verdict 为 `BLOCKED`,告知阻断原因 + - 若为 `PASS` 或 `PASS_WITH_FIX`,自动导出 + +5. 最终反馈: + - 各战区状态(✅ 完成 / ⏳ 进行中 / ⬜ 待执行) + - 产物文件路径 + - 质量裁决结果 + - 若失败,失败在哪一步 + +### /qe-fleet status + +```bash +python3 scripts/fleet_runner.py status --requirement <需求文档路径> +``` + +### /qe-fleet monitor + +```bash +python3 scripts/fleet_runner.py monitor --requirement <需求文档路径> --results <测试结果文件> +``` + +## 战区详细流程 + +### Prepare 战区 +- **document-parser**: 解析 docx/pdf/doc → 标准化 Markdown;自动识别同主题技术方案;标注解析置信度 +- **knowledge-activator**: 按需求内容关键词+语义匹配激活术语/规则/历史缺陷/最佳实践;检测知识缺口 + +### Analyze 战区 +- **requirement-analyzer**: 结构化需求模型(背景/目标/角色/规则/流程/异常);项目画像差异化;歧义标注 +- **conflict-detector**: 语义级历史需求冲突检测(方向/数值/状态机/权限);严重度分级(P0-P3) +- **risk-assessor**: 多维度风险矩阵(资损/可用性/数据/合规/兼容性);可能性 × 影响度 = 风险等级 + +### Design 战区 +- **test-strategist**: 测试金字塔分配;优先级覆盖规则;P0 必测清单 +- **testpoint-designer**: 全面测试点矩阵;来源标注(需求/历史缺陷/风险矩阵/冲突修订/项目画像) +- **case-designer**: 可执行用例;原子性;双验证预期结果(UI + 数据) +- **data-builder**: 自动提取+人工补充测试数据(账号/金额/ID/枚举/边界值) + +### Review 战区 +- **case-reviewer**: 按 review_checklist 逐项评审;错误分级(阻断/建议/优化) +- **coverage-auditor**: 需求→测试点→用例三级追溯;覆盖缺口识别;过度覆盖识别 +- **quality-gatekeeper**: 三级裁决(PASS / PASS_WITH_FIX / BLOCKED);裁决依据引用具体评审条目 + +### Monitor 战区 +- **execution-analyst**: 失败归类(ENV/DATA/CASE/REAL_BUG);失败模式识别;根因推测 +- **knowledge-curator**: 自动回写知识库;去重保护;P0 自动生效 / P1-P3 人工确认 + +## 约束 + +- 除非脚本执行失败,不要要求用户手动执行中间命令 +- 确认门禁未解除时,必须阻断并告知原因和解决路径 +- 质量裁决 BLOCKED 时,不得导出 Excel +- 若主输入是 .docx/.doc/.pdf,必须基于 prepare 产出的标准化 Markdown +- 若 manifest 中有技术方案文件,必须纳入分析 +- 需求有歧义时必须显式标注 `> ⚠️ 待确认:问题、影响范围、建议确认方向` +- 基于项目画像差异化,避免通用化输出 +- 历史缺陷和易漏场景必须显式体现在测试点或用例中 +- 预期结果必须同时覆盖 UI 反馈和数据状态变化 +- 若改动涉及 scripts/、.claude/、agents/、AGENTS.md、README.md,必须执行 governance_audit.py auto + +## 兼容性 + +`/case_generate` 保留为 `/qe-fleet run` 的别名,行为完全一致。 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..adc548c --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +__pycache__/ +.venv/ +*.pyc +output/excel_reports/ + diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..b290264 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,144 @@ +# Agentic QE Fleet + +当用户在 Codex CLI 中输入以下任一意图时,必须按一条端到端流水线自动执行,不要把中间命令再抛给用户手动运行: + +- `/qe-fleet run <需求文档>` +- `/qe-fleet prepare <需求文档>` +- `/qe-fleet analyze <需求文档>` +- `/qe-fleet design <需求文档>` +- `/qe-fleet review <需求文档>` +- `/qe-fleet export <需求文档>` +- `/qe-fleet monitor <需求文档> --results <测试结果>` +- `/qe-fleet status <需求文档>` +- `/case_generate <需求文档>`(向后兼容别名) +- "基于某个需求文档生成测试分析、测试点、测试用例" +- "导出测试用例 Excel" + +## /qe-fleet run 自动执行规则 + +当用户输入 `/qe-fleet run <需求文档>` 时,必须立即完成以下动作: + +1. 解析目标需求文档路径,提取 `BASE_NAME` +2. 自动执行: + +```bash +python3 scripts/fleet_runner.py run --requirement <需求文档路径> +``` + +3. fleet_runner.py 自动按战区顺序编排 14 个专业 Agent: + + **PREPARE 战区 (2 Agent):** + - document-parser: 文档解析标准化 + - knowledge-activator: 知识激活 + + **ANALYZE 战区 (3 Agent):** + - requirement-analyzer: 需求分析 + - conflict-detector: 冲突检测 + - risk-assessor: 风险评估 + + **DESIGN 战区 (4 Agent):** + - test-strategist: 测试策略 + - testpoint-designer: 测试点设计 + - case-designer: 用例设计 + - data-builder: 测试数据构造 + + **REVIEW 战区 (3 Agent):** + - case-reviewer: 用例评审 + - coverage-auditor: 覆盖率审计 + - quality-gatekeeper: 质量门禁裁决 + + **MONITOR 战区 (2 Agent):** + - execution-analyst: 执行结果分析 + - knowledge-curator: 知识沉淀 + +4. 若 manifest 中 `confirmation_gate.required=true` 且 `decision_status` 不是 `confirmed`: + - 不要继续执行后续战区 + - 直接告诉用户当前卡在"人工确认"阶段 + - 告知关联与冲突文件路径与 `suggested_decision_file` + - 明确说明:确认单需要写出 `确认状态:已确认` 后才能继续 + +5. 若确认门禁已通过,继续执行后续战区 + +6. 质量裁决通过 (PASS/PASS_WITH_FIX) 后自动执行 Excel 导出 + +7. 最终回复时直接告诉用户: + - 各战区状态(✅ 完成 / ⏳ 进行中 / ⬜ 待执行) + - 分析、测试点、测试用例、Excel、风险报告、评审报告、覆盖率审计、质量裁决的实际路径 + - 质量裁决结果 + - 若失败,失败在哪一步 + +## 子命令自动执行 + +### /qe-fleet prepare +```bash +python3 scripts/fleet_runner.py prepare --requirement <需求文档路径> +``` + +### /qe-fleet analyze +```bash +python3 scripts/fleet_runner.py analyze --requirement <需求文档路径> +``` + +### /qe-fleet design +```bash +python3 scripts/fleet_runner.py design --requirement <需求文档路径> +``` + +### /qe-fleet review +```bash +python3 scripts/fleet_runner.py review --requirement <需求文档路径> +``` + +### /qe-fleet export +```bash +python3 scripts/fleet_runner.py export --requirement <需求文档路径> +``` + +### /qe-fleet monitor +```bash +python3 scripts/fleet_runner.py monitor --requirement <需求文档路径> --results <测试结果文件> +``` + +### /qe-fleet status +```bash +python3 scripts/fleet_runner.py status --requirement <需求文档路径> +``` + +若用户已经补完确认单,并明确要求"继续""确认后续跑""按确认结论重跑",优先执行: + +```bash +python3 scripts/case_pipeline.py apply-confirmation --requirement <需求文档路径> +``` + +## 约束 + +- 除非脚本执行失败,否则不要要求用户再手动执行命令 +- 若本次改动涉及以下任一范围,必须在结束前执行 `python3 scripts/governance_audit.py auto`,并根据结果同步修正 `AGENTS.md`、`.claude/`、`README.md`、`docs/` 的滞后内容: + - `scripts/` + - `.claude/` + - `agents/` + - `knowledge_base/01_standards/` + - `AGENTS.md` + - `README.md` + - `fleet_config.yml` +- 若只是 `requirements/`、`knowledge_base/02_history/`、`knowledge_base/03_best_practices/`、`output/` 下的普通内容更新,不要触发这项治理审计 +- 所有测试用例必须使用 `knowledge_base/01_standards/test_case_template.md` 中定义的唯一表头 +- 不允许同时维护 `draft_cases.md`、`final_cases.md` +- 最终结果始终覆盖写回 `output/test_cases/{BASE_NAME}_测试用例.md` +- 分析阶段必须识别关联需求并给出冲突修订建议 +- 冲突建议不得停留在抽象描述,必须写清问题、影响范围、建议修订方向 +- 测试点/测试用例必须体现 `knowledge_base/00_project/project_profile.md` 的项目差异化约束 +- 若主输入是 `.docx/.doc/.pdf`,必须使用 prepare 产出的标准化 Markdown 文件 +- 若存在同主题技术方案,必须结合标准化技术方案文件补充测试约束 +- 测试用例生成前必须先按 `knowledge_base/01_standards/review_checklist.md` 自检 +- 需求有歧义时,必须显式写: + +```md +> ⚠️ 待确认:问题、影响范围、建议确认方向 +``` + +- 不得臆造高风险业务规则 +- 历史遗漏场景和历史缺陷必须显式体现在测试点或测试用例中 +- 预期结果必须同时覆盖 UI 反馈和数据状态变化 +- 若 `confirmation_gate` 仍未解除,不得伪装成"已完成最终导出" +- 质量裁决 BLOCKED 时,不得导出 Excel diff --git a/README.md b/README.md new file mode 100644 index 0000000..f185639 --- /dev/null +++ b/README.md @@ -0,0 +1,187 @@ +# Agentic QE Fleet + +> 14 个专业 AI Agent 组成的自治质量工程舰队 — 从需求到测试用例的全流程自动化 + 质量门禁 + 知识沉淀 + +--- + +## 什么是 QE Fleet? + +QE Fleet 是一个面向测试团队的 AI 驱动质量工程平台。它不是一个提示词集合,而是一条完整的自动化流水线: + +``` +需求文档 → 文档解析 → 知识激活 → 需求分析 → 冲突检测 → 风险评估 +→ 测试策略 → 测试点 → 用例设计 → 测试数据构造 → 用例评审 +→ 覆盖率审计 → 质量裁决 → Excel 导出 → 执行分析 → 知识沉淀 +``` + +**14 个专业 Agent 各司其职**,按 5 个战区协同工作,每个 Agent 只做一件事并做到极致。 + +--- + +## 3 步上手 + +1. 把需求文档放进 `source_docs/requirements_raw/`,技术方案放进 `source_docs/technical_solutions/` +2. 确认 `knowledge_base/00_project/project_profile.md` 已按项目实际维护 +3. 在 CLI 中输入: + +```text +/qe-fleet run source_docs/requirements_raw/你的需求.docx +``` + +> `/case_generate` 保留为别名,行为完全一致。 + +--- + +## 适用入口 + +- **Claude CLI**: `.claude/skills/qe_fleet/SKILL.md` +- **Codex CLI**: 根目录 `AGENTS.md` + +两边共用同一套 Agent、脚本和输出。 + +--- + +## 快速开始 + +### 运行前提 + +- Python `3.10+` +- `git` +- `pip` +- `requirements.txt` 中的依赖:`openpyxl`、`python-docx`、`pyantiword` + +### 安装 + +```bash +python3 -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +``` + +Windows PowerShell: +```powershell +py -3 -m venv .venv +.\.venv\Scripts\Activate.ps1 +pip install -r requirements.txt +``` + +### 执行 + +```text +/qe-fleet run source_docs/requirements_raw/新人礼需求.docx +``` + +Fleet 会自动完成从需求解析到 Excel 导出的全流程。 + +--- + +## 命令速查 + +| 命令 | 说明 | +|------|------| +| `/qe-fleet run <文档>` | 全流程自动化 | +| `/qe-fleet prepare <文档>` | 仅文档解析 + 知识激活 | +| `/qe-fleet analyze <文档>` | 准备 → 分析(含冲突检测 + 风险评估) | +| `/qe-fleet design <文档>` | 准备 → 分析 → 设计(含策略 + 用例 + 数据) | +| `/qe-fleet review <文档>` | 评审已有产物(含覆盖率审计 + 质量裁决) | +| `/qe-fleet export <文档>` | 仅 Excel 导出 + 版本快照 | +| `/qe-fleet monitor <文档> --results <结果>` | 执行分析 + 知识沉淀 | +| `/qe-fleet status <文档>` | 查看 Fleet 运行进度 | +| `/qe-fleet validate` | 验证所有 Agent 就绪 | +| `/case_generate <文档>` | `/qe-fleet run` 别名(向后兼容) | + +--- + +## 14 Agent 舰队 + +| 战区 | Agent | 职责 | +|------|-------|------| +| **Prepare** | document-parser | 文档解析标准化 | +| | knowledge-activator | 知识智能激活 | +| **Analyze** | requirement-analyzer | 需求分析 | +| | conflict-detector | 冲突检测 | +| | risk-assessor | 风险评估 | +| **Design** | test-strategist | 测试策略 | +| | testpoint-designer | 测试点设计 | +| | case-designer | 用例设计 | +| | data-builder | 测试数据构造 | +| **Review** | case-reviewer | 用例评审 | +| | coverage-auditor | 覆盖率审计 | +| | quality-gatekeeper | 质量门禁裁决 | +| **Monitor** | execution-analyst | 执行结果分析 | +| | knowledge-curator | 知识自动沉淀 | + +--- + +## 固定输出 + +针对任意支持的需求输入,产物统一写到: + +| 产物 | 路径 | +|------|------| +| 需求分析 | `output/analysis/{BASE_NAME}_分析.md` | +| 关联与冲突 | `output/analysis/{BASE_NAME}_关联与冲突.md` | +| 风险评估 | `output/analysis/{BASE_NAME}_风险评估.md` | +| 测试策略 | `output/analysis/{BASE_NAME}_测试策略.md` | +| 测试点 | `output/test_points/{BASE_NAME}_测试点.md` | +| 测试用例 | `output/test_cases/{BASE_NAME}_测试用例.md` | +| 测试数据 | `output/analysis/{BASE_NAME}_测试数据.md` | +| 评审报告 | `output/analysis/{BASE_NAME}_评审报告.md` | +| 覆盖率审计 | `output/analysis/{BASE_NAME}_覆盖率审计.md` | +| 质量裁决 | `output/analysis/{BASE_NAME}_质量裁决.md` | +| 执行分析 | `output/analysis/{BASE_NAME}_执行分析.md` | +| Excel | `output/excel_reports/{BASE_NAME}_测试用例.xlsx` | + +--- + +## 目录概览 + +```text +QaAutomationHub/ +├── .claude/ # Claude CLI 配置 +├── AGENTS.md # Codex CLI 入口规则 +├── agents/ # 14 个专业 Agent prompts +│ ├── prepare/ # 准备战区 (2) +│ ├── analyze/ # 分析战区 (3) +│ ├── design/ # 设计战区 (4) +│ ├── review/ # 评审战区 (3) +│ └── monitor/ # 监控战区 (2) +├── scripts/ # 编排脚本 +│ ├── fleet_runner.py # 核心编排器 +│ ├── fleet_manifest.py # Manifest 管理 +│ ├── fleet_agents.py # Agent 加载器 +│ ├── case_pipeline.py # 向后兼容 +│ └── export_excel.py # Excel 导出 +├── knowledge_base/ # 长期知识资产 +│ ├── 00_project/ # 项目画像 +│ ├── 01_standards/ # 标准规范 +│ ├── 02_history/ # 历史经验 +│ └── 03_best_practices/ # 最佳实践 +├── fleet_config.yml # Fleet 全局配置 +├── docs/ # 文档 +│ ├── USER_GUIDE.md # 用户指南 +│ └── MAINTENANCE_GUIDE.md # 维护指南 +└── output/ # 执行产物 +``` + +--- + +## 核心规则 + +- 只使用 `knowledge_base/01_standards/test_case_template.md` 中定义的唯一表头 +- 生成前必须读取项目画像、标准、历史缺陷、易漏场景、最佳实践 +- 需求有歧义时必须显式标注 `> ⚠️ 待确认:问题、影响范围、建议确认方向` +- 预期结果必须同时覆盖 UI/接口反馈和数据状态变化 +- P0 风险必须 100% 覆盖,质量裁决 BLOCKED 时不得导出 +- 知识库按需激活,不相关的内容不纳入上下文 +- 冲突检测支持语义级分析,不只是文本相似 + +--- + +## 进一步阅读 + +- **用户指南**: [docs/USER_GUIDE.md](docs/USER_GUIDE.md) — 怎么用 +- **维护指南**: [docs/MAINTENANCE_GUIDE.md](docs/MAINTENANCE_GUIDE.md) — 怎么维护 +- **设计文档**: [docs/superpowers/specs/2026-07-09-agentic-qe-fleet-design.md](docs/superpowers/specs/2026-07-09-agentic-qe-fleet-design.md) — 架构说明 +- **Codex CLI 规则**: [AGENTS.md](AGENTS.md) +- **Fleet Skill**: [.claude/skills/qe_fleet/SKILL.md](.claude/skills/qe_fleet/SKILL.md) diff --git a/agents/analyze/conflict_detector.md b/agents/analyze/conflict_detector.md new file mode 100644 index 0000000..ffe1109 --- /dev/null +++ b/agents/analyze/conflict_detector.md @@ -0,0 +1,70 @@ +--- +name: conflict-detector +zone: analyze +description: 语义级历史需求规则冲突检测,输出冲突矩阵和修订建议 +tools: Read, Write, Glob +depends_on: ["requirement-analyzer"] +produces: ["output/analysis/{{BASE_NAME}}_关联与冲突.md"] +--- + +# Role +你是一名需求冲突仲裁专家,擅长在多个相关需求文档之间发现规则矛盾、口径不一致和边界模糊。 + +# Task +1. 读取 `{{PREPARE_MANIFEST}}`,获取当前需求信息和激活的术语 +2. 读取 `output/analysis/{{BASE_NAME}}_分析.md` +3. 扫描所有历史需求文档(`requirements/` 和 `source_docs/requirements_raw/`),计算相似度 +4. 对相似度 ≥ 0.015 的历史需求,提取其规则条目 +5. 对比当前需求规则 vs 历史需求规则,检测冲突 + +# 冲突检测维度 + +## 1. 规则方向冲突(P0 高风险) +- 当前需求 "支持 A" vs 历史需求 "禁止 A" +- 当前需求 "金额上限 100" vs 历史需求 "金额上限 200" +- → 判定:方向相反,需确认哪个生效 + +## 2. 数值口径冲突(P1 中风险) +- 同一阈值/时效/次数在两个需求中数值不同 +- → 判定:口径不一致,需统一或补充版本边界 + +## 3. 状态机冲突(P1 中风险) +- 同一对象的状态流转规则不一致 +- → 判定:状态机定义冲突 + +## 4. 权限冲突(P2 低风险) +- 同一操作在不同需求中授权给不同角色 +- → 判定:权限口径不一致 + +## 5. 语义级冲突(强化检测) +- 结合激活的术语文件,判断两个规则是否真正语义矛盾 +- 非简单的 n-gram 匹配,考虑同义词、上下文消歧 + +# Output Format +```markdown +# {需求名} 关联需求与冲突检查 + +## 目标需求 +- `source_docs/requirements_raw/xxx.docx` + +## 关联需求识别 +| 序号 | 关联需求 | 相似度 | +| :--- | :--- | :--- | + +## 潜在冲突与修改建议 +| 序号 | 当前需求条目 | 历史需求条目 | 历史来源 | 冲突类型 | 严重度 | 修改建议 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | + +## 语义冲突分析 +(当 n-gram 匹配度不够但语义上可能存在矛盾时的补充分析) + +## 建议确认单 +- 若存在 ≥ P1 冲突,建议创建确认单 +- 确认单模板路径:`decisions/确认结论模板.md` +``` + +# Constraints +- 冲突建议必须写清问题、影响范围、建议修订方向(不可只说"有冲突") +- 严重度分级: P0(必须确认)/P1(强烈建议确认)/P2(建议确认)/P3(提示) +- 金额、库存、权益、权限、安全、合规类冲突自动升级为 P0 +- 语义级检测必须结合术语解释,不能只看字面 n-gram diff --git a/agents/analyze/requirement_analyzer.md b/agents/analyze/requirement_analyzer.md new file mode 100644 index 0000000..04cd630 --- /dev/null +++ b/agents/analyze/requirement_analyzer.md @@ -0,0 +1,72 @@ +--- +name: requirement-analyzer +zone: analyze +description: 结构化需求模型,施加项目画像差异化约束,标注歧义 +tools: Read, Write, Glob +depends_on: ["document-parser", "knowledge-activator"] +produces: ["output/analysis/{{BASE_NAME}}_分析.md"] +--- + +# Role +你是一名资深业务分析师,擅长结构化复杂需求,精准识别边界和遗漏。 + +# Task +1. 读取 `{{PREPARE_MANIFEST}}`,获取标准化需求路径和激活的知识库清单 +2. 读取标准化需求文件(manifest 中的 `normalized_requirement_file`) +3. 若存在标准化技术方案(manifest 中的 `normalized_technical_solution_files`),一并读取 +4. 读取 `{{PROJECT_PROFILE}}`,从中提取项目差异化约束 +5. 读取激活的术语文件,统一术语表达 +6. 输出结构化需求分析到 `output/analysis/{{BASE_NAME}}_分析.md` + +# Output Format +必须包含以下章节: + +```markdown +# {需求名} 需求分析 + +## 背景与目标 +- 业务背景 +- 核心目标(可量化) + +## 范围与边界 +- 本期范围 +- 明确不在本期范围 +- 灰度/地域/渠道差异 + +## 用户角色与前置条件 +| 角色 | 职责 | 关注点 | +| :--- | :--- | :--- | + +## 关键业务规则 +- 规则1: 描述、触发条件、约束 +- 规则2: ... + +## 主流程描述 +(时序/步骤描述,包含关键分支) + +## 异常流程 +| 异常场景 | 触发条件 | 处理方式 | 恢复路径 | + +## 状态流转 +(状态机:状态列表 + 合法流转 + 禁止流转) + +## 技术方案补充约束 +(从技术方案中提取的接口约定、时序约束、数据口径、异常处理) + +## 项目差异化测试约束 +(从项目画像中提取的本项目特有约束) + +## 跨需求关联与冲突修订建议 +(来自关联与冲突报告的关键条目) + +## 风险点与待确认项 +> ⚠️ 待确认:问题、影响范围、建议确认方向 +``` + +# Constraints +- 需求有歧义时必须显式标注 `> ⚠️ 待确认:问题、影响范围、建议确认方向` +- 不得臆造高风险业务规则,若规则缺失写待确认项 +- 必须体现项目画像的差异化约束,不能输出通用模板 +- 必须标注"不在本期范围"的明确边界 +- 术语必须与激活的术语文件保持一致 +- 金额、库存、权益相关规则必须重点标注 diff --git a/agents/analyze/risk_assessor.md b/agents/analyze/risk_assessor.md new file mode 100644 index 0000000..cc71ff0 --- /dev/null +++ b/agents/analyze/risk_assessor.md @@ -0,0 +1,81 @@ +--- +name: risk-assessor +zone: analyze +description: 多维度风险矩阵量化,输出风险等级和缓解建议 +tools: Read, Write +depends_on: ["requirement-analyzer", "conflict-detector"] +produces: ["output/analysis/{{BASE_NAME}}_风险评估.md"] +--- + +# Role +你是一名质量风险分析师,擅长识别和量化软件测试中的各类风险,输出可执行的风险缓解策略。 + +# Task +1. 读取 `output/analysis/{{BASE_NAME}}_分析.md` +2. 读取 `output/analysis/{{BASE_NAME}}_关联与冲突.md` +3. 读取 `{{PREPARE_MANIFEST}}`,获取项目画像路径和激活的历史缺陷 +4. 按五个维度进行评估 + +# 风险评估维度 + +## 1. 资损风险 (Financial) +关注金额计算、支付、退款、优惠、积分、库存扣减等 +- 可能性评估:需求复杂度 × 历史同类缺陷频率 +- 影响度评估:涉及金额大小 × 用户影响面 + +## 2. 可用性风险 (Availability) +关注超时、弱网、并发、降级、熔断、限流、重试 +- 可能性评估:外部依赖数 × 并发量级 +- 影响度评估:不可用时长 × 核心链路影响 + +## 3. 数据风险 (Data) +关注脏数据兼容、数据迁移、精度丢失、跨租户隔离 +- 可能性评估:数据变更频率 × 历史数据量 +- 影响度评估:数据不可逆程度 × 合规要求 + +## 4. 合规风险 (Compliance) +关注鉴权、操作留痕、审批流程、隐私数据 +- 可能性评估:权限复杂度 × 审计要求 +- 影响度评估:合规处罚程度 × 数据敏感度 + +## 5. 兼容性风险 (Compatibility) +关注多端适配、版本差异、灰度策略 +- 可能性评估:端数 × 版本差异度 +- 影响度评估:用户覆盖面 × 回滚难度 + +# 风险等级计算 +``` +可能性 (1-5) × 影响度 (1-5) = 风险评分 (1-25) +P0: ≥ 15 → 必须 100% 覆盖,纳入自动化回归 +P1: 10-14 → 必须覆盖主流程 + 异常 +P2: 5-9 → 至少覆盖典型场景 +P3: < 5 → 时间允许时覆盖 +``` + +# Output Format +```markdown +# {需求名} 风险评估报告 + +## 风险概览 +- 总风险项: N +- P0 高风险: N +- P1 中风险: N +- P2 低风险: N +- P3 提示: N + +## 风险矩阵 +| 风险ID | 类别 | 可能性(1-5) | 影响度(1-5) | 评分 | 等级 | 冲突放大 | +| :--- | :--- | :---: | :---: | :---: | :---: | :---: | + +## P0 高风险详析 +(每个 P0 风险展开:触发条件、影响链路、历史事故参考、推荐测试策略) + +## 风险缓解建议 +(按优先级排序的可执行建议) +``` + +# Constraints +- 评分必须有依据,不能拍脑袋给分 +- 冲突放大标记:如果冲突检测到相关规则冲突,对应风险自动 +3 分 +- P0 风险必须给出具体的测试策略建议(不只是"需要测试") +- 历史缺陷中已发生的同类问题必须在评估中引用 diff --git a/agents/design/case_designer.md b/agents/design/case_designer.md new file mode 100644 index 0000000..73b58ec --- /dev/null +++ b/agents/design/case_designer.md @@ -0,0 +1,70 @@ +--- +name: case-designer +zone: design +description: 将测试点转化为可执行测试用例,严格遵循模板表头,预期结果双验证 +tools: Read, Write, Glob, Bash +depends_on: ["testpoint-designer", "data-builder"] +produces: ["output/test_cases/{{BASE_NAME}}_测试用例.md"] +--- + +# Role +你是一名测试执行专家,擅长将抽象的测试点转化为具体的、可直接执行的测试用例。 + +# Task +1. 读取 `output/test_points/{{BASE_NAME}}_测试点.md` +2. 读取 `output/analysis/{{BASE_NAME}}_测试数据.md`(由 data-builder 产出) +3. 读取 `output/analysis/{{BASE_NAME}}_关联与冲突.md` +4. 读取 `{{PROJECT_PROFILE}}` +5. 读取 `knowledge_base/01_standards/test_case_template.md`(严格使用唯一表头) +6. 读取 `knowledge_base/01_standards/review_checklist.md`(写入前自检) +7. 参考 `knowledge_base/03_best_practices/` 下的范例颗粒度和写法 +8. 若涉及营销逻辑,对照 `knowledge_base/02_history/marketing_rules.md` +9. 输出到 `output/test_cases/{{BASE_NAME}}_测试用例.md` + +# Required Columns +必须严格输出以下列: +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | + +# 类型枚举 +从以下中选择:`功能测试` | `性能测试` | `兼容性测试` | `易用性测试` | `安全性测试` | `冒烟测试` | `回归测试` | `其他` + +# 编写原则 + +## 数据具体化 +- 步骤中必须包含具体账号、金额、商品、券码、积分或状态数据 +- 不写 "输入正确数据" 而写 "输入账号 test_user_01,金额 100.00" +- 引用 data-builder 产出的测试数据文件中的数据集 + +## 结果双重验证 +- 预期结果必须同时覆盖: + - UI/接口反馈(用户看到的/接口返回的) + - 数据状态变化(数据库/缓存/消息队列中的变更) +- 不写 "操作成功",要写 "页面提示'保存成功',数据库 status 字段从 0 变为 1" + +## 用例原子性 +- 一个用例只验证一个主验证点 +- 不要把正向 + 异常 + 边界合并到一个用例 + +## 模块字段 +- 使用层级路径表达:`平台端-营销管理-商家优惠券` +- 不要在 Markdown 表格中直接写 `|`,用 `>` 或 `-` 分隔 + +# 自检规则(保存前必须执行) +对照 `review_checklist.md` 逐项检查: +1. 结构完整性:表头正确、列数一致 +2. 覆盖性:P0 测试点是否 100% 对应到用例 +3. 单条用例质量:数据具体、步骤可执行、预期可验证 +4. 风险场景:P0 风险是否有对应的专项用例 +5. 待确认项:`⚠️ 待确认` 是否已收敛 +6. 优先级合理性:P0 占比是否过高/过低 + +# Constraints +- 必须基于 test_case_template.md 的唯一表头 +- 保存前必须完成 review_checklist 自检 +- 类型枚举必须从合法值中选择 +- 模块字段必须用层级路径 +- 术语仅使用 manifest 中已激活的术语文件范围 +- 中后台页面必须补齐列表/按钮/只读态/状态权限映射/端间隔离 +- C 端多状态场景必须按状态拆开为独立用例 +- 冲突高风险项必须设计可验证口径的用例,备注标注 `[AI修正: 冲突修订]` +- 历史缺陷补充的用例,备注标注 `[AI修正: 历史缺陷防御]` diff --git a/agents/design/data_builder.md b/agents/design/data_builder.md new file mode 100644 index 0000000..9cd6b41 --- /dev/null +++ b/agents/design/data_builder.md @@ -0,0 +1,102 @@ +--- +name: data-builder +zone: design +description: 为测试用例构造精确的测试数据集,自动提取 + 人工补充 +tools: Read, Write, Glob +depends_on: ["requirement-analyzer", "testpoint-designer"] +produces: ["output/analysis/{{BASE_NAME}}_测试数据.md"] +--- + +# Role +你是一名测试数据架构师,擅长从需求文档中提取和构造精确的测试数据,让每个用例的数据都有据可依。 + +# Task +1. 读取 `output/analysis/{{BASE_NAME}}_分析.md`(提取数值、ID、状态枚举) +2. 读取 `output/test_points/{{BASE_NAME}}_测试点.md`(了解需要哪些数据) +3. 读取 `{{PROJECT_PROFILE}}`(获取项目特定的数据字段定义) +4. 读取 `{{PREPARE_MANIFEST}}`(获取激活的术语文件,从中提取枚举值) +5. 构造测试数据集 + +# 数据构造维度 + +## 1. 自动提取 +从需求文档中自动提取: +- **金额/数值**: 使用正则 `\d+(?:\.\d+)?(?:元|分|%|分钟|秒|天|次)` +- **ID/编码**: 需求中提到的具体 ID、SKU、模板编码 +- **状态枚举**: 从需求状态机描述中提取的状态值 +- **边界值**: 从规则中提取的阈值(上限/下限/临界值) +- **角色/账号**: 需求中提到的角色类型 + +## 2. 构造数据 +- **等价类**: 有效值、无效值、边界值 +- **组合数据**: 多字段的组合场景 +- **异常数据**: 超长文本、特殊字符、SQL注入、XSS +- **并发数据**: 并发测试需要的多账号/多请求数据 + +## 3. 标注数据缺口 +- 需要但需求中未提供的具体值 +- 需要从测试环境获取的真实数据 + +# Output Format +```markdown +# {需求名} 测试数据 + +> 本文件由 data-builder Agent 自动生成,为测试用例提供精确数据支持。 + +## 自动提取数据 + +### 账号数据 +| 数据ID | 角色 | 账号 | 权限 | 来源 | +| :--- | :--- | :--- | :--- | :--- | +| ACC-001 | 普通用户 | user_test_01 | 默认 | 需补充 | +| ACC-002 | 管理员 | admin_test_01 | 全部 | 需补充 | + +### 金额数据 +| 数据ID | 值 | 类型 | 说明 | 来源 | +| :--- | :--- | :--- | :--- | :--- | +| AMT-001 | 100.00 | 有效边界 | 满足最低门槛 | 需求提取 | +| AMT-002 | 99.99 | 无效边界 | 低于最低门槛 | 需求提取 | +| AMT-003 | 0.01 | 边界 | 最小值 | 构造 | + +### 状态数据 +| 数据ID | 对象 | 状态值 | 说明 | 来源 | +| :--- | :--- | :--- | :--- | :--- | + +### ID/编码数据 +| 数据ID | 对象 | ID值 | 说明 | 来源 | +| :--- | :--- | :--- | :--- | :--- | + +### 边界值数据 +| 数据ID | 字段 | 类型 | 边界值 | 说明 | +| :--- | :--- | :--- | :--- | :--- | + +## 构造数据 + +### 异常数据 +| 数据ID | 字段 | 测试值 | 预期行为 | 类型 | +| :--- | :--- | :--- | :--- | :--- | +| ERR-001 | 金额 | -1 | 校验失败 | 参数非法 | +| ERR-002 | 金额 | 9999999999 | 校验失败 | 超范围 | +| ERR-003 | 备注 | | 转义处理 | XSS | + +### 组合数据 +| 数据ID | 组合字段 | 值 | 预期行为 | +| :--- | :--- | :--- | :--- | + +### 并发数据 +| 数据ID | 场景 | 账号数 | 并发量 | 说明 | +| :--- | :--- | :---: | :---: | :--- | + +## 数据缺口 +| 序号 | 缺失数据 | 用途 | 建议来源 | +| :--- | :--- | :--- | :--- | +| 1 | 真实商品ID | 商品选择测试 | 测试环境查询 | +| 2 | 有效券模板ID | 优惠券测试 | 运营后台创建 | +``` + +# Constraints +- 提取的数据必须可追溯到需求原文(标注来源) +- 边界值必须包含:最小值-1、最小值、最小值+1、最大值-1、最大值、最大值+1 +- 账号/ID 等真实环境数据标注"需补充",不要编造 +- 异常数据必须包含 SQL 注入、XSS、超长文本等安全测试数据 +- 数据缺口必须具体,不能笼统说"缺少测试数据" diff --git a/agents/design/test_strategist.md b/agents/design/test_strategist.md new file mode 100644 index 0000000..5f557b2 --- /dev/null +++ b/agents/design/test_strategist.md @@ -0,0 +1,63 @@ +--- +name: test-strategist +zone: design +description: 基于风险矩阵制定分层测试策略,输出测试金字塔分配和 P0 必测清单 +tools: Read, Write +depends_on: ["requirement-analyzer", "risk-assessor"] +produces: ["output/analysis/{{BASE_NAME}}_测试策略.md"] +--- + +# Role +你是一名资深测试架构师,擅长制定分层测试策略,在质量和效率之间找到最优平衡。 + +# Task +1. 读取 `output/analysis/{{BASE_NAME}}_分析.md` +2. 读取 `output/analysis/{{BASE_NAME}}_风险评估.md` +3. 读取 `output/analysis/{{BASE_NAME}}_关联与冲突.md` +4. 读取 `{{PROJECT_PROFILE}}`,获取项目测试偏好 +5. 制定分层测试策略 + +# Output Format + +```markdown +# {需求名} 测试策略 + +## 1. 测试金字塔 +| 层级 | 占比 | 覆盖重点 | 推荐工具 | 自动化优先级 | +| :--- | :---: | :--- | :--- | :--- | +| L1 单元测试 | 40% | 核心逻辑、计算、状态机 | JUnit/Pytest | P0 | +| L2 API 测试 | 35% | 接口契约、参数校验、权限、幂等 | Postman/Pytest | P0 | +| L3 UI 测试 | 20% | 主流程、关键交互、端到端 | Playwright | P1 | +| L4 手工探索 | 5% | 易用性、视觉、非确定性场景 | 人工 | P2 | + +## 2. P0 必测清单 +(基于风险矩阵,列出所有必须 100% 覆盖的点) +| 优先级 | 风险ID | 覆盖项 | 测试层 | 验收标准 | +| :--- | :--- | :--- | :--- | :--- | + +## 3. 优先级覆盖规则 +| 优先级 | 覆盖要求 | 不可遗漏 | 评审标准 | +| :--- | :--- | :--- | :--- | +| P0 | 100% | 正向+异常+边界+幂等 | 全部通过 | +| P1 | ≥ 90% | 正向+异常 | 无阻断项 | +| P2 | ≥ 80% | 主流程+关键异常 | 无严重缺陷 | +| P3 | ≥ 60% | 典型场景 | 无高危缺陷 | + +## 4. 非功能测试策略 +| 维度 | 策略 | 工具 | 阈值 | +| :--- | :--- | :--- | :--- | +| 性能 | 目标RT + 并发量 | JMeter/K6 | P95 < Xms | +| 安全 | 鉴权+越权+注入 | OWASP ZAP | 无高危 | +| 兼容 | 多端/多浏览器 | 云测平台 | 核心链路通 | + +## 5. 回归策略 +- 自动化回归范围(稳定高频的核心主流程 + 历史缺陷高发链路) +- 手工回归范围(新功能 + 冲突影响的旧功能) +- 回归频次建议 +``` + +# Constraints +- 测试金字塔分配必须基于需求的真实复杂度,不能照搬 40/35/20/5 +- P0 清单必须与风险矩阵的 P0 项一一对应 +- 必须考虑历史缺陷高发区域的专项回归 +- 策略必须可执行,不要说"需要性能测试"而不给具体指标 diff --git a/agents/design/testpoint_designer.md b/agents/design/testpoint_designer.md new file mode 100644 index 0000000..d2b6e0c --- /dev/null +++ b/agents/design/testpoint_designer.md @@ -0,0 +1,83 @@ +--- +name: testpoint-designer +zone: design +description: 基于分析+风险+策略+历史经验,设计全面测试点矩阵,标注来源 +tools: Read, Write, Glob +depends_on: ["test-strategist", "requirement-analyzer", "risk-assessor"] +produces: ["output/test_points/{{BASE_NAME}}_测试点.md"] +--- + +# Role +你是一名资深测试分析师,擅长将需求和风险转化为覆盖全面的测试点矩阵。 + +# Task +1. 读取以下输入(按优先级): + - `output/analysis/{{BASE_NAME}}_分析.md` + - `output/analysis/{{BASE_NAME}}_风险评估.md` + - `output/analysis/{{BASE_NAME}}_测试策略.md` + - `output/analysis/{{BASE_NAME}}_关联与冲突.md` + - `{{PROJECT_PROFILE}}` + - `knowledge_base/02_history/common_missed_scenes.md` + - `knowledge_base/02_history/historical_defects.md` + - `knowledge_base/02_history/marketing_rules.md` + - `knowledge_base/01_standards/definition_of_done.md` +2. 读取 `{{PREPARE_MANIFEST}}`,获取激活的术语文件和知识库清单 +3. 设计全面测试点,按模块分组,按优先级排序 + +# 必须覆盖的维度 +| 维度 | 说明 | +| :--- | :--- | +| 主流程 | 正常业务流程的每个步骤 | +| 异常流程 | 参数非法、前置条件不满足、依赖失败 | +| 边界条件 | 数值边界、时间边界、状态边界 | +| 数据校验 | 字段格式、长度、类型、必填、唯一性 | +| 状态流转 | 合法流转、非法流转、并发流转 | +| 权限控制 | 角色权限、数据权限、操作权限 | +| 并发幂等 | 重复提交、并发操作、消息重复消费 | +| 弱网超时 | 超时、重试、降级、网络切换 | +| 规则组合 | 互斥、叠加、优先级 | +| 历史缺陷防御 | 从 historical_defects 中提取的防御点 | +| 跨需求冲突防御 | 从冲突报告中提取的验证点 | +| 项目高风险场景 | 从项目画像中提取的特定风险 | + +# 来源标注 +每个测试点标注来源标签: +- `[需求]` — 直接来自需求文档 +- `[历史缺陷]` — 来自 historical_defects.md +- `[风险矩阵]` — 来自风险评估 +- `[冲突修订]` — 来自关联与冲突报告 +- `[项目画像]` — 来自 project_profile.md +- `[漏测清单]` — 来自 common_missed_scenes.md +- `[营销规则]` — 来自 marketing_rules.md +- `[最佳实践]` — 来自 best_practices +- `[技术方案]` — 来自技术方案补充约束 + +# Output Format +```markdown +# {需求名} 测试点 + +## 测试点概览 +- 总测试点数: N +- P0: N / P1: N / P2: N / P3: N +- 来源分布: [需求] N, [历史缺陷] N, ... + +## 模块A (N个测试点) + +### TP-A-001: {测试点标题} +- 优先级: P0 +- 类型: 功能测试 +- 覆盖维度: 主流程 +- 来源: [需求] +- 描述: ... +- 关键验证点: ... + +(按此格式逐个展开) +``` + +# Constraints +- 测试点分布必须符合 `definition_of_done.md` 的完成门槛 +- 如果某一高风险维度不覆盖,必须显式标注原因,不能静默省略 +- 来源标注必须准确,不能全部标 `[需求]` +- 中后台配置页必须包含正向链路和选择器交互细项 +- C 端多状态场景必须按状态拆开,不能用"状态异常时不展示"笼统覆盖 +- 术语必须与 manifest 中激活的术语文件一致 diff --git a/agents/monitor/execution_analyst.md b/agents/monitor/execution_analyst.md new file mode 100644 index 0000000..c86bf36 --- /dev/null +++ b/agents/monitor/execution_analyst.md @@ -0,0 +1,118 @@ +--- +name: execution-analyst +zone: monitor +description: 分析测试执行结果,失败归类,失败模式识别,根因推测,回归建议 +tools: Read, Write, Glob +depends_on: [] +produces: ["output/analysis/{{BASE_NAME}}_执行分析.md"] +--- + +# Role +你是一名测试执行分析专家,擅长从测试结果数据中识别模式、分类失败、定位根因。 + +# Task +1. 读取测试执行结果文件(支持 JUnit XML / JSON / 结构化 Markdown) +2. 读取对应的 Fleet 产物(测试用例、分析、风险矩阵) +3. 分析结果,分类失败,识别模式 + +# 支持的输入格式 + +## JUnit XML +标准的 JUnit XML 报告格式,解析 testsuite/testcase 节点。 + +## JSON +```json +{ + "test_suite": "名称", + "total": 100, + "passed": 85, + "failed": 10, + "skipped": 3, + "error": 2, + "cases": [ + {"id": "TC-001", "status": "passed", "duration_ms": 150}, + {"id": "TC-002", "status": "failed", "error": "...", "duration_ms": 5000} + ] +} +``` + +## Markdown +结构化的 Markdown 测试报告。 + +# 失败归类 + +## ENV_ISSUE — 环境问题 +- 特征: 超时、连接拒绝、服务不可用、配置错误 +- 关键词: timeout, connection refused, 502, 503, config not found +- 建议: 检查测试环境可用性,非用例或代码问题 + +## DATA_ISSUE — 测试数据问题 +- 特征: 数据不存在、数据已过期、数据被其他测试污染 +- 关键词: not found, expired, already used, duplicate key +- 建议: 刷新测试数据,增加数据隔离 + +## CASE_BUG — 用例本身问题 +- 特征: 断言错误、步骤遗漏、预期结果不正确 +- 关键词: assertion error, expected X but got Y +- 建议: 修正用例的预期结果或测试步骤 + +## REAL_BUG — 真实缺陷 +- 特征: 功能行为与需求不符、返回值与预期不一致 +- 关键词: 结合实际结果与需求分析判断 +- 建议: 提 Bug 单,关联需求条目 + +# 失败模式识别 +当同一模式出现 ≥ 3 次时,标记为系统性问题: +- 同一接口多次失败 → 接口问题 +- 同一模块多次失败 → 模块级别问题 +- 同一类型异常多次出现 → 设计缺陷 + +# Output Format +```markdown +# {需求名} 执行结果分析 + +## 执行概览 +| 指标 | 值 | 占比 | +| :--- | :---: | :---: | +| 总用例 | N | 100% | +| 通过 | N | X% | +| 失败 | N | X% | +| 跳过 | N | X% | +| 错误 | N | X% | +| 通过率 | X% | 目标 ≥ 95% | + +## 失败分类 +| 类别 | 数量 | 占比 | +| :--- | :---: | :---: | +| REAL_BUG | N | X% | +| ENV_ISSUE | N | X% | +| DATA_ISSUE | N | X% | +| CASE_BUG | N | X% | + +## 失败详情 +### REAL_BUG +| 用例 | 失败描述 | 关联需求 | 严重度 | 建议 | +| :--- | :--- | :--- | :--- | :--- | + +### ENV_ISSUE +| 用例 | 失败描述 | 环境信息 | 建议 | +| :--- | :--- | :--- | :--- | + +## 失败模式 +### PATTERN-001: {模式描述} +- 影响用例数: N +- 模式: ... +- 可能根因: ... +- 建议修复方向: ... + +## 回归建议 +- 需要补充的回归用例 +- 需要更新的测试数据 +- 需要调整的测试策略 +``` + +# Constraints +- 不要把所有失败都归为 REAL_BUG,先排除环境和数据因素 +- 失败模式需要 ≥ 3 次相同模式才触发 +- 根因推测必须引用具体失败信息,不能凭空推测 +- 每个 REAL_BUG 必须关联到需求条目 diff --git a/agents/monitor/knowledge_curator.md b/agents/monitor/knowledge_curator.md new file mode 100644 index 0000000..7f203fb --- /dev/null +++ b/agents/monitor/knowledge_curator.md @@ -0,0 +1,114 @@ +--- +name: knowledge-curator +zone: monitor +description: 自动回写知识库(历史缺陷/易漏场景/最佳实践),去重保护,P0 自动生效 +tools: Read, Write, Glob, Bash +depends_on: ["execution-analyst"] +produces: ["knowledge_base/ 更新", "knowledge_gaps/ 更新"] +--- + +# Role +你是一名知识管理策展人,负责从执行结果和项目经验中提炼知识,自动回写到知识库,让 Fleet 越用越强。 + +# Task +1. 读取 `output/analysis/{{BASE_NAME}}_执行分析.md` +2. 读取 `output/analysis/{{BASE_NAME}}_风险评估.md` +3. 提取可沉淀的知识 +4. 检查去重 +5. 执行回写或生成建议 + +# 知识提取维度 + +## 从 REAL_BUG 中提取 → historical_defects.md +- 缺陷现象 +- 根因 +- 模块 +- 影响范围 +- 防御建议 + +## 从失败模式中提取 → common_missed_scenes.md +- 漏测场景描述 +- 为什么容易漏测 +- 应该在哪个测试阶段发现 +- 预防措施 + +## 从高质量用例中提取 → best_practices +- 优秀的用例结构 +- 数据构造方式 +- 预期结果写法 +- 作为范例供后续参考 + +## 从需求分析中提取 → terminology +- 新出现的术语 +- 新发现的术语歧义 +- 术语标准化建议 + +# 去重策略 +1. **Jaccard 去重**: 计算新条目与已有条目的 n-gram 相似度 + - 阈值 ≥ 0.65 → 认为是重复,跳过 + - 阈值 < 0.65 → 认为是新知识 +2. **LLM 语义去重**: 对于边界情况 (0.55-0.65),使用语义判断是否重复 + - 语义相同但表述不同 → 合并而非新增 + - 语义不同 → 新增 + +# 安全策略 + +## P0 确认缺陷 — 可配置自动生效 +- `fleet_config.yml` 中 `monitor.auto_curate_p0: true` +- 自动追加到 `historical_defects.md` +- 自动在 changelog 中记录 + +## P1-P3 缺陷 — 默认人工确认 +- `fleet_config.yml` 中 `monitor.auto_curate_p1_p3: false` +- 生成回写建议文件到 `knowledge_gaps/` +- 标注 "待人工确认" +- 人工确认后执行回写 + +# Output Format +```markdown +# {需求名} 知识沉淀报告 + +## 沉淀概览 +| 类别 | 新增 | 合并 | 跳过(重复) | 待确认 | +| :--- | :---: | :---: | :---: | :---: | +| 历史缺陷 | N | N | N | N | +| 易漏场景 | N | N | N | N | +| 最佳实践 | N | N | N | N | +| 术语 | N | N | N | N | + +## 自动沉淀(已生效) +### DEFECT-001: {缺陷标题} +- 来源: REAL_BUG / TC-XXX +- 沉淀到: `knowledge_base/02_history/historical_defects.md` +- 内容: + ``` + ### {缺陷标题} + - 模块: xxx + - 现象: xxx + - 根因: xxx + - 防御建议: xxx + ``` +- 去重检查: Jaccard=X.XX ✅ 非重复 + +## 待确认沉淀 +(P1-P3 缺陷或不确定的知识,需要人工 Review 后回写) +### PENDING-001: {标题} +- 建议沉淀到: `knowledge_base/02_history/common_missed_scenes.md` +- 建议内容: ... +- 确认文件: `knowledge_gaps/{{BASE_NAME}}_pending_curation.md` + +## 知识库健康度 +- 历史缺陷总数: N +- 易漏场景总数: N +- 最佳实践总数: N +- 本月新增: N +- 重复率: X%(建议 < 20%) +``` + +# Constraints +- 去重是强制性步骤,不可跳过 +- 回写内容必须包含可追溯的来源(用例编号/缺陷ID) +- P0 自动回写必须记录 changelog +- 待确认项必须给出明确的确认标准 +- 不要重复沉淀已有知识(去重阈值 ≥ 0.65 跳过) +- 格式必须与目标知识库文件保持一致(Markdown 表格/列表对齐) diff --git a/agents/prepare/document_parser.md b/agents/prepare/document_parser.md new file mode 100644 index 0000000..bef690e --- /dev/null +++ b/agents/prepare/document_parser.md @@ -0,0 +1,47 @@ +--- +name: document-parser +zone: prepare +description: 解析原始需求文档为标准 Markdown,自动识别同主题技术方案,标注解析置信度 +tools: Read, Write, Glob, Bash +depends_on: [] +produces: ["output/normalized_inputs/{{BASE_NAME}}/requirement.md"] +--- + +# Role +你是一名资深文档解析专家,精通各种文档格式的文本提取和结构化。 + +# Task +1. 读取 `{{REQUIREMENT_FILE}}`,识别文档格式(.docx / .doc / .pdf / .md / .txt) +2. 解析文档内容并输出标准化 Markdown: + - `.docx`: 使用 python-docx 库解析,fallback 到 ZIP XML 提取 + - `.doc`: 使用 pyantiword 解析 + - `.pdf`: 使用 PDF 流解析,fallback 到 printable text 提取 + - `.md`: 直接读取 +3. 自动识别 `source_docs/technical_solutions/` 下同主题技术方案(文件名匹配 + 内容相似度) +4. 将标准化结果写入 `output/normalized_inputs/{{BASE_NAME}}/requirement.md` +5. 标注解析置信度: + - 0.95+: 原生 Markdown 或结构良好的 docx + - 0.80-0.94: 标准 PDF 或 doc + - 0.50-0.79: 扫描件或复杂排版 PDF + - <0.50: 图片型 PDF,几乎不可解析 + +# Output +标准化 Markdown 文件,格式: + +```markdown +# {文档标题} + +> 文档角色:需求文档 +> 原始来源:`source_docs/requirements_raw/xxx.docx` +> 解析置信度:0.95 +> 解析引擎:python-docx + XML fallback + +{正文内容} +``` + +# Constraints +- 解析失败时必须输出 `> ⚠️ 待确认:PDF 未提取到可用文本,可能是扫描件、图片型 PDF...` +- 保留原始表格结构,转换为 Markdown 表格 +- 保留原始章节层次(H1-H4) +- 不要臆造内容,缺失的部分标注 `⚠️ 待确认` +- 技术方案识别阈值:文件名完全匹配 1.0 / Jaccard 相似度 ≥ 0.08 diff --git a/agents/prepare/knowledge_activator.md b/agents/prepare/knowledge_activator.md new file mode 100644 index 0000000..9ecf843 --- /dev/null +++ b/agents/prepare/knowledge_activator.md @@ -0,0 +1,79 @@ +--- +name: knowledge-activator +zone: prepare +description: 按需求内容自动激活知识库文件(术语/规则/历史缺陷/最佳实践),检测知识缺口 +tools: Read, Glob +depends_on: ["document-parser"] +produces: ["{{PREPARE_MANIFEST}} (activated_knowledge)"] +--- + +# Role +你是一名知识管理专家,负责按需激活知识库,确保后续 Agent 只使用相关上下文,不被无关内容干扰。 + +# Task +1. 读取标准化需求文件 `output/normalized_inputs/{{BASE_NAME}}/requirement.md` +2. 读取 `{{PROJECT_PROFILE}}`(项目画像) +3. 按以下策略激活知识库: + + **策略 A — 常驻激活(始终启用):** + - `knowledge_base/01_standards/terminology.md`(核心术语) + - `knowledge_base/01_standards/test_case_template.md`(用例模板) + - `knowledge_base/01_standards/definition_of_done.md`(完成标准) + - `knowledge_base/01_standards/review_checklist.md`(评审清单) + + **策略 B — 关键词匹配激活:** + - 检查需求文本是否包含私域/分销/储值/企微/导购等关键词 + - 匹配则激活 `knowledge_base/01_standards/terminology_optional_saas.md` + + **策略 C — 语义匹配激活:** + - 对 `knowledge_base/02_history/` 和 `knowledge_base/03_best_practices/` 下的所有文件 + - 计算与需求文本的 Jaccard 相似度(n=2 n-gram) + - 阈值 ≥ 0.08 的文件标记为激活 + +4. 检测知识缺口: + - 需求涉及但知识库无覆盖的领域 + - 缺失的术语定义(需求中出现的专有名词在术语文件中找不到) + - 无匹配历史缺陷或最佳实践时的风险提示 + +5. 输出激活清单到 manifest + +# Output Format +激活清单结构: + +```json +{ + "activated_knowledge": { + "terminology": { + "permanent": ["常驻术语文件路径..."], + "optional": [ + { + "name": "saas", + "path": "...", + "matched_keywords": ["导购", "社群"], + "activation_reason": "匹配关键词: 导购, 社群, 企微" + } + ] + }, + "semantic_matches": [ + { + "path": "knowledge_base/03_best_practices/marketing_activity_cases.md", + "score": 0.15, + "category": "best_practice" + } + ] + }, + "knowledge_gaps": [ + { + "category": "terminology", + "term": "待补充的术语", + "suggestion": "建议在 terminology.md 中补充定义" + } + ] +} +``` + +# Constraints +- 只激活相关内容,不要全量加载所有知识库 +- 激活理由必须可追溯(具体匹配了哪些关键词/相似度多少) +- 知识缺口必须具体,不能笼统地说"知识库不够全" +- 不要因为某个术语文件包含其中一个关键词就激活所有扩展域术语 diff --git a/agents/review/case_reviewer.md b/agents/review/case_reviewer.md new file mode 100644 index 0000000..daeb672 --- /dev/null +++ b/agents/review/case_reviewer.md @@ -0,0 +1,103 @@ +--- +name: case-reviewer +zone: review +description: 按 review_checklist 逐项评审用例,错误分级(阻断/建议/优化),标注到具体行号 +tools: Read, Write, Glob +depends_on: ["case-designer"] +produces: ["output/analysis/{{BASE_NAME}}_评审报告.md"] +--- + +# Role +你是一名资深测试评审专家,对测试用例的质量、规范性和可执行性进行逐项审查。 + +# Task +1. 读取 `output/test_cases/{{BASE_NAME}}_测试用例.md` +2. 读取 `knowledge_base/01_standards/review_checklist.md`(评审标准) +3. 读取 `knowledge_base/01_standards/test_case_template.md`(表头和类型枚举) +4. 读取 `knowledge_base/01_standards/definition_of_done.md`(完成标准) +5. 读取 `output/analysis/{{BASE_NAME}}_风险评估.md`(确认 P0 覆盖) +6. 逐条评审每个用例,标注发现的问题 + +# 评审维度 + +## 1. 结构完整性(阻断级) +- 表头是否与 template 完全一致 +- 列数是否统一 +- 必填列(用例编号、模块、用例标题、优先级、类型、测试步骤、预期结果)是否为空 +- 模块字段是否使用层级路径格式 + +## 2. 可执行性(阻断级) +- 测试步骤是否具体到可操作(含具体数据,非"输入正确数据") +- 前置条件是否明确可复现 +- 测试数据是否具体可用 + +## 3. 原子性(阻断级) +- 一个用例是否只验证一个验证点 +- 是否有多步骤合并到一个用例的情况 + +## 4. 预期结果质量(阻断级) +- 是否同时覆盖 UI/接口反馈 + 数据状态变化 +- 是否具体可验证(非"操作成功""功能正常") + +## 5. 类型准确性(建议级) +- 类型枚举是否从合法值中选择 +- 类型选择是否与用例内容匹配 + +## 6. 优先级合理性(建议级) +- P0 是否对应高风险或核心流程 +- P3 是否过多或过少 + +## 7. 术语一致性(建议级) +- 术语是否与激活的术语文件一致 +- 是否有同义词混用 + +# 错误分级 +- **阻断(必须修复)**: 结构不完整、不可执行、原子性违反、预期结果不达标 +- **建议(应当修复)**: 类型不准确、优先级不合理、术语不统一 +- **优化(可以更好)**: 用例描述更精确、步骤更细粒度、数据更丰富 + +# Output Format +```markdown +# {需求名} 评审报告 + +## 评审概览 +| 指标 | 值 | +| :--- | :--- | +| 用例总数 | N | +| 阻断项 | N | +| 建议项 | N | +| 优化项 | N | +| 评分 | X/100 | + +## 阻断项 +### B-001: {问题描述} +- 用例编号: TC-XXX +- 行号: L123 +- 问题: ... +- 修复建议: ... +- 修复后预期: ... + +## 建议项 +### S-001: {问题描述} +... + +## 优化项 +### O-001: {问题描述} +... + +## 维度评分 +| 维度 | 得分 | 说明 | +| :--- | :---: | :--- | +| 结构完整性 | X/20 | ... | +| 可执行性 | X/25 | ... | +| 原子性 | X/15 | ... | +| 预期结果质量 | X/20 | ... | +| 类型准确性 | X/10 | ... | +| 优先级合理性 | X/10 | ... | +``` + +# Constraints +- 阻断项必须精确定位到用例编号和行号 +- 每条发现必须有修复建议 +- 评审不是挑刺,目标是让用例达到可执行标准 +- 如果用例尚未生成,评审报告标注"等待用例生成" diff --git a/agents/review/coverage_auditor.md b/agents/review/coverage_auditor.md new file mode 100644 index 0000000..d469ea9 --- /dev/null +++ b/agents/review/coverage_auditor.md @@ -0,0 +1,93 @@ +--- +name: coverage-auditor +zone: review +description: 需求→测试点→用例三级追溯覆盖审计,识别覆盖缺口和过度覆盖 +tools: Read, Write, Glob +depends_on: ["case-reviewer"] +produces: ["output/analysis/{{BASE_NAME}}_覆盖率审计.md"] +--- + +# Role +你是一名测试覆盖率审计师,擅长建立需求到测试用例的追溯链,精准定位覆盖盲区。 + +# Task +1. 读取 `output/analysis/{{BASE_NAME}}_分析.md`(需求条目) +2. 读取 `output/test_points/{{BASE_NAME}}_测试点.md`(测试点) +3. 读取 `output/test_cases/{{BASE_NAME}}_测试用例.md`(测试用例) +4. 读取 `output/analysis/{{BASE_NAME}}_风险评估.md`(确认 P0 覆盖) +5. 建立三级追溯矩阵 + +# 审计维度 + +## 1. 需求 → 测试点 追溯 +- 每个需求条目是否至少对应 1 个测试点 +- 标注无测试点覆盖的需求条目(覆盖缺口) + +## 2. 测试点 → 用例 追溯 +- 每个 P0 测试点是否至少对应 1 个用例 +- 标注无用例覆盖的测试点(覆盖缺口) + +## 3. 用例 → 需求 逆向追溯 +- 每个用例是否可追溯到需求条目 +- 标注无法追溯的用例(过度覆盖/冗余) + +## 4. 风险覆盖审计 +- P0 风险项是否 100% 覆盖 +- P1 风险项覆盖是否 ≥ 90% + +## 5. 覆盖热力图 +- 按模块/功能区域展示覆盖密度 +- 高亮覆盖盲区 + +# Output Format +```markdown +# {需求名} 覆盖率审计 + +## 覆盖概览 +| 指标 | 值 | 目标 | 状态 | +| :--- | :---: | :---: | :---: | +| 需求→测试点覆盖率 | X% | ≥ 95% | ✅/❌ | +| P0测试点→用例覆盖率 | X% | 100% | ✅/❌ | +| P1测试点→用例覆盖率 | X% | ≥ 90% | ✅/❌ | +| P0风险覆盖率 | X% | 100% | ✅/❌ | +| 过度覆盖率 | X% | ≤ 5% | ✅/❌ | + +## 需求→测试点 追溯矩阵 +| 需求条目 | 测试点 | 覆盖状态 | +| :--- | :--- | :---: | +| REQ-001: xxx | TP-001, TP-005 | ✅ | +| REQ-002: xxx | - | ❌ 缺口 | + +## 测试点→用例 追溯矩阵 +| 测试点 | 优先级 | 用例 | 覆盖状态 | +| :--- | :--- | :--- | :---: | +| TP-001 | P0 | TC-001, TC-002 | ✅ | +| TP-005 | P1 | - | ❌ 缺口 | + +## 覆盖缺口 +### 缺口 GAP-001: {描述} +- 需求条目: REQ-XXX +- 缺口类型: 无测试点 / 无用例 +- 风险等级: P0/P1/P2 +- 建议: ... + +## 过度覆盖 +### 冗余 RED-001: {描述} +- 用例: TC-XXX +- 问题: 无需求依据 +- 建议: 移除或补充需求条目 + +## 覆盖热力图 +(按模块展示覆盖密度,用 █ 表示) +| 模块 | 需求条目 | 测试点 | 用例 | 覆盖密度 | +| :--- | :---: | :---: | :---: | :--- | +| 模块A | 5 | 15 | 25 | ████████ 密集 | +| 模块B | 3 | 2 | 2 | ██ 稀疏 ⚠️ | +``` + +# Constraints +- 覆盖缺口必须精确到需求条目级别 +- P0 覆盖缺口必须标注为阻断(BLOCKED) +- 过度覆盖也必须标注,避免无效维护成本 +- 覆盖密度用符号而非精确数字展示易读的热力图 +- 如果产物尚未生成,标注"等待产物" diff --git a/agents/review/quality_gatekeeper.md b/agents/review/quality_gatekeeper.md new file mode 100644 index 0000000..2d37b9e --- /dev/null +++ b/agents/review/quality_gatekeeper.md @@ -0,0 +1,96 @@ +--- +name: quality-gatekeeper +zone: review +description: 综合评审+覆盖率进行三级裁决:PASS / PASS_WITH_FIX / BLOCKED +tools: Read, Write +depends_on: ["case-reviewer", "coverage-auditor"] +produces: ["output/analysis/{{BASE_NAME}}_质量裁决.md"] +--- + +# Role +你是质量门禁裁决官,拥有最终裁定权。综合评审报告和覆盖率审计,做出是否允许导出的最终裁决。 + +# Task +1. 读取 `output/analysis/{{BASE_NAME}}_评审报告.md` +2. 读取 `output/analysis/{{BASE_NAME}}_覆盖率审计.md` +3. 读取 `output/analysis/{{BASE_NAME}}_风险评估.md` +4. 读取 `{{FLEET_CONFIG}}`(获取质量门禁阈值配置) +5. 做出三级裁决 + +# 裁决规则 + +## PASS ✅ — 允许导出 +满足以下全部条件: +- 阻断项 = 0 +- P0 测试点→用例覆盖率 = 100% +- P0 风险覆盖率 = 100% +- 需求→测试点覆盖率 ≥ 配置阈值(默认 95%) +- 无未处理的 `⚠️ 待确认` + +## PASS_WITH_FIX 🔧 — 已自动修复,允许导出 +以下情况,但 auto-fix 已完成并通过复核: +- 阻断项已全部自动修复 +- 覆盖率缺口已补齐 +- 修复后状态等同于 PASS + +## BLOCKED 🛑 — 禁止导出 +出现以下任意情况: +- 阻断项 > 配置的最大允许值(默认 0) +- P0 测试点→用例覆盖率 < 100% +- P0 风险覆盖率 < 100% +- 存在未解决的确认门禁 +- 测试用例文件不存在或为空 + +# Output Format +```markdown +# {需求名} 质量裁决 + +## 裁决结果: {✅ PASS / 🔧 PASS_WITH_FIX / 🛑 BLOCKED} + +**裁决时间**: {时间戳} +**裁决人**: quality-gatekeeper (Agentic QE Fleet) + +## 裁决依据 + +| 检查项 | 实际值 | 阈值 | 状态 | +| :--- | :---: | :---: | :---: | +| 阻断项数量 | N | 0 | ✅/❌ | +| P0 测试点覆盖率 | X% | 100% | ✅/❌ | +| P0 风险覆盖率 | X% | 100% | ✅/❌ | +| 需求覆盖率 | X% | ≥ 95% | ✅/❌ | +| 待确认项 | N | 0 | ✅/❌ | +| 用例文件存在 | Y/N | Y | ✅/❌ | + +## 裁决详情 +(逐项展开不达标的检查项) + +## 阻断详情(仅 BLOCKED 时) +| 序号 | 阻断项 | 来源 | 修复方向 | +| :--- | :--- | :--- | :--- | +| 1 | ... | 评审报告 B-001 | ... | + +## 后续步骤 + +### 若 PASS: +- ✅ 可执行 `/qe-fleet export` 导出 Excel +- ✅ 产物已达标,可进入下一阶段 + +### 若 PASS_WITH_FIX: +- 🔧 自动修复已完成,修复摘要: ... +- ✅ 可执行 `/qe-fleet export` 导出 Excel + +### 若 BLOCKED: +- 🛑 禁止导出,请先解决以上阻断项 +- 📝 解决后重新执行 `/qe-fleet review` 进行重新裁决 +- 📋 建议操作: + 1. 修复阻断项(参考评审报告) + 2. 补充覆盖缺口(参考覆盖率审计) + 3. 重新运行设计战区: `/qe-fleet design` +``` + +# Constraints +- 裁决必须引用具体数据,不能主观判断 +- BLOCKED 时必须给出明确的修复方向 +- 裁决标准与 fleet_config.yml 中的 quality_gate 配置一致 +- 不得在阻断项存在时给出 PASS +- 不得在用例文件缺失时跳过 diff --git a/decisions/README.md b/decisions/README.md new file mode 100644 index 0000000..ecfb0c2 --- /dev/null +++ b/decisions/README.md @@ -0,0 +1,57 @@ +# 子需求冲突确认说明 + +这个目录用于沉淀“已有需求继续迭代、子需求补充、规则替代、并行生效”这类场景下的人为确认结论。 + +## 为什么需要这个目录 + +当前流水线已经能自动做这些事: + +- 识别历史相似需求 +- 识别部分规则冲突候选 +- 生成 `output/analysis/{BASE_NAME}_关联与冲突.md` + +但当前流水线还不会自动做这些事: + +- 自动裁决新旧需求到底是“补充 / 替代 / 并行” +- 自动回写旧需求和新需求的版本边界 +- 自动根据确认结论重跑全部受影响需求 + +所以,涉及跨需求冲突时,必须把最终业务结论沉淀成文件,而不是只停留在聊天记录或口头确认。 + +## 建议使用方式 + +1. 新子需求先按正常流程进入 `source_docs/requirements_raw/` +2. 运行 `/case_generate ...` 或 `prepare` +3. 查看 `output/analysis/{BASE_NAME}_关联与冲突.md` +4. 如果存在冲突候选、高风险规则或 `> ⚠️ 待确认`,新增一份确认单 +5. 确认结论写清后,执行: + - `python3 scripts/case_pipeline.py apply-confirmation --requirement <需求文档路径>` +6. 重跑完成后,正式维护版 Markdown 会同步到 `requirements/{BASE_NAME}.md` + +## 建议命名 + +推荐命名: + +- `decisions/{BASE_NAME}_确认结论.md` +- `decisions/{BASE_NAME}_v2_确认结论.md` + +如果一个子需求关联多个旧需求,也可以用主题名而不是单个需求名: + +- `decisions/member_coupon_rule_merge_确认结论.md` + +## 当前状态与目标状态 + +当前状态: + +- 确认单是人工维护资产 +- `prepare` 会把确认门禁写进 manifest +- `verify` 和 `export` 会在确认单未写明 `确认状态:已确认` 时阻断 +- 是否继续重跑,仍然由人工触发 +- 触发后可由 `apply-confirmation` 自动写维护说明并重跑确认单中的目标需求 + +目标状态: + +- 脚本检测到冲突后自动提示进入确认阶段 +- 已确认时支持更细粒度地自动回写需求源文件,而不只是写维护说明 + +在脚本能力补齐前,这个目录的作用是让“冲突裁决”具备可追溯性。 diff --git a/decisions/确认结论模板.md b/decisions/确认结论模板.md new file mode 100644 index 0000000..d7af074 --- /dev/null +++ b/decisions/确认结论模板.md @@ -0,0 +1,47 @@ +# 确认结论模板 + +## 1. 基本信息 + +- 当前需求: +- 关联历史需求: +- 确认状态:`待确认 / 已确认 / 已驳回` +- 确认日期: +- 确认人: + +## 2. 关系判定 + +- 关系类型:`补充 / 替代 / 并行` +- 判定理由: + +## 3. 生效边界 + +- 生效范围: +- 失效范围: +- 影响模块: +- 影响角色: +- 影响接口或数据口径: + +## 4. 冲突点 + +| 序号 | 当前需求条目 | 历史需求条目 | 冲突类型 | 最终确认口径 | +| --- | --- | --- | --- | --- | +| 1 | | | | | + +## 5. 回写要求 + +- 是否需要回写当前需求:`是 / 否` +- 是否需要回写历史需求:`是 / 否` +- 需要补充的版本边界: +- 需要补充的替代/继承说明: +- 需要补充的兼容策略: + +## 6. 重跑计划 + +- 需要重跑的需求列表:`source_docs/requirements_raw/当前需求.docx, requirements/历史需求.md` +- 重跑顺序建议: +- 是否允许在确认前继续导出:`允许 / 不允许` + +## 7. 备注 + +- 待跟进事项: +- 风险说明: diff --git a/docs/MAINTENANCE_GUIDE.md b/docs/MAINTENANCE_GUIDE.md new file mode 100644 index 0000000..f2883e7 --- /dev/null +++ b/docs/MAINTENANCE_GUIDE.md @@ -0,0 +1,438 @@ +# Agentic QE Fleet 维护指南 + +> 版本: 2.0.0 | 最后更新: 2026-07-09 | 面向: 仓库维护者 + +## 目录 + +1. [架构概览](#1-架构概览) +2. [目录职责速查](#2-目录职责速查) +3. [日常维护任务](#3-日常维护任务) +4. [Agent 管理](#4-agent-管理) +5. [知识库维护](#5-知识库维护) +6. [配置调优](#6-配置调优) +7. [故障排查](#7-故障排查) +8. [版本升级](#8-版本升级) + +--- + +## 1. 架构概览 + +### 1.1 战区执行顺序 + +``` +PREPARE ──→ ANALYZE ──→ DESIGN ──→ REVIEW ──→ MONITOR + │ │ │ │ │ + │ │ │ │ └── 异步触发(测试执行后) + │ │ │ └── quality-gatekeeper 裁决 + │ │ └── 4 Agent (strategy + testpoints + cases + data) + │ └── 3 Agent (analysis + conflicts + risk) + └── 2 Agent (parse + knowledge activate) +``` + +### 1.2 数据流 + +```python +# 每个战区产出独立 manifest,下一战区消费 +manifest_prepare.json → 标准化路径、激活知识清单 +manifest_analyze.json → 需求分析、冲突、风险矩阵、确认门禁 +manifest_design.json → 策略、测试点、用例、数据路径 +manifest_review.json → 评审、覆盖率、质量裁决 +manifest_monitor.json → 执行分析、知识沉淀建议 +``` + +### 1.3 关键文件 + +| 文件 | 职责 | 改动频率 | +|------|------|----------| +| `fleet_config.yml` | 全局配置(开关、阈值、策略) | 低频 | +| `fleet_runner.py` | 核心编排器 | 低频 | +| `fleet_manifest.py` | Manifest 读写 | 低频 | +| `fleet_agents.py` | Agent 注册表和加载 | 新增 Agent 时 | +| `agents/*/*.md` | 14 个 Agent 的行为定义 | 调优 prompt 时 | +| `knowledge_base/` | 领域知识 | 持续维护 | +| `case_pipeline.py` | 向后兼容的流水线脚本 | 低频 | + +--- + +## 2. 目录职责速查 + +``` +QaAutomationHub/ +├── agents/ # 🔧 Agent 行为定义(14 个 prompt 文件) +│ ├── prepare/ # 准备战区 (2) +│ ├── analyze/ # 分析战区 (3) +│ ├── design/ # 设计战区 (4) +│ ├── review/ # 评审战区 (3) +│ └── monitor/ # 监控战区 (2) +├── scripts/ # 🔧 编排脚本和工具 +│ ├── fleet_runner.py # 核心编排器(不要直接改执行逻辑) +│ ├── fleet_manifest.py # Manifest 管理 +│ ├── fleet_agents.py # Agent 加载、注册表、上下文注入 +│ ├── case_pipeline.py # 向后兼容的 prepare/verify/export +│ ├── export_excel.py # Markdown → Excel +│ └── governance_audit.py # 治理审计 +├── knowledge_base/ # 📚 长期资产(持续投入维护) +│ ├── 00_project/ # 项目画像 +│ ├── 01_standards/ # 标准规范 +│ ├── 02_history/ # 历史经验 +│ └── 03_best_practices/ # 最佳实践 +├── knowledge_gaps/ # 📝 知识缺口追踪 +├── decisions/ # 📋 跨需求冲突确认单 +├── source_docs/ # 📄 原始输入文档 +├── requirements/ # 📄 正式维护版需求 +├── output/ # 📊 执行产物(不作为长期资产) +├── fleet_config.yml # ⚙️ 全局配置 +├── docs/ # 📖 文档 +└── .claude/ # 🔧 CLI 入口 +``` + +### 资产 vs 产物 + +**长期资产**(需要持续投入维护): +- `knowledge_base/` — 决定 Fleet 质量的源头 +- `agents/` — Agent 行为定义 +- `fleet_config.yml` — 全局配置 +- `scripts/` — 编排脚本 +- `decisions/` — 冲突确认结论 + +**执行产物**(每次运行产生,不做长期维护): +- `output/analysis/` +- `output/test_points/` +- `output/test_cases/` +- `output/excel_reports/` +- `output/manifests/` +- `output/versions/` + +--- + +## 3. 日常维护任务 + +### 3.1 新增需求时 + +```bash +# 1. 放置需求文档 +cp 新需求.docx source_docs/requirements_raw/ + +# 2. 放置配套技术方案(若有) +cp 技术方案.docx source_docs/technical_solutions/ + +# 3. 运行 Fleet +/qe-fleet run source_docs/requirements_raw/新需求.docx + +# 4. 如果触发确认门禁 → 创建确认单 → 确认后重新运行 +``` + +### 3.2 线上事故后 + +**必须做的事**(每次事故至少做一项): + +```markdown +1. 编辑 knowledge_base/02_history/historical_defects.md + 添加条目: + ### {缺陷标题} + - 模块: xxx + - 现象: xxx + - 根因: xxx + - 防御建议: xxx + - 发现日期: 2026-07-09 + - 严重度: P0/P1/P2 + +2. 如果是通用漏测模式,编辑 common_missed_scenes.md + 添加条目: + ### {漏测场景} + - 场景描述: xxx + - 为什么容易漏测: xxx + - 应该在哪个阶段发现: xxx + - 预防措施: xxx +``` + +### 3.3 发现高质量用例时 + +将优秀用例加入 `knowledge_base/03_best_practices/`,作为后续生成的范例。 + +### 3.4 知识库健康检查 + +```bash +# 检查知识库覆盖缺口 +/qe-fleet knowledge gaps + +# 同步和去重 +/qe-fleet knowledge sync +``` + +--- + +## 4. Agent 管理 + +### 4.1 新增 Agent + +1. 在 `agents//` 下创建 prompt 文件 +2. 在 `fleet_agents.py` 的 `AGENT_REGISTRY` 中注册: + +```python +"new-agent-id": { + "zone": "design", # 所属战区 + "path": "design/new_agent.md", + "name": "新 Agent 名称", + "description": "一句话描述", +} +``` + +3. 在对应战区的 `fleet_runner.py` 处理函数中加入该 Agent 的调用逻辑 +4. 运行验证: +```bash +python3 scripts/fleet_runner.py validate +``` + +### 4.2 修改 Agent 行为 + +Agent 行为完全由 prompt 文件定义。修改步骤: + +1. 编辑 `agents//.md` +2. 修改 Role/Task/Constraints 部分 +3. 用真实需求测试效果 + +**调优原则**: +- 先改知识库(源头),再改 prompt(行为),最后改脚本(流程) +- 每次只改一个 Agent,对比前后效果 +- 保留旧 prompt 备份(`_v1_backup.md`) + +### 4.3 Agent 注册表 + +| Agent ID | 战区 | 文件 | +|----------|------|------| +| `document-parser` | prepare | `agents/prepare/document_parser.md` | +| `knowledge-activator` | prepare | `agents/prepare/knowledge_activator.md` | +| `requirement-analyzer` | analyze | `agents/analyze/requirement_analyzer.md` | +| `conflict-detector` | analyze | `agents/analyze/conflict_detector.md` | +| `risk-assessor` | analyze | `agents/analyze/risk_assessor.md` | +| `test-strategist` | design | `agents/design/test_strategist.md` | +| `testpoint-designer` | design | `agents/design/testpoint_designer.md` | +| `case-designer` | design | `agents/design/case_designer.md` | +| `data-builder` | design | `agents/design/data_builder.md` | +| `case-reviewer` | review | `agents/review/case_reviewer.md` | +| `coverage-auditor` | review | `agents/review/coverage_auditor.md` | +| `quality-gatekeeper` | review | `agents/review/quality_gatekeeper.md` | +| `execution-analyst` | monitor | `agents/monitor/execution_analyst.md` | +| `knowledge-curator` | monitor | `agents/monitor/knowledge_curator.md` | + +--- + +## 5. 知识库维护 + +### 5.1 项目画像(必维护) + +`knowledge_base/00_project/project_profile.md` 是 Fleet 生成质量的根基。至少填写: + +- 项目名称、类型、目标用户 +- 核心业务域 +- 业务边界与禁用能力 +- 项目特有高风险规则 +- 技术依赖和关键系统 + +**不维护的后果**: Fleet 输出退化为通用模板,没有项目针对性。 + +### 5.2 术语文件 + +- `terminology.md` — 核心商城术语,**常驻激活**,始终生效 +- `terminology_optional_saas.md` — 私域/分销/储值术语,**按需激活** + +新增术语的原则: +- 通用术语放 `terminology.md` +- 特定业务线术语单独拆文件,由 Fleet 自动识别是否激活 +- 每个术语包含:中文名、英文名、定义、适用范围、关联术语 + +### 5.3 历史缺陷 + +格式规范(每条缺陷应包含): +```markdown +### {缺陷标题} +- 模块: xxx +- 现象: 具体可观测的异常行为 +- 根因: 为什么发生 +- 影响: 用户/数据/资金的直接影响 +- 防御建议: 测试中应如何覆盖 +- 发现日期: YYYY-MM-DD +- 严重度: P0/P1/P2 +``` + +### 5.4 最佳实践 + +格式规范(每个案例应包含): +```markdown +### {案例标题} +- 适用场景: 什么类型的需求可以参考 +- 用例编号: TC-XXX +- 亮点: 为什么这个用例写得好(颗粒度/数据/预期结果) +- 用例内容: (表格或引用) +``` + +### 5.5 知识库膨胀控制 + +- 一个文件只讲一类东西 +- 出现 30-50 条以上同类内容时,按模块拆分 +- 每季度做一次去重重审 +- 删除已过时或不再适用的条目(不要怕删) + +--- + +## 6. 配置调优 + +### 6.1 fleet_config.yml 关键参数 + +```yaml +# 质量门禁严格度(0-1) +quality_gate: + min_coverage: 0.95 # 调低 → 更容易 PASS;调高 → 更严格 + max_blockers: 0 # 允许的阻断项上限 + +# 知识沉淀自动策略 +monitor: + auto_curate_p0: true # P0 缺陷自动沉淀(推荐开启) + auto_curate_p1_p3: false # P1-P3 人工确认(推荐保持关闭) + +# 冲突检测阈值 +conflict_detection: + related_similarity_threshold: 0.015 # 关联需求阈值 + conflict_similarity_threshold: 0.22 # 冲突判定阈值 + semantic_conflict_detection: true # 语义级检测(推荐开启) + +# 版本管理 +output: + snapshot_keep: 3 # 每个需求保留的版本快照数 +``` + +### 6.2 战区开关 + +```yaml +battle_zones: + monitor: + enabled: false # 暂时不需要 Monitor → 关闭 +``` + +### 6.3 调试模式 + +编辑 `fleet_config.yml`,临时调整: +```yaml +battle_zones: + analyze: + auto_confirm: true # 跳过确认门禁(仅调试用) +``` + +--- + +## 7. 故障排查 + +### 7.1 问题:Agent prompt 找不到 + +**症状**: `FileNotFoundError: Agent prompt 不存在` + +**排查**: +```bash +# 验证所有 Agent 就绪 +python3 scripts/fleet_runner.py validate +``` + +### 7.2 问题:确认门禁阻断 + +**症状**: `🛑 确认门禁未通过,暂停在 ANALYZE 战区` + +**解决**: +1. 查看关联与冲突报告 +2. 在 `decisions/` 下创建确认单 +3. 确认状态写 `确认状态:已确认` +4. 重新运行 `/qe-fleet run` + +### 7.3 问题:质量裁决 BLOCKED + +**症状**: `🛑 质量裁决 BLOCKED,跳过导出` + +**解决**: +1. 查看 `output/analysis/{需求名}_质量裁决.md` +2. 解决阻断项(参考评审报告中的修复建议) +3. 重新运行设计战区: `/qe-fleet design` + +### 7.4 问题:文档解析失败 + +**症状**: `> ⚠️ 待确认:PDF 未提取到可用文本` + +**原因**: 扫描件/图片型 PDF,文本层缺失 + +**解决**: +- 优先使用 `.docx` 格式 +- 或手动将 PDF 内容转录为 Markdown 放到 `requirements/` + +### 7.5 问题:生成质量不理想 + +**排查顺序**(不改产物,先查源头): + +1. 需求文档是否写清楚?(背景/目标/规则/边界/异常) +2. 项目画像是否维护?(业务边界、高风险规则、技术约束) +3. 知识库是否缺内容?(历史缺陷、易漏场景、最佳实践、术语定义) +4. Agent prompt 是否需要调优?(某个 Agent 的行为约束不够) +5. 最后才考虑手工修改产物 + +--- + +## 8. 版本升级 + +### 8.1 从 v1 (qa-automation-hub) 升级到 v2 (Agentic QE Fleet) + +v1 产物完全兼容 v2,无需迁移: + +- v1 的 `/case_generate` = v2 的 `/qe-fleet run` +- v1 的 `case_pipeline.py` 所有命令仍然可用 +- v1 的 `output/` 产物命名规则不变 +- v1 的 `knowledge_base/` 目录结构不变 + +**新增内容**: +- 10 个新 Agent(从 4 到 14) +- 5 个新产出类型(策略、风险、数据、评审、裁决) +- Monitor 战区(执行分析 + 知识沉淀) +- Manifest 多文件结构(prepare/analyze/design/review/monitor) +- fleet_config.yml 全局配置 + +### 8.2 升级后建议 + +1. 运行 `/qe-fleet validate` 确认所有 Agent 就绪 +2. 用已有需求跑一次 `/qe-fleet run`,对比 v1 和 v2 的产出 +3. 根据项目实际调整 `fleet_config.yml` 中的阈值 +4. 补充项目画像中的具体信息 +5. 开启 Monitor 战区,开启知识自动沉淀 + +### 8.3 治理审计 + +当改动涉及以下文件时,自动触发治理审计: + +```bash +python3 scripts/governance_audit.py auto +``` + +触发条件:改动了 `scripts/`、`.claude/`、`agents/`、`AGENTS.md`、`README.md`、`fleet_config.yml` + +**不会触发**: `requirements/`、`knowledge_base/02_history/`、`knowledge_base/03_best_practices/`、`output/` 的普通更新 + +--- + +## 附录: 快速排查命令 + +```bash +# Agent 健康检查 +python3 scripts/fleet_runner.py validate + +# 查看 Fleet 进度 +python3 scripts/fleet_runner.py status --requirement source_docs/requirements_raw/需求.docx + +# 重置某个战区(删除 manifest 重新运行) +rm output/manifests/需求_design.json +/qe-fleet design source_docs/requirements_raw/需求.docx + +# 查看知识库健康度 +/qe-fleet knowledge sync + +# 治理审计 +python3 scripts/governance_audit.py auto + +# 仅导出 Excel(不重复生成) +python3 scripts/fleet_runner.py export --requirement source_docs/requirements_raw/需求.docx +``` diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md new file mode 100644 index 0000000..8e928b7 --- /dev/null +++ b/docs/USER_GUIDE.md @@ -0,0 +1,377 @@ +# Agentic QE Fleet 用户指南 + +> 版本: 2.0.0 | 最后更新: 2026-07-09 + +## 目录 + +1. [快速开始](#1-快速开始) +2. [命令参考](#2-命令参考) +3. [工作流详解](#3-工作流详解) +4. [知识库使用](#4-知识库使用) +5. [常见场景](#5-常见场景) +6. [FAQ](#6-faq) + +--- + +## 1. 快速开始 + +### 环境要求 + +- Python 3.10+ +- Git +- pip + +### 安装 + +```bash +# 克隆仓库 +git clone http://47.109.59.41:3000/xst/QaAutomationHub.git +cd QaAutomationHub + +# 安装依赖 +python3 -m venv .venv +source .venv/bin/activate # Windows: .\.venv\Scripts\activate +pip install -r requirements.txt +``` + +### 3 步上手 + +**第 1 步**: 把需求文档放进 `source_docs/requirements_raw/` + +``` +source_docs/requirements_raw/你的需求.docx +``` + +**第 2 步**: 确认项目画像已维护 + +``` +knowledge_base/00_project/project_profile.md +``` + +**第 3 步**: 运行 Fleet + +``` +/qe-fleet run source_docs/requirements_raw/你的需求.docx +``` + +Fleet 会自动完成:文档解析 → 知识激活 → 需求分析 → 冲突检测 → 风险评估 → 测试策略 → 测试点 → 用例 → 评审 → 覆盖审计 → 质量裁决 → Excel 导出。 + +--- + +## 2. 命令参考 + +### `/qe-fleet run` — 全流程自动化 + +```text +/qe-fleet run source_docs/requirements_raw/需求.docx +``` + +从需求到 Excel 一条命令搞定。等价于依次执行 prepare → analyze → design → review → export。 + +**参数**: +- `--zone <战区>`: 仅运行到指定战区(prepare/analyze/design/review/monitor) +- `--skip-export`: 跳过最终 Excel 导出 + +### `/qe-fleet prepare` — 仅准备 + +```text +/qe-fleet prepare source_docs/requirements_raw/需求.docx +``` + +执行文档解析 + 知识激活。适合先看看标准化后的需求是什么样。 + +### `/qe-fleet analyze` — 准备 + 分析 + +```text +/qe-fleet analyze source_docs/requirements_raw/需求.docx +``` + +执行到分析战区结束。产出需求分析、冲突报告、风险评估。 + +### `/qe-fleet design` — 准备 → 分析 → 设计 + +```text +/qe-fleet design source_docs/requirements_raw/需求.docx +``` + +执行到设计战区结束。产出测试策略、测试点、测试用例、测试数据。 + +### `/qe-fleet review` — 仅评审 + +```text +/qe-fleet review source_docs/requirements_raw/需求.docx +``` + +对已有产物执行评审(不重复生成)。产出评审报告、覆盖率审计、质量裁决。 + +### `/qe-fleet export` — 仅导出 + +```text +/qe-fleet export source_docs/requirements_raw/需求.docx +``` + +将已有测试用例导出为 Excel + 版本快照。 + +### `/qe-fleet monitor` — 执行分析 + 知识沉淀 + +```text +/qe-fleet monitor source_docs/requirements_raw/需求.docx --results test-results.xml +``` + +分析测试执行结果,分类失败,沉淀知识。 + +### `/qe-fleet status` — 查看进度 + +```text +/qe-fleet status source_docs/requirements_raw/需求.docx +``` + +查看当前需求的 Fleet 运行进度和产物状态。 + +### `/qe-fleet validate` — 验证 Agent 就绪 + +```text +/qe-fleet validate +``` + +验证所有 14 个 Agent prompt 文件是否存在且非空。 + +### 兼容命令 + +```text +/case_generate source_docs/requirements_raw/需求.docx +``` + +完全等同于 `/qe-fleet run`,向后兼容。 + +--- + +## 3. 工作流详解 + +### 3.1 标准流程 + +``` +需求文档 → PREPARE → ANALYZE → [人工确认] → DESIGN → REVIEW → [质量裁决] → EXPORT +``` + +### 3.2 确认门禁 + +当 Fleet 检测到以下情况时,会在 ANALYZE 战区后暂停: + +- 识别到历史相似需求 +- 检测到规则冲突(P0/P1 级别) +- 需求中存在 `⚠️ 待确认` 项 + +**此时你需要**: +1. 查看 `output/analysis/{需求名}_关联与冲突.md` +2. 在 `decisions/` 下创建确认单(使用 `确认结论模板.md`) +3. 确认状态写为 `确认状态:已确认` +4. 重新运行 `/qe-fleet run`(Fleet 会自动跳过已完成战区) + +### 3.3 质量裁决 + +评审战区结束后,quality-gatekeeper 会做出三级裁决: + +| 裁决 | 含义 | 后续操作 | +|------|------|----------| +| ✅ PASS | 全部达标 | 自动导出 Excel | +| 🔧 PASS_WITH_FIX | 已自动修复 | 自动导出 Excel | +| 🛑 BLOCKED | 有阻断项 | 查看裁决报告,修复后重跑 | + +### 3.4 Monitor 循环 + +``` +测试执行 → /qe-fleet monitor → 执行分析 → 知识沉淀 → 知识库自动更新 → 下次生成更准 +``` + +这是一个正向循环:用得越多,知识库越丰富,生成质量越高。 + +--- + +## 4. 知识库使用 + +### 4.1 知识库结构 + +``` +knowledge_base/ +├── 00_project/ # 项目画像(必须维护) +│ └── project_profile.md +├── 01_standards/ # 标准规范 +│ ├── terminology.md # 核心术语(常驻) +│ ├── terminology_optional_saas.md # 扩展术语(按需激活) +│ ├── test_case_template.md # 用例模板 +│ ├── definition_of_done.md # 完成标准 +│ └── review_checklist.md # 评审清单 +├── 02_history/ # 历史经验(手动+自动维护) +│ ├── common_missed_scenes.md # 易漏场景 +│ ├── historical_defects.md # 历史缺陷 +│ └── marketing_rules.md # 营销规则 +└── 03_best_practices/ # 最佳实践(手动+推荐) + ├── payment_flow_cases.md # 支付链路范例 + └── marketing_activity_cases.md # 营销活动范例 +``` + +### 4.2 知识激活机制 + +Fleet 不会全量加载所有知识库,而是按需求内容智能激活: + +- **常驻激活**: `terminology.md`、`template.md`、`definition_of_done.md`、`review_checklist.md` +- **关键词匹配**: 如需求包含"导购、分销、企微"→ 激活 `terminology_optional_saas.md` +- **语义匹配**: 计算需求与知识库文件的 Jaccard 相似度,≥ 0.08 则激活 + +### 4.3 知识缺口 + +当 Fleet 发现需求涉及但知识库无覆盖的领域时,会在 Prepare 战区输出 `knowledge_gaps`,提示你补充相关知识。 + +--- + +## 5. 常见场景 + +### 5.1 新需求首次生成 + +```bash +# 1. 放置文档 +cp 新人礼需求.docx source_docs/requirements_raw/ + +# 2. 一键生成 +# 在 CLI 中输入: +/qe-fleet run source_docs/requirements_raw/新人礼需求.docx + +# 3. 查看产物 +ls output/analysis/新人礼需求_* +ls output/test_points/新人礼需求_* +ls output/test_cases/新人礼需求_* +ls output/excel_reports/新人礼需求_* +``` + +### 5.2 已有需求的子需求迭代 + +```bash +# 1. 保留旧需求文档在 requirements/ 或 source_docs/requirements_raw/ +# 2. 放置新子需求 +cp 新人礼二期需求.docx source_docs/requirements_raw/ + +# 3. 运行 Fleet +/qe-fleet run source_docs/requirements_raw/新人礼二期需求.docx + +# 4. 如果 Fleet 在 ANALYZE 后暂停(检测到冲突) +# → 查看 output/analysis/新人礼二期需求_关联与冲突.md +# → 在 decisions/ 下创建确认单 +# → 确认单写"确认状态:已确认" +# → 重新运行 /qe-fleet run + +# 5. 按确认结论重跑受影响需求 +python3 scripts/case_pipeline.py apply-confirmation --requirement source_docs/requirements_raw/新人礼二期需求.docx +``` + +### 5.3 线上事故后回写 + +```bash +# 1. 手动补充历史缺陷 +# 编辑 knowledge_base/02_history/historical_defects.md +# 写明:模块、现象、根因、防御建议 + +# 2. 手动补充易漏场景 +# 编辑 knowledge_base/02_history/common_missed_scenes.md + +# 3. (可选)运行知识库健康检查 +/qe-fleet knowledge sync + +# 4. 下次运行 Fleet 时,新的历史经验会自动激活 +``` + +### 5.4 测试执行后分析 + +```bash +# 拿到测试执行结果后 +/qe-fleet monitor source_docs/requirements_raw/需求.docx --results junit-results.xml + +# 产出: +# - output/analysis/需求_执行分析.md(失败分类 + 根因分析) +# - knowledge_base/ 自动更新(P0 缺陷自动沉淀) +# - knowledge_gaps/ 待确认沉淀(P1-P3 需人工确认) +``` + +### 5.5 查看进度 + +```bash +/qe-fleet status source_docs/requirements_raw/需求.docx +``` + +输出示例: +``` +✅ prepare: completed +✅ analyze: completed +⏳ design: in_progress +⬜ review: pending +⬜ monitor: pending +``` + +--- + +## 6. FAQ + +### Q: 和原来的 /case_generate 有什么区别? + +`/qe-fleet` 是升级版,Agent 从 4 个增加到 14 个,新增了风险评估、测试策略、数据构造、覆盖率审计、质量门禁、执行分析、知识沉淀等能力。`/case_generate` 保留为别名。 + +### Q: 必须所有战区都跑吗? + +不必须。你可以分步运行: +- 只想看分析 → `/qe-fleet analyze` +- 只想看设计 → `/qe-fleet design` +- 只想导出 Excel → `/qe-fleet export` +- 只想分析测试结果 → `/qe-fleet monitor` + +### Q: Fleet 生成的用例能直接用吗? + +Fleet 生成的用例经过 4 个 Agent 协作(设计 → 评审 → 覆盖审计 → 质量裁决),质量裁决 PASS 后可以直接使用。但建议: +- 首次使用前先配置项目画像 +- 补充知识库中的具体业务规则 +- 对 P0 高风险用例做一次人工确认 + +### Q: 如何让 Fleet 越来越准? + +1. 维护项目画像(`knowledge_base/00_project/project_profile.md`) +2. 每次线上事故后回写到历史缺陷/易漏场景 +3. 积累高质量用例到最佳实践 +4. 使用 Monitor 战区的自动知识沉淀功能 +5. 定期运行 `/qe-fleet knowledge sync` 做知识库健康检查 + +### Q: 支持哪些文档格式? + +- `.docx`(推荐,结构保留最好) +- `.doc`(通过 pyantiword 解析) +- `.pdf`(通过 PDF 流解析,扫描件/图片型 PDF 质量差) +- `.md`(直接使用) +- `.txt`(直接使用) + +### Q: Excel 导出格式是什么? + +默认导出为云效字段模型(标题/编号/目录/创建时间/前置条件/步骤描述/预期结果/优先级/类型/URL)。可在 `fleet_config.yml` 中修改。 + +### Q: 如何关闭某个战区? + +编辑 `fleet_config.yml`: +```yaml +battle_zones: + monitor: + enabled: false # 关闭 Monitor 战区 +``` + +### Q: 如何调整质量门禁严格度? + +编辑 `fleet_config.yml`: +```yaml +quality_gate: + min_coverage: 0.90 # 降低覆盖率要求(默认 0.95) + max_blockers: 2 # 允许最多 2 个阻断项(默认 0) +``` + +### Q: 知识沉淀会自动修改我的知识库文件吗? + +Monitor 战区的 knowledge-curator Agent: +- **P0 确认缺陷**: 默认自动回写(可在 `fleet_config.yml` 中关闭) +- **P1-P3 缺陷**: 默认仅生成建议,需人工确认后回写 +- **去重保护**: 回写前自动检查与已有知识的相似度 +- **变更记录**: 所有自动回写会记录时间戳和来源 diff --git a/docs/superpowers/specs/2026-07-09-agentic-qe-fleet-design.md b/docs/superpowers/specs/2026-07-09-agentic-qe-fleet-design.md new file mode 100644 index 0000000..2316eff --- /dev/null +++ b/docs/superpowers/specs/2026-07-09-agentic-qe-fleet-design.md @@ -0,0 +1,357 @@ +# Agentic QE Fleet 集成设计 + +> 版本: 1.0 | 日期: 2026-07-09 | 状态: 已确认 + +## 1. 概述 + +将现有 QA Automation Hub(测试用例生成流水线)深度重构为 Agentic QE Fleet——一个由 14 个专业 AI Agent 组成的自治质量工程舰队,覆盖从需求输入到知识沉淀的全生命周期。 + +### 1.1 核心升级维度 + +| 维度 | 原项目 | QE Fleet | +|------|--------|----------| +| Agent 数量 | 4 | 14 | +| 战区划分 | 无 | 5 战区 (Prepare/Analyze/Design/Review/Monitor) | +| 编排方式 | skill 文件分散 | fleet_runner.py 集中编排 | +| 知识管理 | 静态手动维护 | 自动激活 + 自动回写沉淀 | +| 质量门禁 | 简单检查 | 三级裁决 (PASS/PASS_WITH_FIX/BLOCKED) | +| 覆盖率 | 无系统性追溯 | 需求→测试点→用例三级追溯 | +| 执行反馈 | 无 | Monitor 战区:结果分析 + 知识沉淀 | +| CLI 入口 | /case_generate | /qe-fleet + 子命令 | + +### 1.2 设计原则 + +- **战区隔离**:每个战区独立运行,通过标准化 manifest JSON 交接 +- **Agent 专职**:一个 Agent 只做一件事,文件短小精悍 +- **确定性编排**:fleet_runner.py 编排 Agent 执行顺序,不依赖 LLM 自主决策流程 +- **向后兼容**:保留 `/case_generate` 别名,保留 `case_pipeline.py` 接口 +- **产出一致**:输出格式与原项目兼容,现有用户无缝迁移 + +--- + +## 2. 整体架构 + +``` + /qe-fleet run <需求文档> + │ + ▼ +┌──────────────────────────────────────────────────────────────┐ +│ FLEET ORCHESTRATOR │ +│ scripts/fleet_runner.py │ +│ 读取 fleet_config.yml → 发令 → 收集 → 裁决 → 导出 │ +└──────────────────────────────────────────────────────────────┘ + │ │ │ │ + ┌────▼────┐ ┌────▼────┐ ┌────▼────┐ ┌────▼────┐ + │ PREPARE │ │ ANALYZE │ │ DESIGN │ │ REVIEW │ + │ 准备战区 │───▶│ 分析战区 │───▶│ 设计战区 │───▶│ 评审战区 │ + │ 2 Agent │ │ 3 Agent │ │ 4 Agent │ │ 3 Agent │ + └─────────┘ └─────────┘ └─────────┘ └─────────┘ + │ + ┌────▼────┐ + │ MONITOR │ + │ 监控战区 │ + │ 2 Agent │ + └─────────┘ +``` + +### 2.1 14 个专业 Agent + +| # | 战区 | Agent ID | 名称 | 核心职责 | +|---|------|----------|------|----------| +| 1 | Prepare | `document-parser` | 文档解析专家 | docx/pdf/doc → MD 标准化 + 技术方案识别 | +| 2 | Prepare | `knowledge-activator` | 知识激活专家 | 按需求自动激活术语/规则/历史缺陷/最佳实践 | +| 3 | Analyze | `requirement-analyzer` | 需求分析专家 | 结构化需求模型 + 歧义标注 | +| 4 | Analyze | `conflict-detector` | 冲突检测专家 | 语义级历史需求冲突检测 | +| 5 | Analyze | `risk-assessor` | 风险评估专家 | 风险矩阵量化 (资损/可用性/数据/合规/兼容性) | +| 6 | Design | `test-strategist` | 测试策略师 | 分层测试策略 + 优先级矩阵 | +| 7 | Design | `testpoint-designer` | 测试点设计师 | 全面测试点矩阵 + 来源标注 | +| 8 | Design | `case-designer` | 用例设计师 | 可执行用例 + 双验证预期结果 | +| 9 | Design | `data-builder` | 数据构造师 | 精确测试数据集 | +| 10 | Review | `case-reviewer` | 用例评审师 | 用例质量/规范性/可执行性评审 | +| 11 | Review | `coverage-auditor` | 覆盖率审计师 | 需求→测试点→用例三级追溯覆盖 | +| 12 | Review | `quality-gatekeeper` | 质量门禁裁决官 | 三级裁决 (PASS/PASS_WITH_FIX/BLOCKED) | +| 13 | Monitor | `execution-analyst` | 执行结果分析师 | 失败归类 + 失败模式识别 + 根因推测 | +| 14 | Monitor | `knowledge-curator` | 知识沉淀师 | 自动回写知识库 + 去重保护 | + +### 2.2 战区数据流 + +``` +Prepare → manifest_prepare.json (标准化需求路径、激活的知识库清单、文档置信度) +Analyze → manifest_analyze.json (结构化需求、冲突列表、风险矩阵) +Design → manifest_design.json (测试策略、测试点、用例路径、测试数据路径) +Review → manifest_review.json (评审结论、覆盖率报告、门禁裁决) +Monitor ← 外部测试执行结果 (失败分析、知识回写建议) +``` + +--- + +## 3. 战区详细设计 + +### 3.1 Prepare 战区 + +**触发**: `/qe-fleet prepare <需求文档>` + +**document-parser**: +- 输入: 原始需求文档 (.docx/.doc/.pdf/.md) +- 处理: 解析 → 提取文本 → 标准化 Markdown +- 自动识别同主题技术方案 (文件名 + 内容相似度匹配) +- 标注解析置信度 +- 产出: `output/normalized_inputs/{BASE_NAME}/requirement.md` + +**knowledge-activator**: +- 输入: 标准化需求 + 项目画像 +- 激活策略: + - 常驻: `terminology.md` (核心术语)、`test_case_template.md`、`definition_of_done.md`、`review_checklist.md` + - 关键词匹配: 可选术语文件 (如 saas 术语) + - 语义匹配: 历史缺陷、最佳实践中与需求相关的条目 +- 激活结果记录在 manifest 中,附带激活理由 +- 自动检测知识缺口并建议补充 + +### 3.2 Analyze 战区 + +**触发**: `/qe-fleet analyze <需求文档>` + +**requirement-analyzer**: +- 结构化输出: 背景与目标 / 范围与边界 / 用户角色 / 关键业务规则 / 主流程 / 异常流程 / 技术约束 +- 项目画像差异化: 将通用约束替换为项目特定约束 +- 歧义标注: `> ⚠️ 待确认:问题、影响范围、建议确认方向` + +**conflict-detector**: +- 对比范围: 所有历史需求 (requirements/ + source_docs/) +- 冲突类型: 规则方向冲突 / 数值口径冲突 / 状态机冲突 / 权限冲突 +- 语义级检测: 结合术语解释判断规则语义是否真正矛盾 (不只看 n-gram) +- 严重度分级: P0(高风险)/P1(中风险)/P2(低风险)/P3(提示) + +**risk-assessor** (新增): +- 风险维度: 资损 / 可用性 / 数据 / 合规 / 兼容性 +- 量化矩阵: 可能性(1-5) × 影响度(1-5) = 风险等级 +- 高风险项自动映射为 P0 必测项 + +**Agent 协作**: analyzer 和 detector 可并行运行,risk-assessor 串行消费两者输出。 + +### 3.3 Design 战区 + +**触发**: `/qe-fleet design <需求文档>` + +**test-strategist** (新增): +- 输入: 风险矩阵 + 需求分析 +- 输出: 测试金字塔分配 / 优先级覆盖规则 / P0 清单 + +**testpoint-designer**: +- 输入: 策略 + 分析 + 冲突 + 历史缺陷 + 易漏场景 + 最佳实践 +- 覆盖维度: 主流程/异常/边界/状态流转/权限/并发幂等/弱网超时/历史缺陷防御/跨需求冲突防御 +- 来源标注: `[需求]` `[历史缺陷]` `[风险矩阵]` `[冲突修订]` `[项目画像]` `[漏测清单]` + +**case-designer**: +- 将测试点转化为可执行用例,严格使用 template 表头 +- 用例原子性: 一个用例一个验证点 +- 预期结果双验证: UI反馈 + 数据状态 +- 中后台页面: 补齐列表/按钮/只读态/状态权限映射/端间隔离 +- 保存前按 review_checklist 自检 + +**data-builder** (新增): +- 为用例构造精确测试数据: 账号/金额/商品ID/券码/状态枚举/边界值 +- 数据来源: 项目画像字段 + 术语枚举 + 需求具体数值 +- 输出: `{BASE_NAME}_测试数据.md` + +**执行顺序**: strategist → testpoint + data 并行 → case (消费 testpoint 和数据) + +### 3.4 Review 战区 + +**触发**: `/qe-fleet review <需求文档>` + +**case-reviewer**: 按 checklist 逐项检查,错误分级 (阻断/建议/优化),标注到具体行号。 + +**coverage-auditor** (新增): 需求→测试点→用例三级追溯矩阵,识别覆盖缺口和过度覆盖。 + +**quality-gatekeeper** (新增): +- 三级裁决: PASS / PASS_WITH_FIX / BLOCKED +- 裁决依据: 评审阻断项 + 覆盖率数据 + 风险矩阵 +- BLOCKED 时必须告知原因和解决路径 + +**并行策略**: reviewer 和 auditor 并行,gatekeeper 等待两者完成。 + +### 3.5 Monitor 战区 + +**触发**: `/qe-fleet monitor <测试结果文件>` 或 CI webhook + +**execution-analyst**: +- 支持格式: JUnit XML / JSON / 结构化 Markdown +- 失败归类: ENV_ISSUE / DATA_ISSUE / CASE_BUG / REAL_BUG +- 失败模式识别: 同一模式≥3次 → 标记为系统性问题 +- 根因推测 + 回归建议 + +**knowledge-curator**: +- 自动回写: REAL_BUG → historical_defects / 新漏测模式 → common_missed_scenes / 高质量用例 → best_practices +- 去重保护: Jaccard 相似度 + LLM 语义去重 +- 安全策略: P0 确认缺陷可配置自动生效,P1-P3 默认人工确认 +- 输出: 变更 diff + 建议说明 + +--- + +## 4. CLI 设计 + +### 4.1 命令体系 + +``` +/qe-fleet run <需求文档> # 全流程 +/qe-fleet prepare <需求文档> # 仅准备 +/qe-fleet analyze <需求文档> # 准备+分析 +/qe-fleet design <需求文档> # 准备→分析→设计 +/qe-fleet review <需求文档> # 仅评审已有产物 +/qe-fleet export <需求文档> # 仅 Excel 导出 +/qe-fleet monitor <测试结果> # 执行分析+知识沉淀 +/qe-fleet status <需求文档> # 进度和产物状态 +/qe-fleet knowledge sync # 知识库健康检查 +/qe-fleet knowledge gaps # 知识库覆盖缺口报告 +``` + +兼容: `/case_generate` = `/qe-fleet run` 别名 + +### 4.2 自动执行规则 (CLI) + +Agent 收到 `/qe-fleet run` 后必须自动完成: + +1. 解析需求文档路径,提取 BASE_NAME +2. 执行 `python3 scripts/fleet_runner.py run --requirement <路径>` +3. 按战区顺序执行,读取各阶段 manifest 状态 +4. 检查 confirmation_gate,必要时阻断并告知 +5. 最终汇总: 成功/失败、产物路径、质量裁决 + +--- + +## 5. 目录结构 + +``` +QaAutomationHub/ +├── .claude/ +│ ├── skills/qe_fleet/SKILL.md # Fleet skill 定义 +│ └── commands/qe_fleet.md # 子命令分发 +├── AGENTS.md # Codex CLI 入口 +├── agents/ +│ ├── prepare/ # 准备战区 (2 Agent) +│ │ ├── document_parser.md +│ │ └── knowledge_activator.md +│ ├── analyze/ # 分析战区 (3 Agent) +│ │ ├── requirement_analyzer.md +│ │ ├── conflict_detector.md +│ │ └── risk_assessor.md +│ ├── design/ # 设计战区 (4 Agent) +│ │ ├── test_strategist.md +│ │ ├── testpoint_designer.md +│ │ ├── case_designer.md +│ │ └── data_builder.md +│ ├── review/ # 评审战区 (3 Agent) +│ │ ├── case_reviewer.md +│ │ ├── coverage_auditor.md +│ │ └── quality_gatekeeper.md +│ └── monitor/ # 监控战区 (2 Agent) +│ ├── execution_analyst.md +│ └── knowledge_curator.md +├── scripts/ +│ ├── fleet_runner.py # 核心编排器 +│ ├── fleet_manifest.py # Manifest 管理 +│ ├── fleet_agents.py # Agent 加载和上下文注入 +│ ├── case_pipeline.py # 向后兼容 +│ ├── export_excel.py # Excel 导出 +│ └── governance_audit.py # 治理审计 +├── knowledge_base/ # 保持现有结构 +├── knowledge_gaps/ # 知识缺口追踪 +├── fleet_config.yml # Fleet 全局配置 +├── output/ # 输出产物 +├── docs/ +│ ├── USER_GUIDE.md # 用户指南 +│ └── MAINTENANCE_GUIDE.md # 维护指南 +└── README.md # 项目入口文档 +``` + +--- + +## 6. 配置文件 + +### fleet_config.yml + +```yaml +fleet: + name: "QE Fleet" + version: "2.0.0" + +battle_zones: + prepare: { enabled: true, auto_confirm: false } + analyze: { enabled: true, auto_confirm: false } + design: { enabled: true, auto_confirm: false } + review: { enabled: true, auto_confirm: false } + monitor: { enabled: true, auto_confirm: true } + +quality_gate: + min_coverage: 0.95 + max_blockers: 0 + require_data_builder: true + require_risk_assessment: true + +monitor: + auto_curate_p0: true + auto_curate_p1_p3: false + supported_formats: [junit, json, markdown] + +output: + excel_format: yunxiao + snapshot_keep: 3 + auto_sync_maintained: true +``` + +--- + +## 7. 关键技术决策 + +| 决策点 | 选项 | 理由 | +|--------|------|------| +| 编排方式 | Python (fleet_runner.py) | 确定性、可调试、可度量 | +| Agent 通信 | 文件 + manifest JSON | 战区隔离、故障域清晰、可回溯 | +| CLI 入口 | Claude CLI + Codex CLI | 与现有基础设施一致、零额外部署 | +| 知识激活 | 关键词 + 语义匹配 | 精确匹配保底、语义扩展覆盖 | +| 冲突检测 | n-gram + 术语语义 | 提升检测精度,减少误报 | +| 质量门禁 | 三级裁决 | 允许自动修复,精准阻断高危项 | +| 知识沉淀 | 自动建议 + 人工确认 | P0 紧急可控、P1-P3 质量把关 | +| Excel 导出 | 保持云效格式 | 向后兼容现有平台 | +| 版本快照 | 保持固定文件名 + versions/ | 向后兼容、日常无感知 | + +--- + +## 8. 与原项目兼容性 + +- `/case_generate` 保留为 `/qe-fleet run` 别名 +- `case_pipeline.py` 的 prepare/verify/export 接口保留 +- 输出文件命名规则不变 (固定文件名 + versions/ 快照) +- knowledge_base 目录结构不变 (monitor 追加不修改) +- Excel 导出格式保持云效字段模型 +- 向下兼容: 仅用原 4 Agent 也可工作 + +--- + +## 9. 实现范围 + +### Phase 1: 核心重构 +- [ ] 创建新目录结构 +- [ ] 编写 fleet_config.yml +- [ ] 实现 fleet_runner.py (编排器) +- [ ] 实现 fleet_manifest.py (manifest 管理) +- [ ] 实现 fleet_agents.py (Agent 加载) +- [ ] 升级 .claude/ skill 和 command +- [ ] 升级 AGENTS.md + +### Phase 2: Agent 迁移+新增 +- [ ] 迁移 + 升级 Prepare 战区 Agent (2→2) +- [ ] 迁移 + 升级 Analyze 战区 Agent (1→3) +- [ ] 迁移 + 升级 Design 战区 Agent (1→4) +- [ ] 迁移 + 升级 Review 战区 Agent (1→3) +- [ ] 新建 Monitor 战区 Agent (0→2) + +### Phase 3: 文档 +- [ ] USER_GUIDE.md +- [ ] MAINTENANCE_GUIDE.md +- [ ] README.md 重写 + +### Phase 4: 推送部署 +- [ ] Git 仓库初始化 + 推送 +- [ ] 验证 /qe-fleet run 端到端流程 diff --git a/fleet_config.yml b/fleet_config.yml new file mode 100644 index 0000000..fc15041 --- /dev/null +++ b/fleet_config.yml @@ -0,0 +1,138 @@ +# ============================================================================= +# Agentic QE Fleet 全局配置 +# ============================================================================= +# 本文件控制 Fleet 的所有行为开关、质量门禁阈值和 Agent 编排策略。 +# 修改后下次运行 /qe-fleet 生效,无需重启服务。 + +fleet: + name: "Agentic QE Fleet" + version: "2.0.0" + description: "14 个专业 AI Agent 组成的自治质量工程舰队" + +# --------------------------------------------------------------------------- +# 战区配置 +# --------------------------------------------------------------------------- +# enabled: 是否启用该战区 +# auto_confirm: 该战区产物是否自动确认(true=跳过人工确认直接进入下一战区) +# 注意: Monitor 战区默认 auto_confirm=true,因为它的产物是建议性的 + +battle_zones: + prepare: + enabled: true + auto_confirm: false + description: "文档解析 + 知识激活" + + analyze: + enabled: true + auto_confirm: false + description: "需求分析 + 冲突检测 + 风险评估" + + design: + enabled: true + auto_confirm: false + description: "测试策略 + 测试点 + 用例 + 测试数据" + + review: + enabled: true + auto_confirm: false + description: "用例评审 + 覆盖率审计 + 质量门禁" + + monitor: + enabled: true + auto_confirm: true + description: "执行分析 + 知识沉淀(建议性产出)" + +# --------------------------------------------------------------------------- +# 质量门禁 +# --------------------------------------------------------------------------- +quality_gate: + # 最低需求覆盖率(需求条目 → 测试用例追溯比例) + min_coverage: 0.95 + + # 最大允许阻断项(超过则 BLOCKED) + max_blockers: 0 + + # 是否强制要求测试数据构造 + require_data_builder: true + + # 是否强制要求风险评估 + require_risk_assessment: true + + # 评审阻断项自动修复最大重试次数 + auto_fix_max_retries: 3 + +# --------------------------------------------------------------------------- +# Monitor 战区(知识沉淀回写策略) +# --------------------------------------------------------------------------- +monitor: + # P0 确认缺陷自动沉淀到知识库(无需人工确认) + auto_curate_p0: true + + # P1-P3 缺陷默认需人工确认后才沉淀 + auto_curate_p1_p3: false + + # 支持的测试结果格式 + supported_formats: + - junit # JUnit XML + - json # 自定义 JSON + - markdown # 结构化 Markdown 报告 + + # 失败模式识别阈值:同一模式出现 N 次以上标记为系统性问题 + pattern_detection_threshold: 3 + + # 知识去重相似度阈值 (Jaccard) + dedup_similarity_threshold: 0.65 + +# --------------------------------------------------------------------------- +# 输出配置 +# --------------------------------------------------------------------------- +output: + # Excel 导出格式 + excel_format: "yunxiao" # 云效字段模型 + + # 版本快照保留数量 + snapshot_keep: 3 + + # export 后是否自动同步正式维护版到 requirements/ + auto_sync_maintained: true + + # 产物编码 + encoding: "utf-8" + +# --------------------------------------------------------------------------- +# 冲突检测配置 +# --------------------------------------------------------------------------- +conflict_detection: + # 关联需求相似度阈值 (Jaccard) + related_similarity_threshold: 0.015 + + # 冲突判定相似度阈值 (Jaccard) + conflict_similarity_threshold: 0.22 + + # 最大关联需求数 + max_related_requirements: 5 + + # 启用语义级冲突检测 (结合术语解释判断) + semantic_conflict_detection: true + +# --------------------------------------------------------------------------- +# 知识激活配置 +# --------------------------------------------------------------------------- +knowledge_activation: + # 常驻知识(始终激活,不受需求内容影响) + permanent: + - "knowledge_base/01_standards/terminology.md" + - "knowledge_base/01_standards/test_case_template.md" + - "knowledge_base/01_standards/definition_of_done.md" + - "knowledge_base/01_standards/review_checklist.md" + + # 关键词匹配规则 + keyword_rules: + - name: "saas" + path: "knowledge_base/01_standards/terminology_optional_saas.md" + keywords: + - "导购", "分销", "佣金", "企微", "企业微信", "私域" + - "储值", "礼品卡", "会员储值" + + # 语义匹配最低相似度 + semantic_match_threshold: 0.08 diff --git a/knowledge_base/00_project/project_profile.md b/knowledge_base/00_project/project_profile.md new file mode 100644 index 0000000..f8be60e --- /dev/null +++ b/knowledge_base/00_project/project_profile.md @@ -0,0 +1,78 @@ +# 项目画像(通用基线版,请按项目实际情况维护) + +> 用途:为本仓库内的测试分析、测试点、测试用例提供“项目差异化约束”。 +> +> 使用原则:本文件先提供测试行业常用的通用基线,后续项目落地时必须补充项目真实规则;若与正式需求、产品说明、接口文档冲突,以项目最新确认结论为准。 +> +> 维护要求:当架构、业务模式、风控策略、履约策略、权限模型、计费规则等发生变更时,必须同步更新本文件。 + +## 1. 项目简介 + +- 项目名称:待补充 +- 项目类型:默认按中后台系统、交易类系统、会员营销系统、内容平台或工具平台中的一种理解,未明确前不得擅自细化。 +- 目标用户:默认至少包含终端用户、运营人员、客服/审核人员、系统管理员中的部分角色,具体以项目实际为准。 +- 核心业务域:待补充,可从下单、履约、营销、会员、支付、退款、内容发布、审批流等域中选择。 +- 当前版本范围:以本次 `requirements/` 下需求文档为准,未写入需求范围的能力默认不纳入本期。 + +## 2. 业务边界与禁用能力 + +- 本项目明确不支持的能力:凡需求文档、接口文档、项目说明中未声明支持的能力,默认按“不支持”处理,不得在测试分析和测试用例中臆造。 +- 受监管或合规限制的流程:涉及支付、退款、发票、实名、隐私数据、权限审批、操作留痕等能力时,默认认为存在合规要求,测试中需覆盖鉴权、留痕、异常拦截和数据保护。 +- 灰度/地域/渠道差异说明:若需求未明确,则默认检查 Web/H5/App/小程序、测试环境与生产配置、不同地域或租户下是否存在规则差异,并将其作为待确认项。 + +## 3. 核心业务规则(项目级) + +- 结算与支付规则:凡涉及金额、折扣、积分、优惠、手续费、税费、退款分摊时,默认要求金额计算可追溯、展示口径一致、前后端结果一致、重复提交不导致重复扣减。 +- 营销与优惠规则:默认检查优惠互斥、叠加优先级、门槛命中、适用范围、失效时间、回滚恢复和异常场景;若项目无营销能力,应在项目化配置中显式写明。 +- 风控与权限规则:默认要求关键操作具备角色限制、越权拦截、二次确认或风控校验;高风险动作失败时不得进入成功态。 +- 状态流转规则:默认所有核心对象都应具备明确状态机约束,禁止跳状态、逆状态、重复终态处理;异常中断后状态应可解释、可恢复、可追踪。 + +## 4. 技术与集成约束 + +- 关键依赖系统:默认关注认证中心、用户中心、库存/资源中心、支付网关、消息系统、营销中心、风控系统、文件服务、第三方回调服务等;实际未接入的依赖请在项目化配置中删除。 +- 外部接口约束:默认按存在超时、重试、幂等、限流、熔断、降级、重复回调、乱序回调、部分成功等风险设计测试。 +- 数据一致性策略:若需求未明确,默认按“关键交易结果最终一致、关键扣减与状态更新需具备幂等保护”理解,并将强一致/最终一致边界列入待确认。 + +## 5. 高风险场景与历史事故 + +- 资损风险点:重复提交、重复支付、重复退款、优惠多减、金额少收/多收、库存超扣、积分或券未正确回滚、并发下重复创建资源。 +- 可用性风险点:弱网超时、接口抖动、依赖不可用、消息延迟、回调丢失、页面重复点击、前后端缓存不一致、批量操作部分失败。 +- 数据风险点:脏数据兼容、历史数据迁移、空值/默认值污染、精度丢失、跨租户串数据、删除后残留引用。 +- 典型线上事故防御策略:默认对核心链路补充幂等、重试、回滚、补偿、审计日志、告警阈值和人工兜底场景。 + +## 6. 测试策略偏好(项目定制) + +- P0 优先覆盖链路:登录鉴权、核心主流程、金额/资源扣减、状态变更、提交确认、异常回滚、查询展示一致性。 +- 必测异常场景:参数非法、前置条件不满足、重复点击、并发提交、超时重试、依赖失败、权限不足、状态已变化、数据部分缺失。 +- 非功能重点:弱网、超时、高并发、权限隔离、接口幂等、审计日志、性能基线、兼容性、可观测性。 +- 自动化优先级建议:稳定且高频回归的核心主流程、历史缺陷高发链路、金额与状态计算逻辑、关键接口鉴权与幂等校验优先自动化。 + +## 7. 需求冲突判定口径 + +- 什么情况下判定为“冲突”: + - 同一对象在不同需求中出现相反规则。 + - 同一阈值、时效、次数、金额口径不一致。 + - 同一状态机的起点、终点、流转条件描述不一致。 + - 同一角色权限、数据范围、可见性规则前后不一致。 + - 新需求声明“沿用旧逻辑”,但实际描述已改变旧规则。 +- 冲突处理优先级规则: + - 优先看当前版本正式需求是否显式声明“替换/废弃/继承”旧规则。 + - 若无显式声明,优先要求补充版本边界、生效范围、影响模块。 + - 若涉及金额、库存、权益、权限、安全、合规,默认按高风险冲突处理,必须在需求阶段确认。 +- 需求文档修改建议模板: + - 建议类型:规则合并 / 版本边界补充 / 阈值统一 / 状态机修正 / 权限口径修正 / 异常处理补充 + - 建议描述:明确指出当前需求条目、冲突来源条目、冲突点和推荐修订文本方向 + - 影响范围:说明影响的角色、模块、接口、数据口径、历史兼容逻辑、回归范围 + +## 8. 通用输出约束(供测试任务直接使用) + +- 需求分析必须同时覆盖功能目标、边界、角色、前置条件、状态流转、关键规则、风险与待确认项。 +- 测试点必须同时覆盖主流程、异常流程、边界条件、数据校验、状态流转、权限控制、并发幂等、弱网超时、历史缺陷防御。 +- 测试用例预期结果必须同时覆盖 UI/接口反馈和数据状态变化,不能只写“成功”或“失败”。 +- 若需求存在歧义、缺字段、缺状态、缺口径,必须显式输出: + +```md +> ⚠️ 待确认:问题、影响范围、建议确认方向 +``` + +- 对于高风险业务规则,若项目未明确给出,不得基于经验直接写死为真实规则,只能作为风险假设或待确认项输出。 diff --git a/knowledge_base/01_standards/definition_of_done.md b/knowledge_base/01_standards/definition_of_done.md new file mode 100644 index 0000000..804abd1 --- /dev/null +++ b/knowledge_base/01_standards/definition_of_done.md @@ -0,0 +1,86 @@ +# 测试用例完成定义 + +面向当前仓库的固定流水线,一个测试任务被视为“完成”,不是只看是否产出了文档,而是看产出的测试点和测试用例是否已经达到可评审、可执行、可追溯、可导出的质量门槛。 + +## 1. 覆盖范围达标 + +至少覆盖以下维度,不得只覆盖主流程: + +- 主流程:核心业务 Happy Path 必须覆盖。 +- 异常流程:参数非法、前置条件不满足、状态不允许、库存不足、余额不足、权限不足、重复操作、超限操作等必须覆盖。 +- 边界条件:最小值、最大值、临界值、空值、默认值、长度边界、数量边界、时间边界、金额边界必须按需求实际场景覆盖。 +- 状态流转:创建、提交、生效、失效、取消、关闭、退款、撤回、恢复等关键状态变化必须覆盖。 +- 规则组合:多条件叠加、互斥、优先级、覆盖关系、兜底规则必须覆盖。 +- 数据校验:展示数据、落库数据、统计口径、列表汇总、详情字段、外部回传字段必须覆盖。 +- 中后台页面:如果需求包含列表、新建、编辑、查看、失效、删除、筛选、选择弹窗等管理能力,除失败态外,正向成功链路和交互细项也必须覆盖。 +- 历史风险:`common_missed_scenes.md`、`historical_defects.md` 中与当前需求相关的高风险场景必须映射到测试点或测试用例。 +- 跨需求影响:`关联与冲突.md` 中识别出的关联规则、潜在冲突、修订建议,必须至少落一条可验证测试点或用例。 +- 项目差异化:`project_profile.md` 中的业务边界、禁用能力、特殊限制、风控要求必须体现。 + +## 2. 风险覆盖达标 + +对于高风险模块,测试用例必须体现风险导向,而不是平均用力。 + +- P0/P1 业务规则必须覆盖正向、逆向、边界、互斥、并发或幂等中的关键场景。 +- 资金、库存、优惠、权益、订单状态等资损类风险,必须覆盖结果一致性校验。 +- 涉及角色隔离、数据隔离、门店隔离、组织隔离的需求,必须覆盖权限与越权场景。 +- 涉及外部系统、回调、异步任务、延迟生效、重试补偿的需求,必须覆盖时序异常与重复触发场景。 + +## 3. 用例设计质量达标 + +每条用例必须满足以下要求: + +- 原子性:一条用例只验证一个主验证点,避免多个核心断言混在一条用例里。 +- 可执行:前置条件、步骤、测试数据明确,执行人无需猜测。 +- 可验证:预期结果必须同时覆盖 UI/接口反馈和数据状态变化。 +- 可定位:失败后能大致判断是前端展示、后端规则、数据落库、异步处理还是外部依赖问题。 +- 可复现:步骤中要包含关键账号、角色、商品、金额、券、积分、库存、时间或状态等必要数据。 +- 类型准确:`类型` 字段必须使用标准枚举,且与用例真实目的匹配。 +- 术语一致:术语表达必须与生效术语文件一致,不混用平台券、商家券、店铺券等概念。 +- 模块清晰:`模块` 字段应使用层级路径表达,例如 `平台端-营销管理-商家优惠券`。 + +## 4. 测试点到用例的映射达标 + +- 每个高价值测试点都应被至少一条用例承接。 +- 历史缺陷防御点、漏测清单项、冲突修订项不得只停留在测试点层,必须在用例层落地。 +- 如果某类测试点因为当前范围不做用例,必须明确写出原因,不能静默遗漏。 + +## 5. 待确认项处理达标 + +- 需求存在缺失、冲突、口径不明时,必须显式写出: + +```md +> ⚠️ 待确认:问题、影响范围、建议确认方向 +``` + +- 待确认项影响主流程、金额、库存、权限、状态流转、优惠规则时,不得擅自臆造高风险业务规则。 +- 对待确认项,至少要补一条“确认后需重点回归”的提醒性测试点或备注。 + +## 6. 非功能与稳健性覆盖达标 + +以下场景按风险选择,不要求机械凑数量,但高风险需求不能缺失: + +- 幂等:重复提交、重复支付、重复领券、重复核销、重复回调。 +- 并发:多人抢占、库存竞争、优惠领取竞争、重复操作竞争。 +- 弱网与超时:请求超时、接口重试、页面重复点击、异步结果延迟返回。 +- 兼容与稳定性:分页、排序、筛选、导入导出、大数据量、长名称、特殊字符。 +- 权限与审计:无权限、低权限、跨组织、跨门店、跨商家操作及日志留痕。 +- 展示状态:若多个业务状态会影响 C 端资格、弹窗或按钮展示,需拆分到可定位的独立用例,不得用一条模糊负向用例笼统代替。 + +## 7. 评审与产物达标 + +- `output/analysis/{BASE_NAME}_分析.md`、`output/test_points/{BASE_NAME}_测试点.md`、`output/test_cases/{BASE_NAME}_测试用例.md` 必须完整存在。 +- 测试用例表头必须严格符合 `test_case_template.md` 的唯一规范。 +- 测试用例文件必须可通过 `verify` 校验,并可成功 `export` 为 Excel。 +- 评审阶段必须对照本 DoD、历史缺陷、关联冲突报告、项目画像进行检查;未达标时应直接修正原文件,不另起草稿。 + +## 8. 默认判定原则 + +如果产物满足以下任一情况,则不能视为完成: + +- 只有主流程,没有异常、边界、状态流转或冲突防御场景。 +- 用例步骤泛化,没有可执行的数据。 +- 预期结果只有“提示成功/失败”,没有数据状态校验。 +- 历史缺陷、漏测清单、项目差异化约束未落入测试点或用例。 +- 明显存在待确认问题,但未显式标记。 +- Markdown 表格不规范,导致后续 `verify` 或 `export` 无法通过。 diff --git a/knowledge_base/01_standards/review_checklist.md b/knowledge_base/01_standards/review_checklist.md new file mode 100644 index 0000000..caa2313 --- /dev/null +++ b/knowledge_base/01_standards/review_checklist.md @@ -0,0 +1,105 @@ +# 测试用例评审清单 + +这份清单服务于当前仓库的测试用例生成与自审流程,用于把 `definition_of_done.md` 中的原则拆成可逐项检查的执行项。 + +使用原则: + +- `testcase-designer` 在写入最终用例前,必须先按本清单自检并直接修正。 +- `testcase-reviewer` 在评审阶段,必须按本清单逐类检查并直接修正阻断项。 +- 发现问题时,优先修正源用例,不输出额外草稿文件。 + +## 1. 阻断项 + +以下任一项不满足,都不能视为通过: + +- 表头不是标准唯一表头。 +- Markdown 表格格式错误,可能导致 `verify` 或 `export` 失败。 +- 只有主流程,没有异常、边界、状态流转或冲突防御场景。 +- `预期结果` 只写页面提示,没有数据状态校验。 +- `测试步骤`、`测试数据` 过于抽象,执行人无法直接操作。 +- 需求存在明显待确认项,但未显式标注 `> ⚠️ 待确认:...`。 +- 历史缺陷、漏测场景、项目差异化约束、关联冲突修订没有落到测试点或用例。 + +## 2. 结构与格式检查 + +- 是否严格使用唯一表头顺序: + - `用例编号` + - `模块` + - `用例标题` + - `优先级` + - `类型` + - `前置条件` + - `测试步骤` + - `测试数据` + - `预期结果` + - `备注` +- `类型` 是否使用允许枚举:`功能测试`、`性能测试`、`兼容性测试`、`易用性测试`、`安全性测试`、`冒烟测试`、`回归测试`、`其他`。 +- `模块` 是否采用层级路径写法,例如 `平台端-营销管理-商家优惠券`。 +- `用例编号` 是否稳定、可读、与模块归属一致。 +- `备注` 是否只承载待确认项、来源说明、AI 修正原因等必要信息,而不是堆重复内容。 + +## 3. 覆盖性检查 + +逐个模块检查以下维度是否都有体现;若不适用,需能说明原因: + +- 主流程 +- 异常流程 +- 边界条件 +- 状态流转 +- 规则组合、互斥、优先级 +- 幂等与并发 +- 权限与越权 +- 弱网、超时、异步或回调异常 +- 历史缺陷防御 +- 跨需求冲突防御 +- 项目差异化高风险约束 +- 如果需求包含中后台 CRUD/配置页,是否覆盖了列表字段、查询/重置、查看只读、新建/编辑/删除/失效、操作栏权限与状态映射、端间数据隔离。 +- 如果需求包含中后台 CRUD/配置页,除失败态和限制态外,是否显式覆盖了新建成功、编辑成功等正向主链路。 +- 如果需求包含“选择商品/优惠券/奖品/门店”等弹窗或选择器,是否覆盖了刷新、搜索、字段展示、分页、排序、单选/多选反馈和归属范围差异。 +- 如果需求包含“未开始/进行中/已结束/已失效”等状态对 C 端展示或资格判断有影响,是否按状态拆成独立可定位用例,而不是笼统合并。 + +## 4. 单条用例质量检查 + +每条用例至少检查以下问题: + +- 是否只验证一个主验证点,避免多个关键断言混杂。 +- 前置条件是否完整,是否缺账号、角色、商品、库存、金额、券、积分、订单状态等必要上下文。 +- 测试步骤是否按执行顺序书写,是否存在“正常操作”“提交并校验”等笼统描述。 +- 测试数据是否具体,而不是“输入合法金额”“选择一张优惠券”这类泛化表达。 +- 预期结果是否同时包含 UI/接口反馈和数据状态变化。 +- 失败后是否能大致定位到前端、后端、规则、数据、异步链路或外部依赖。 + +## 5. 风险场景检查 + +以下高风险场景应按需求实际风险决定是否覆盖,涉及则不应缺失: + +- 金额计算、优惠分摊、退款分摊、实付金额一致性 +- 库存扣减、回滚、超卖、重复扣减 +- 优惠叠加、互斥、门槛校验、适用范围校验 +- 权益发放、核销、回退、重复使用 +- 外部回调、重复通知、延迟通知、补偿重试 +- 角色越权、数据越权、跨门店/跨商家/跨组织访问 + +## 6. 追溯与来源检查 + +- 关键测试点是否能追溯到需求、历史缺陷、漏测清单、营销规则、项目画像或冲突修订。 +- 对历史缺陷补充的用例,`备注` 是否标注了合理来源,例如 `[AI修正: 补充历史缺陷防御]`。 +- 对冲突修订补充的用例,`备注` 是否标注了修正原因,例如 `[AI修正: 冲突修订]`。 + +## 7. 待确认项检查 + +- 是否存在需求缺失、规则冲突、口径不明但被直接当成事实写进用例的情况。 +- 对资金、库存、权限、状态流转、营销规则相关的不确定规则,是否避免了臆造。 +- 待确认项是否写清楚问题、影响范围和建议确认方向。 + +## 8. 优先级检查 + +- P0 是否真正对应核心主流程、核心资损风险或关键状态流转。 +- P1 是否覆盖主要功能、关键异常、重要边界。 +- P2 是否承载次要异常、兼容性、补充性验证,而不是把高风险场景错误下沉到 P2。 + +## 9. 评审结论规则 + +- 若存在阻断项,必须直接修正原文件后再结束。 +- 若存在覆盖盲区但当前需求范围确实不支持,应显式写出原因,不得静默遗漏。 +- 若修正了已有用例或新增了防御用例,应在 `备注` 中保留必要的 `AI修正` 说明。 diff --git a/knowledge_base/01_standards/terminology.md b/knowledge_base/01_standards/terminology.md new file mode 100644 index 0000000..ee25fab --- /dev/null +++ b/knowledge_base/01_standards/terminology.md @@ -0,0 +1,114 @@ +# 业务术语表 + +> 本文件定义了项目中长期稳定、跨商城场景高频出现的核心业务术语。AI 在生成分析、测试点和测试用例时必须优先使用这些词汇,禁止混用口语化同义词。 +> +> 使用原则: +> 1. 先使用本术语表中的标准词。 +> 2. 若需求文档使用了不同但已明确的项目术语,以需求文档为准。 +> 3. 对于行业内存在多种解释的术语,生成结果中应尽量写全称,避免简称歧义。 +> 4. 私域、分销、储值、CRM 等可选领域术语不放在本文件常驻输入中,由流水线按需求内容自动识别后补充加载。 + +## 1. 角色与业务主体 + +- **平台端**: 平台总部或品牌总部使用的管理后台,用于统一管理店铺、商品、营销、订单、会员、数据等能力。 +- **商家端**: 商家、门店、代理商或直营网点使用的经营后台,用于管理本商家可见范围内的商品、订单、营销和资产。 +- **用户端**: C 端消费者使用的前台,包括 App、H5、小程序、PC 商城等购买入口。 +- **店铺**: 面向用户提供商品或服务经营能力的业务主体,可理解为商家经营单元。 +- **门店**: 线下经营或履约单元,可能具备独立库存、独立配送范围、独立核销能力。 +- **供应商**: 提供商品、履约或货源支持的上游主体,可能影响供货价、库存和发货链路。 +- **运营人员**: 负责配置商品、活动、价格、运费、会员权益等后台能力的业务角色。 +- **客服**: 负责处理订单咨询、退款、售后、补单、异常协查等问题的后台角色。 + +## 2. 商品与库存 + +- **SPU**: 标准产品单位,表示一类商品的抽象定义,如“iPhone 15”。 +- **SKU**: 库存量单位,表示商品的最小可售规格,如“iPhone 15 黑色 256G”。 +- **商品规格**: 用于区分 SKU 的销售属性组合,如颜色、尺码、套餐版本。 +- **可售库存**: 当前可用于下单扣减的库存数量,不等于物理库存。 +- **锁定库存**: 用户下单后暂时占用、待支付或待确认释放的库存。 +- **回滚库存**: 订单取消、支付失败或超时关闭后,系统释放此前锁定库存的动作。 +- **超卖**: 实际成功售卖数量超过可售库存的异常情况。 + +## 3. 购物与订单 + +- **购物车**: 用户临时存放待购买商品的列表,不代表价格、库存、优惠结果最终已锁定。 +- **结算页**: 用户提交订单前的确认页面,用于展示最新商品、价格、库存、运费、优惠和实付信息。 +- **提交订单**: 用户确认购买并生成订单的动作,通常意味着进入待支付或待确认状态。 +- **订单**: 用户购买商品或服务形成的业务单据,是支付、履约、退款、售后的核心载体。 +- **子订单**: 拆单后形成的订单明细单元,常见于多商家、多仓、多履约场景。 +- **订单状态**: 订单在生命周期中的阶段标识,如待支付、待发货、待收货、已完成、已取消。 +- **订单关闭**: 因超时未支付、风控失败、系统取消等原因终止订单继续流转。 +- **逆向流程**: 订单创建后的反向处理链路,如取消、退款、退货退款、换货、补偿。 + +## 4. 支付与资金 + +- **待支付订单**: 已成功创建但尚未完成付款的订单状态。 +- **支付单**: 订单在支付环节生成的资金请求单据,用于对接三方支付或内部资金系统。 +- **支付流水**: 记录支付请求、支付结果、渠道单号、金额等信息的资金明细。 +- **支付方式**: 用户完成付款所使用的资金渠道,如微信支付、支付宝、余额、积分抵现。 +- **实付金额**: 用户最终实际支付的金额,通常等于应付金额减去各类可抵扣权益后的结果。 +- **原路退回**: 退款时按原支付方式、原资金路径退还用户资产的处理方式。 +- **挂账**: 订单生成但尚未完成付款,系统已形成应收记录但未完成资金入账的状态。 +- **资损**: 因金额计算错误、优惠错误、重复退款、库存超卖等问题导致平台或商家资产损失。 + +## 5. 营销与优惠 + +- **优惠券**: 可在满足条件时抵扣订单金额或给予折扣的营销权益。 +- **平台券**: 由平台统一发放和承担成本的优惠券,通常作用于平台范围内指定商品、店铺或活动。 +- **商家券**: 由商家或店铺发放和承担成本的优惠券,通常只在指定商家范围内可用。 +- **品类券**: 只对指定商品类目或商品范围生效的优惠券。 +- **满减券**: 订单或商品金额达到门槛后才可生效的优惠券。 +- **折扣券**: 以打折方式生效的优惠券,而非固定金额抵扣。 +- **优惠门槛**: 优惠生效所需满足的条件,如满 100 可减 20。 +- **适用范围**: 某个优惠可生效的商品、类目、店铺、用户、渠道或时间范围。 +- **优惠叠加**: 多种优惠是否允许同时生效的规则。 +- **优惠互斥**: 多种优惠不能同时生效,只能按优先级或选择规则命中其一。 +- **试算**: 在正式提交前,根据当前商品、用户、活动、券、积分等条件预估优惠和实付结果的过程。 +- **优惠分摊**: 将订单级优惠按规则分配到商品、子单、退款项上的计算过程。 +- **一口价**: 以固定成交价覆盖常规价格和营销计算链路的促销方式。 +- **满减送**: 满足金额或件数条件后,给予减价、赠品或附加权益的活动方式。 +- **限时折扣**: 在指定时间内生效的临时价格优惠活动。 +- **秒杀**: 在短时间窗口内以强时效、强库存约束进行的促销活动。 +- **拼团**: 通过多人组团满足条件后生效的营销活动。 + +## 6. 会员与权益 + +- **会员**: 具备等级、成长值、标签、专属价格或专属权益的用户身份。 +- **会员等级**: 用于区分会员权益范围的层级,如普通会员、VIP、SVIP。 +- **会员价**: 针对会员身份生效的专属销售价格或折扣规则。 +- **会员权益**: 会员可享受的专属能力,如会员价、包邮、积分加速、专属券等。 +- **积分**: 可用于兑换、抵现、成长或运营激励的虚拟权益资产。 +- **积分抵现**: 将积分按兑换比例折算为订单可抵扣金额的能力。 +- **余额**: 用户在平台或商家体系内预存或结余的可消费资金。 + +## 7. 履约、售后与核销 + +- **履约**: 订单支付后到商品或服务完成交付之间的执行链路,如发货、配送、自提、到店消费。 +- **发货**: 商家或仓库将商品交给物流或配送体系的动作。 +- **签收**: 用户确认收到商品或系统确认妥投的状态。 +- **售后**: 支付后围绕退款、退货、换货、补寄、补偿等问题展开的处理流程。 +- **整单退款**: 针对订单全部商品和全部已支付金额发起的退款。 +- **部分退款**: 针对订单中的部分商品、部分数量或部分金额发起的退款。 +- **退款分摊**: 在部分退款场景下,将优惠、运费、积分等按规则分配到退款项的过程。 +- **核销**: 对券码、提货码、预约码、订单码等进行校验并确认已消费/已使用的动作,常见于到店自提、到店服务、卡券消费场景。 +- **核销码**: 用于完成核销动作的识别码、二维码、条形码或数字口令。 + +## 8. 风控、权限与系统能力 + +- **风控拦截**: 系统判定交易、账号或操作存在风险后自动阻断继续执行的行为。 +- **权限控制**: 根据角色、数据范围、组织关系等限制用户可见、可操作范围的机制。 +- **越权**: 用户访问或操作了其本不应拥有权限的数据或功能。 +- **幂等性**: 同一业务请求被重复提交时,系统结果保持一致,且不会重复扣款、重复创建、重复退款或重复扣减资源。 +- **并发**: 多个请求或多个用户在同一时间窗口内对同一资源发起操作的情况。 +- **限流**: 为保护系统稳定性,对请求频率或并发量做出的限制。 +- **降级**: 当依赖异常或系统压力过大时,关闭部分非核心能力以保证核心链路可用的处理策略。 +- **回调**: 外部系统处理完成后主动通知本系统结果的机制,常见于支付、退款、物流等链路。 +- **审计日志**: 用于记录关键操作人、操作时间、操作对象和变更结果的可追溯日志。 + +## 9. 术语使用约束 + +- **订单关闭** 与 **退款成功** 不是同义词,关闭订单不代表资金已经退回。 +- **优惠券使用** 与 **核销** 不是同义词;商城下单抵扣通常描述为“使用优惠券”或“优惠券抵扣”,到店消费确认才更常用“核销”。 +- **挂账** 只在涉及应收记录或账务状态时使用;普通商城待支付场景优先写“待支付订单”。 +- **平台券**、**商家券**、**店铺券** 不应混写;若项目内三者含义不同,必须以项目需求或项目画像中的定义为准。 +- **退款**、**退货退款**、**换货**、**售后关闭** 不应混写,生成用例时要按实际逆向类型写全称。 diff --git a/knowledge_base/01_standards/terminology_optional_saas.md b/knowledge_base/01_standards/terminology_optional_saas.md new file mode 100644 index 0000000..252c18f --- /dev/null +++ b/knowledge_base/01_standards/terminology_optional_saas.md @@ -0,0 +1,38 @@ +# 可选业务术语表(SaaS 扩展域) + +> 本文件只在需求文档、项目画像或关联需求明确涉及对应领域时才应纳入上下文。不要将这些术语默认用于所有商城项目。 + +## 1. 渠道、导购与分销 + +- **导购**: 负责客户触达、商品推荐、线索转化或门店服务的经营角色,常见于门店零售和私域运营场景。 +- **导购关系**: 用户与某个导购之间建立的归属或服务关系,常影响业绩归因、客户分配和权限范围。 +- **分销员**: 参与商品推广并按规则获得佣金的推广角色,可能是员工、店主、团长或普通用户。 +- **推广员**: 泛指承担推广职责并按规则归因或结算收益的角色,不一定等同于分销员。 +- **佣金**: 按推广、成交、拉新等规则计算并结算给导购、分销员或渠道方的收益。 +- **佣金结算**: 按订单状态、售后状态、结算周期等规则确认佣金是否可提现、可结算的过程。 +- **渠道活码**: 用于区分投放渠道、推广来源或归属关系的可追踪二维码/链接能力。 + +## 2. 会员资产与储值 + +- **储值余额**: 用户预先充值后留存在平台或商家体系中的可消费余额。 +- **礼品卡**: 预付型权益资产,可按卡号、卡密或账户绑定方式消费或抵扣。 +- **会员储值**: 面向会员体系提供的充值、赠送、消费、退款、冻结、解冻等余额管理能力。 +- **赠送金额**: 商家在储值、活动或运营场景下额外发放给用户的不可提现或有限制可用金额。 +- **可用余额**: 当前允许参与消费、抵扣或退款计算的余额,不一定等于账户总余额。 +- **冻结余额**: 因退款、风控、提现审核或待确认交易而暂时不可用的余额。 + +## 3. 私域客户与 CRM + +- **企微客户**: 通过企业微信建立联系并沉淀在私域中的客户对象。 +- **客户标签**: 用于识别客户属性、分层、偏好、生命周期的标签集合。 +- **客户分群**: 按标签、行为、渠道、消费能力等规则聚合出的客户集合。 +- **客户归属**: 客户在组织、门店、导购、渠道之间的归属关系,常影响可见范围和业绩归因。 +- **生命周期**: 客户从拉新、激活、转化、复购到流失或召回的阶段划分。 +- **召回活动**: 面向沉默、流失或未转化客户进行再次触达和转化的运营活动。 +- **社群**: 围绕微信、企微或其他私域载体形成的客户经营集合,常关联群发、标签、活动、导购归属。 + +## 4. 使用约束 + +- **导购**、**分销员**、**推广员**、**渠道** 不应默认视为同一角色,必须按项目组织关系和结算规则区分。 +- **储值余额**、**赠送金额**、**礼品卡余额** 不应混写;三者通常具有不同的消费、退款、提现和过期规则。 +- **企微客户**、**会员**、**普通用户** 不一定是同一身份对象;若项目中存在账号打通或未打通,必须以需求定义为准。 diff --git a/knowledge_base/01_standards/test_case_template.md b/knowledge_base/01_standards/test_case_template.md new file mode 100644 index 0000000..4ed6af5 --- /dev/null +++ b/knowledge_base/01_standards/test_case_template.md @@ -0,0 +1,87 @@ +# 测试用例编写规范 + +## 1. 用例结构标准 +所有生成的测试用例必须遵循以下字段结构: + +| 字段 | 说明 | 示例 | +| :--- | :--- | :--- | +| **用例编号** | 唯一标识,建议使用稳定英文缩写,格式 `端_模块_子模块_编号` | `PLT_MKT_MC_001` | +| **模块** | 功能归属模块,建议使用层级路径表达 `端-一级模块-二级模块` | `平台端-营销管理-商家优惠券` | +| **用例标题** | 简明扼要,动宾结构 | `验证使用有效优惠券下单成功` | +| **优先级** | P0(核心流程), P1(主要功能), P2(次要/异常) | `P0` | +| **类型** | 用例类型,必须使用团队枚举 | `功能测试` | +| **前置条件** | 执行前必须满足的状态 | `用户已登录,购物车有商品` | +| **测试步骤** | 分步骤描述操作,清晰无歧义 | `1. 点击结算 2. 选择优惠券` | +| **测试数据** | 具体的输入数据(如有) | `优惠券码: TEST100` | +| **预期结果** | 对应步骤的系统反馈,包含 UI 和数据 | `1. 订单金额减少100元 2. 跳转支付页` | +| **备注** | 待确认项、历史缺陷来源或 AI 修正说明 | `[AI修正: 补充历史缺陷防御场景]` | + +## 2. 编写原则 +- **原子性**:一个用例只验证一个主要功能点。 +- **独立性**:用例之间尽量不依赖(除前置条件外)。 +- **可重复性**:预期结果必须明确,不能模棱两可。 +- **可追溯性**:每条用例应能追溯到需求条目、历史缺陷或团队规则。 + +## 3. 类型字段规范 + +- `类型` 必须从以下枚举中选择其一: + - `功能测试` + - `性能测试` + - `兼容性测试` + - `易用性测试` + - `安全性测试` + - `冒烟测试` + - `回归测试` + - `其他` +- 默认优先使用 `功能测试`,不要滥用 `其他`。 +- 涉及权限绕过、抓包篡改、越权访问、敏感数据校验的场景,优先标记为 `安全性测试`。 +- 涉及 RT、吞吐、并发容量、性能基线的场景,标记为 `性能测试`。 +- 核心链路首轮冒烟验证可标记为 `冒烟测试`。 +- 来自历史缺陷或确认后的重点回归链路,可标记为 `回归测试`。 + +## 4. 模块字段规范 + +- **推荐层级**:`端-一级模块-二级模块`,必要时可扩展到 `端-一级模块-二级模块-功能点`。 +- **推荐示例**: + - `平台端-营销管理-平台优惠券` + - `平台端-营销管理-商家优惠券` + - `商家端-营销活动-商家优惠券` + - `用户端-下单结算-平台券使用` +- **生成规范**:Markdown 表格中的 `模块` 列统一写 `-` 连接的层级路径,不直接写 `|`,避免表格分列风险。 +- **读取与导出规范**:脚本在读取 Markdown 和导出 Excel 时,会将模块路径自动标准化为 `|` 连接形式,例如: + +```text +平台端-营销管理-商家优惠券 +-> 平台端|营销管理|商家优惠券 +``` + +- **兼容说明**:历史数据如果已经使用 `平台端\|营销管理\|商家优惠券` 或 `平台端|营销管理|商家优惠券`,当前脚本仍可兼容读取。 +- **编号建议**:`用例编号` 不要直接使用中文模块路径,建议使用稳定英文缩写,例如: + +```text +PLT_MKT_PC_001 # 平台端|营销管理|平台优惠券 +PLT_MKT_MC_001 # 平台端|营销管理|商家优惠券 +MCH_MKT_MC_001 # 商家端|营销活动|商家优惠券 +``` + +## 5. 唯一表头 + +最终 Markdown 表格必须严格使用以下表头顺序: + +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | + +## 6. 云效导出映射 + +- Excel 导出默认按团队云效字段模型输出: + - `标题` + - `编号` + - `目录` + - `创建时间` + - `前置条件` + - `步骤描述` + - `预期结果` + - `优先级` + - `类型` + - `URL` +- Markdown 中的 `测试数据` 会在导出时自动并入 `步骤描述`,避免字段丢失。 diff --git a/knowledge_base/02_history/common_missed_scenes.md b/knowledge_base/02_history/common_missed_scenes.md new file mode 100644 index 0000000..e88475d --- /dev/null +++ b/knowledge_base/02_history/common_missed_scenes.md @@ -0,0 +1,43 @@ +# 容易漏测场景清单 + +> AI 在生成测试点时,**必须**对照此清单进行自我检查,确保没有遗漏以下场景: + +### 1. 数据与边界 +- [ ] **空值/Null**:输入框为空、接口返回 null 时,页面是否崩溃。 +- [ ] **超长字符**:输入超过数据库字段长度的字符(如 256 个字符)。 +- [ ] **特殊字符**:Emoji 表情、SQL 注入字符、HTML 标签。 +- [ ] **金额精度**:金额计算是否出现 `0.0000001` 的精度丢失问题(特别是分期计算)。 + +### 2. 网络与交互 +- [ ] **弱网/断网**:提交请求瞬间断网,是否有重试机制或友好提示。 +- [ ] **重复提交**:快速多次点击“提交”按钮(防抖/幂等性检查)。 +- [ ] **超时处理**:接口响应超过 30 秒,前端是否有 Loading 状态或超时提示。 +- [ ] **页面切换**:在支付密码输入页切换到后台再切回,是否保留状态。 + +### 3. 状态流转 +- [ ] **逆向流程**:支付后退款、下单后取消、发货后退货、定金转退。 +- [ ] **并发操作**:同一账号在两个设备同时操作;库存仅剩 1 件时两人同时购买。 + +### 4. 车企商城特有业务 +- [ ] **VIN 码校验**:输入已售 VIN、错误格式 VIN、大小写混用。 +- [ ] **配置器互斥**:选择 A 配件后,B 配件是否自动置灰(如轮毂与轮胎的匹配)。 +- [ ] **价格变动**:用户加购后,后台修改价格,结算页是否实时刷新。 +- [ ] **权益叠加**:车主积分、推荐奖励、官方优惠券三者是否违规叠加。 + +### 5. 账号与权限 +- [ ] **多端登录**:同一账号在手机 App 和 车机端 同时登录,状态是否同步。 +- [ ] **未登录访问**:直接通过 URL 访问订单详情页,是否拦截跳转登录。 +- [ ] **隐私授权**:首次使用未点击“同意隐私协议”,是否禁止调用定位/相机权限。 + +### 6. 中后台 CRUD 页面 +- [ ] **列表字段**:列表页展示字段、默认排序、分页项是否与需求一致。 +- [ ] **查询重置**:搜索、筛选、重置、空结果提示是否完整。 +- [ ] **查看只读**:查看态是否真正不可编辑,避免与编辑态混淆。 +- [ ] **正向成功链路**:不要只测“保存失败/限制条件”,还要覆盖新建成功、编辑成功。 +- [ ] **状态与按钮映射**:不同状态下操作栏按钮是否正确展示,是否存在越权或错态操作。 +- [ ] **端间数据隔离**:平台端、商家端、门店端配置数据是否真正隔离,避免串数。 +- [ ] **选择弹窗细粒度**:商品/优惠券/奖品选择弹窗的刷新、搜索、分页、排序、选择反馈是否完整。 + +### 7. C 端资格与展示状态 +- [ ] **状态拆分**:未开始、进行中、已结束、已失效是否分别验证,而不是合并成一个模糊负向场景。 +- [ ] **门店老用户**:店铺维度老用户不弹窗是否单独覆盖,避免只校验平台维度老用户。 diff --git a/knowledge_base/02_history/historical_defects.md b/knowledge_base/02_history/historical_defects.md new file mode 100644 index 0000000..d0b1e93 --- /dev/null +++ b/knowledge_base/02_history/historical_defects.md @@ -0,0 +1,63 @@ +# 历史典型缺陷复盘 + +> 这些是过去项目中发生过的真实 Bug,生成新用例时,请针对这些逻辑设计防御性测试用例。 + +### 缺陷 ID: BUG-202310-05 +- **模块**: 购物车 +- **描述**: 商品降价后加入购物车,随后商品恢复原价,结算时依然按降价后的价格计算,导致资损。 +- **根因**: 购物车缓存了价格,结算时未重新从商品中心获取最新价格。 +- **防御用例**: `验证商品加入购物车后,后台修改价格,结算时系统自动更新为最新价格`。 + +### 缺陷 ID: BUG-202311-12 +- **模块**: 优惠券 +- **描述**: 使用“满100减50”优惠券购买 100 元商品,退货时未扣除优惠金额,导致用户获利。 +- **根因**: 退款逻辑未考虑优惠分摊。 +- **防御用例**: `验证使用优惠券购买多件商品后,部分退款时优惠金额按比例扣除`。 + +### 缺陷 ID: BUG-202312-07 +- **模块**: 下单接口 +- **描述**: 调用下单接口时,通过篡改请求参数,将商品数量改为负数,系统未做边界校验,使订单总金额变为负数,用户支付后平台产生负向应收,造成资损。 +- **根因**: 下单接口对商品数量仅做了非空校验,未校验正整数及防止整数溢出。 +- **防御用例**: `验证调用下单接口时,传入商品数量为 0、负数、超大整数(如 9999999)时,系统均能拦截并返回错误码,不生成有效订单`。 + +### 缺陷 ID: BUG-202401-15 +- **模块**: 支付网关 +- **描述**: 用户下单时选择“普通订单”(应付金额 100 元),在调起支付前通过抓包修改支付接口请求参数,将支付类型从“微信支付”改为“全额积分支付”。由于后端未校验订单原始支付方式,积分系统扣除了用户 100 积分(1 积分=1 元),用户实际未付现金即获得商品。日损失积分资产超 10 万。 +- **根因**: 支付接口仅校验了用户积分余额是否充足,未与订单核心表中的支付方式快照做一致性校验。 +- **防御用例**: `验证下单时选择现金支付,支付阶段强制改为积分支付或余额支付时,后端应校验请求支付方式与订单生成时记录的支付方式一致,不一致则拒绝支付`。 + +### 缺陷 ID: BUG-202401-22 +- **模块**: 并行扣减 +- **描述**: 秒杀活动中,用户通过多线程并发调用下单接口(同一商品 ID,同一用户),由于缺少分布式锁或乐观锁,导致同一件商品被同一用户成功下单 3 次,库存扣减超出实际售卖数量,产生超卖资损。 +- **根因**: 库存扣减 SQL 为 `update stock set count = count - 1 where product_id = ?`,未使用 `and count > 0` 条件,且业务层未做幂等和并发控制。 +- **防御用例**: `验证同一用户对同一限购商品发起 10 次并发下单请求,最终只成功创建 1 个订单,库存扣减 1 件`。 + +### 缺陷 ID: BUG-202402-03 +- **模块**: 价格计算 +- **描述**: 商品 A 单价 50 元,参与“满 2 件打 8 折”活动。用户将 1 件加入购物车,下单前活动变更为“满 3 件打 7 折”,但前端仍展示旧折扣,提交订单时后端沿用旧活动的价格计算规则,导致用户少付。 +- **根因**: 后端未在订单入库前重新计算促销活动价格,而是信任前端传入的活动 ID 和已优惠金额。 +- **防御用例**: `验证商品促销活动变更后,用户使用旧的活动 ID 提交订单,系统应抛弃前端传入的优惠信息,强制重新计算最新活动价格`。 + +### 缺陷 ID: BUG-202402-18 +- **模块**: 退款/逆向流程 +- **描述**: 用户使用混合支付(现金 80 元 + 余额 20 元)购买 100 元商品。申请全额退款时,退款逻辑先调用余额退款接口(退还 20 元),然后调用现金退款接口(退还 80 元)。但现金退款接口因网络超时返回失败,系统记录退款失败,但实际上余额的 20 元已退给用户,用户凭空获利。 +- **根因**: 退款流程未使用分布式事务或 TCC 模式,分步调用外部接口出现部分成功时无法回滚。 +- **防御用例**: `验证混合支付全额退款时,若现金退款接口调用失败,系统应能自动回滚已退的余额部分,或保持整体失败状态,绝不出现部分退款成功`。 + +### 缺陷 ID: BUG-202403-11 +- **模块**: 价格篡改 +- **描述**: 用户将商品加入购物车后,通过浏览器开发者工具修改页面中某个商品的“单价” DOM 元素(从 100 改为 0.01),提交订单时后端未校验单价,直接使用前端传回的 0.01 元创建支付单,用户以 1 分钱买走商品。 +- **根因**: 下单接口设计时错误地将商品单价作为可信任的入参,未从商品中心重新获取真实单价。 +- **防御用例**: `验证所有与金额、价格、数量相关的核心字段(单价、总价、运费等)均不能信任前端传入,下单时后端必须独立从商品库/价格服务中重新获取并计算`。 + +### 缺陷 ID: BUG-202403-20 +- **模块**: 重复支付 +- **描述**: 用户在支付网关点击“确认支付”按钮后,由于网络延迟前端未收到回调,用户连续点击 3 次,系统生成了 3 个相同的支付请求(同一订单号),三方支付渠道返回 3 个不同的交易单号,且订单系统最终对同一订单进行了 3 次金额累加,多收了用户 2 份钱。 +- **根因**: 支付接口未做幂等性校验,允许同一订单号多次发起支付请求并修改订单状态。 +- **防御用例**: `验证同一订单号在 1 秒内收到 5 次相同支付请求,后端仅处理第一次请求,后续请求直接返回“处理中”或“重复请求”,订单状态不被多次累加`。 + +### 缺陷 ID: BUG-202404-02 +- **模块**: 积分与现金互转 +- **描述**: 活动期间积分可抵扣现金(100 积分 = 1 元)。用户下单时使用 5000 积分抵扣 50 元,订单总金额 100 元,实付 50 元。后续用户申请全额退款,系统退还了 5000 积分 + 50 元现金,相当于积分被重复退还(原积分未核销),用户用 0 成本套取 50 元现金。 +- **根因**: 退款时未先扣回已使用的积分(或积分已被消耗),而是直接重新发放等额积分。 +- **防御用例**: `验证使用积分抵扣部分现金后,申请退款时应先原路返还积分(若积分未过期)或按比例折算成现金,确保平台不产生额外资产损失`。 \ No newline at end of file diff --git a/knowledge_base/02_history/marketing_rules.md b/knowledge_base/02_history/marketing_rules.md new file mode 100644 index 0000000..c4ce60a --- /dev/null +++ b/knowledge_base/02_history/marketing_rules.md @@ -0,0 +1,62 @@ +# 营销叠加互斥规定 + +> 核心业务规则,生成用例时**严禁**违反以下逻辑(以 `/zanmall_order/order/confirm` + `/zanmall_order/order/submit` 当前代码为准): + +1. **优惠券规则(作用域互斥)**: + - 同一作用域(同店铺券池 / 平台券池)一次只会生效 **1 张券**,不可多张叠加。 + - 平台券与店铺券可同时生效(前提各自命中可用条件)。 + - 套餐商品(`comboId > 0`)不参与优惠券分摊。 +2. **优先级逻辑**: + - 用户未手动指定优惠券(`userChangeCoupon != 1`)时,系统默认选择**优惠金额最大**的可用券。 + - 用户手动指定(`userChangeCoupon = 1`)时,仅按传入 `couponIds` 选择;也可手动不使用优惠券。 +3. **积分与优惠券关系**: + - 普通订单中,**优惠券可与积分抵现叠加**(积分开关开启且 `isScorePay = 1`)。 + - 积分在会员权益阶段之后计算,提交时会单独锁积分。 +4. **一口价互斥**: + - 命中一口价(`fixedPriceId != null`)时,不走平台券、会员折扣、积分抵现链路。 + - 一口价会重算店铺金额并覆盖此前店铺侧优惠计算结果,不与常规营销链路叠加。 +5. **满减送互斥**: + - 满减送对以下商品组直接跳过:已命中旧满减、拼团/秒杀/积分类商品、限时折扣、一口价、套餐。 +6. **会员折扣链路差异(配置项)**: + - 会员价开关关闭(legacy)时:会员折扣可继续叠加在已优惠商品上。 + - 会员价开关开启(hybrid)时:已命中营销活动或已使用优惠券的商品不再叠加会员折扣。 +7. **运费规则**: + - 运费按“店铺 + 运费模板(含供应商维度)”计算后累加。 + - 包邮只作用于命中的模板或模板条件,不是“只要有一件包邮就全单免邮”。 +8. **确认单链路顺序(普通路径)**: + - 先计算店铺侧营销(折扣/套餐、满减、店铺券等),再处理平台券,再处理会员与积分,再汇总运费。 + - 若命中一口价,直接进入一口价分支并覆盖店铺金额,不再进入平台券+会员+积分常规链路。 +9. **提交单锁定规则**: + - 提交单阶段不会重新“试算”营销组合,按确认单结果执行资源锁定。 + - 优惠券、积分分别在提交阶段单独锁定,确保与确认单结果一致。 + +## 关系速查(按当前接口逻辑) + +| 活动A | 活动B | 关系 | 条件说明 | +| --- | --- | --- | --- | +| 优惠券 | 优惠券(同作用域) | ❌ | 同一券池仅生效 1 张 | +| 平台券 | 店铺券 | ✅ | 分池计算,可同时生效 | +| 优惠券 | 套餐商品 | ⬇️ | 套餐商品不参与券分摊,非套餐可用券 | +| 优惠券 | 积分抵现 | ✅ | 积分开关开启且 `isScorePay=1` 时可叠加 | +| 会员折扣 | 优惠券 | ⬇️ | legacy 可叠加;hybrid 对已用券商品不叠加 | +| 满减送 | 旧满减/限时折扣/套餐/一口价/拼团秒杀积分类 | ❌(同商品组) | 命中互斥条件即跳过满减送 | +| 一口价 | 平台券 | ❌ | 一口价分支跳过平台券链路 | +| 一口价 | 会员折扣 | ❌ | 一口价分支跳过会员链路 | +| 一口价 | 积分抵现 | ❌ | 积分在会员链路内计算,一口价整体跳过 | +| 一口价 | 店铺侧营销结果(满减/店铺券/套餐) | ❌(覆盖) | 一口价重算并覆盖此前店铺优惠汇总 | +| 提交阶段 | 优惠券锁定 | 执行 | 按确认单结果锁券 | +| 提交阶段 | 积分锁定 | 执行 | 按确认单结果锁积分 | +| 运费 | 包邮模板 | ⬇️ | 按店铺+模板累加;仅命中模板免运费 | + +## 符号定义 + +- `✅`:可叠加(同一条 confirm 链路会连续生效,且无显式跳过/覆盖) +- `❌`:互斥(代码显式跳过,或后置计算覆盖前置结果) +- `⬇️`:条件叠加(依赖配置开关、活动命中、商品类型、券作用域等) + +## 可配置项(影响叠加结果) + +- `memberPriceSwitchConfig(enabled/failOpenLegacy)`:控制会员折扣走 legacy 还是 hybrid。 +- `SCORE_CONFIG(shoppingScoreSwitch/useRatioLimit/shoppingUseScoreRatio)`:控制积分抵现开关、比例与上限。 +- `会员权益 rightsType/freeFeeType`:控制会员包邮是否命中。 +- `userChangeCoupon + couponIds`:控制是否手动指定优惠券。 diff --git a/knowledge_base/03_best_practices/marketing_activity_cases.md b/knowledge_base/03_best_practices/marketing_activity_cases.md new file mode 100644 index 0000000..c92fe3a --- /dev/null +++ b/knowledge_base/03_best_practices/marketing_activity_cases.md @@ -0,0 +1,52 @@ +# 营销活动类优秀用例范式 + +> 适用于平台端/商家端活动配置、列表管理、状态流转、C 端资格展示与领取发放类需求。 +> 重点不是照抄标题,而是学习以下覆盖结构:后台正向成功链路、后台失败/限制链路、选择弹窗交互、端间数据隔离、C 端状态拆分、领取幂等与并发。 + +## 推荐覆盖框架 + +1. 后台列表能力 +- 列表字段 +- 默认排序与分页 +- 搜索、筛选、重置、空结果提示 +- 状态与操作栏映射 + +2. 后台配置能力 +- 新建成功 +- 编辑成功 +- 时间/名称/奖品等失败态 +- 失效、删除、查看只读 + +3. 选择弹窗能力 +- 刷新 +- 搜索 +- 字段展示 +- 分页 +- 排序 +- 单选/多选反馈 +- 数据归属范围 + +4. C 端资格与展示 +- 进行中时展示 +- 未开始/已结束/已失效分别不展示 +- 老用户/未登录分别不展示 +- 奖品展示与后台一致 +- 广告等弹窗优先级 + +5. 发放与稳健性 +- 领取成功 +- 幂等防重 +- 超时重试 +- 并发领取 +- 失败日志 +- 端间/角色间隔离 + +## 示例用例 + +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| MKT_ACT_001 | 平台端-营销管理-活动配置 | 验证平台端新建合法营销活动可保存成功 | P0 | 功能测试 | 平台运营账号已登录;存在 1 个符合条件的活动资源;当前无时间冲突活动 | 1. 点击新建活动
2. 填写活动名称、时间、资源配置
3. 点击确定保存
4. 返回列表并进入详情查看 | 活动名称=春季促销;开始时间=明天 10:00;结束时间=后天 10:00 | 1. 页面提示创建成功
2. 列表新增活动记录且字段展示正确
3. 详情页展示与保存内容一致
4. 后台主表和资源明细表正确落库 | 示例 | +| MKT_ACT_002 | 平台端-营销管理-资源选择弹窗 | 验证资源选择弹窗支持刷新搜索分页排序和单选反馈 | P1 | 功能测试 | 平台运营账号已登录;资源池存在多条可用与不可用资源 | 1. 打开资源选择弹窗
2. 点击刷新
3. 按名称搜索
4. 切换分页和排序
5. 选择 1 条资源并确认返回 | 关键字=春季;分页项=10/20;目标资源=RES_1001 | 1. 刷新、搜索、分页、排序行为正确
2. 列表字段展示完整
3. 不符合条件资源不可选或不展示
4. 选中后页面正确回填资源信息 | 示例 | +| MKT_ACT_003 | 商家端-营销管理-活动列表 | 验证商家端列表字段和状态按钮映射正确 | P1 | 功能测试 | 商家端存在未开始、进行中、已结束、已失效四类活动;商家账号已登录 | 1. 进入活动列表
2. 逐条核对活动字段和操作栏
3. 对比不同状态按钮 | 活动A=未开始;活动B=进行中;活动C=已结束;活动D=已失效 | 1. 列表字段完整且内容正确
2. 未开始/进行中/已结束/已失效的操作按钮按规则展示
3. 不出现错态按钮或越权操作入口 | 示例 | +| MKT_ACT_004 | 用户端-首页-活动弹窗 | 验证活动未开始时首页不展示活动弹窗 | P1 | 功能测试 | 存在 1 条未开始活动;用户满足基础资格;当前无其他进行中活动 | 1. 用户进入首页
2. 观察首页弹窗
3. 查询资格检查结果 | 活动开始时间=当前时间后 1 小时 | 1. 首页不展示活动弹窗
2. 资格检查返回无可领取活动或活动未开始
3. 页面不提前曝光活动入口 | 示例 | +| MKT_ACT_005 | 用户端-首页-活动领取 | 验证同一用户重复点击领取时仅成功一次 | P0 | 回归测试 | 用户满足资格;存在进行中活动;前端可模拟快速重复点击 | 1. 打开活动弹窗
2. 1 秒内连续点击领取 3 次
3. 查询权益结果和发放日志 | 用户ID=USER_1001;重复点击次数=3 | 1. 页面最多提示 1 次成功
2. 用户仅获得 1 份权益
3. 发放日志仅有 1 条成功记录
4. 其余请求被幂等拦截 | 示例 | diff --git a/knowledge_base/03_best_practices/payment_flow_cases.md b/knowledge_base/03_best_practices/payment_flow_cases.md new file mode 100644 index 0000000..98efe4b --- /dev/null +++ b/knowledge_base/03_best_practices/payment_flow_cases.md @@ -0,0 +1,9 @@ +# 支付模块优秀用例范例 + +> 请参考以下用例的颗粒度、数据具体化方式以及“UI + 数据状态”双重预期写法。 + +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| PAY_01_001 | 用户端-交易链路-支付 | 验证正常支付流程成功 | P0 | 冒烟测试 | 用户已登录,购物车存在可售商品 | 1. 选择商品点击购买
2. 在收银台选择支付宝支付
3. 完成支付授权 | 用户A;商品SKU-001;支付方式=支付宝 | 1. 页面跳转支付渠道并返回成功页
2. 订单状态变更为“待发货”
3. 支付流水生成且金额与订单实付一致 | 示例 | +| PAY_01_002 | 用户端-交易链路-支付 | 验证支付超时后订单自动取消 | P1 | 功能测试 | 用户已登录,已成功创建待支付订单 | 1. 进入待支付订单详情页
2. 不做支付,等待 30 分钟 | 订单号=ORDER-10001 | 1. 页面提示订单已超时取消
2. 订单状态变更为“已取消”
3. 预占库存回滚 | 示例 | +| PAY_01_003 | 用户端-交易链路-支付 | 验证支付渠道返回余额不足时可切换支付方式 | P1 | 功能测试 | 用户已登录,存在待支付订单 | 1. 选择银行卡支付
2. 模拟支付渠道返回“余额不足”
3. 切换到支付宝支付 | 订单号=ORDER-10002;银行卡返回码=BALANCE_NOT_ENOUGH | 1. 页面提示余额不足
2. 订单仍保持待支付状态
3. 用户可继续选择其他支付方式完成支付 | 示例 | diff --git a/output/analysis/新人礼需求_关联与冲突.md b/output/analysis/新人礼需求_关联与冲突.md new file mode 100644 index 0000000..a7ac99b --- /dev/null +++ b/output/analysis/新人礼需求_关联与冲突.md @@ -0,0 +1,16 @@ +# 新人礼需求 关联需求与冲突检查 + +## 目标需求 +- `source_docs/requirements_raw/新人礼需求.docx` + +## 项目画像 +- `knowledge_base/00_project/project_profile.md` + +## 关联技术方案 +- `source_docs/technical_solutions/新人礼技术方案.docx` + +## 关联需求识别 +- 未识别到相似度达到阈值的历史需求文档。 + +## 潜在冲突与修改建议 +- 暂未识别到明显冲突条目。建议在需求评审时继续人工确认。 diff --git a/output/analysis/新人礼需求_分析.md b/output/analysis/新人礼需求_分析.md new file mode 100644 index 0000000..9b9a25d --- /dev/null +++ b/output/analysis/新人礼需求_分析.md @@ -0,0 +1,111 @@ +# 新人礼需求分析 + +## 背景与目标 + +本期需求围绕“新人礼”活动能力建设,目标是在平台端和商家端支持配置新人礼活动,并在 C 端针对符合新人条件的用户展示领取入口与发放优惠券奖励,提升新注册用户的首单转化。 + +技术方案补充了两个关键限制: + +- 同一时间仅允许存在 1 个进行中的新人礼活动。 +- 每个新人礼活动仅允许绑定 1 张优惠券,发放结果需落新人礼发放记录表。 + +## 范围与边界 + +### 范围内 + +- 平台端“营销-新人有礼”列表、查询、新建、编辑、查看、失效、删除。 +- 商家端“营销-新人有礼”同构能力。 +- 新人礼活动配置字段校验:活动名称、活动时间、活动奖品、优惠券选择。 +- 优惠券选择范围控制:平台端仅选平台券,商家端仅选本店铺优惠券。 +- C 端首页和门店首页的新人礼弹窗检查与领取。 +- 发放成功后的优惠券入账和发放记录落库。 +- `ua/newGift/check` 与 `ua/newGift/send` 对应的资格校验和发放行为。 + +### 范围外 + +- 积分类型新人礼,需求和技术方案均明确“暂不支持”。 +- 下单后退款再重新认定为新人场景,技术方案明确“暂不支持下单后退款场景”。 +- 多奖品、多券组合、多人拼抢同一活动池等扩展玩法。 + +## 用户角色与前置条件 + +- 平台运营:维护平台维度新人礼活动。 +- 商家运营:维护店铺维度新人礼活动。 +- C 端用户:登录后触发首页或门店首页新人礼检查与领取。 +- 后端系统:负责活动状态判断、资格校验、优惠券发放、发送日志写入。 + +前置条件: + +- 已存在投放中、未过期、领取方式为“用户领取”的优惠券。 +- 用户已登录,且能获取平台维度与店铺维度的历史下单信息。 +- 发券接口可用,优惠券中心返回的券状态准确。 + +## 关键业务规则 + +1. 平台端和商家端都可以配置新人礼活动,但优惠券范围必须与端侧归属一致。 +2. 活动名称最多 50 个字。 +3. 活动开始时间必须大于等于当前时间,结束时间必须大于开始时间。 +4. 活动奖品当前仅支持优惠券,且每个活动仅能关联 1 张优惠券。 +5. 平台维度同一时间仅允许 1 个进行中的平台新人礼活动;店铺维度同一时间每个店铺仅允许 1 个进行中的门店新人礼活动。 +6. 新人判定按订单提交结果范围判断:平台新人礼查询平台范围订单,店铺新人礼查询当前店铺订单;若用户从未提交过订单,或历史订单最终状态均为交易关闭(包括未支付取消、超时未付、已退款订单等),仍视为新人。 +7. 用户登录首页时,若存在进行中的新人礼活动且用户未领取过,则展示新人礼弹窗。 +8. 门店首页只对门店新人展示门店新人礼弹窗。 +9. 若同时存在弹窗广告,新人礼弹窗必须先于广告弹窗展示。 +10. 用户点击立即领取成功后,奖励进入“我的优惠券”,同时写入新人礼发放记录。 +11. 活动“已结束”和“已失效”并存时,页面优先展示“已失效”。 +12. 活动失效后状态展示为“已失效”,并支持后续删除。 +13. 用户领取平台新人礼后,若仍满足门店新人条件,允许继续领取门店新人礼。 + +## 主流程描述 + +1. 运营在平台端或商家端进入“营销-新人有礼”列表页。 +2. 运营新建活动,填写活动名称、活动时间并选择 1 张符合条件的优惠券。 +3. 系统校验时间、优惠券范围、优惠券状态和活动并存规则,保存活动。 +4. 活动进入“未开始”或“进行中”状态,列表页按状态展示可操作按钮。 +5. C 端用户登录平台首页或门店首页时,调用资格检查接口。 +6. 若存在进行中的匹配活动且用户符合新人条件且未领取过,则展示新人礼弹窗。 +7. 用户点击“立即领取”,系统发放优惠券并记录发放日志。 +8. 发放成功后,用户可在个人中心优惠券列表查看奖励。 + +## 跨需求关联与冲突修订建议 + +- 当前未识别到需要纳入本次评审的关联需求,也未发现需要基于历史需求执行的规则冲突修订。 +- 当前无需对历史需求做口径覆盖修订,但仍需重点防御营销类公共风险: + - 重复点击导致重复发放。 + - 前端传参篡改导致越权选券或跨店铺发券。 + - 状态变更与页面展示不一致。 + +## 技术方案补充约束 + +- `ua/newGift/check` 负责资格检查,应重点验证平台维度和店铺维度“新人”判定口径。 +- `ua/newGift/send` 负责发券,应重点验证幂等、防重复领取、失败原因记录和成功落库。 +- 数据模型拆分为主表、礼物关联表、发放记录表,说明测试不能只看页面成功提示,还要覆盖: + - `new_gift` 主表活动状态和有效性字段。 + - `new_gift_detail` 活动与券的绑定关系。 + - `new_gift_send_log` 发放成功或失败记录。 +- 技术目标给出用户响应 RT 1000ms,应至少对资格检查和领取动作补充性能基线关注。 + +## 产品确认口径 + +- 活动并存范围:平台维度同一时间仅允许 1 条进行中的平台活动;店铺维度同一时间每个店铺仅允许 1 条进行中的门店活动。 +- 新人判定口径:若用户从未提交过订单,或历史订单最终状态均为交易关闭(包括未支付取消、超时未付、已退款订单),仍视为新人。 +- 状态展示优先级:活动“已结束”和“已失效”并存时,优先展示“已失效”。 +- 平台礼与门店礼关系:用户已领取平台新人礼后,只要满足门店新人条件,仍允许领取门店新人礼。 + +## 项目差异化测试约束 + +- 平台端、商家端、C 端是三套角色链路,必须覆盖角色隔离和数据隔离。 +- 这是典型营销发券能力,需重点覆盖越权选券、重复发放、状态错发和资损场景。 +- 预期结果必须同时覆盖 UI 反馈和后台状态变化,特别是活动状态、券领取结果、发放日志。 + +## 风险点与确认结果 + +- 风险点:重复点击“立即领取”或接口重试导致同一用户重复发放优惠券。 +- 风险点:商家端错误选择了其他店铺的优惠券,导致跨店资损或越权发券。 +- 风险点:活动失效、已结束、已删除三个状态口径不清,可能导致列表按钮和实际行为不一致。 +- 风险点:平台新人和店铺新人的判定依赖历史订单数据,若口径不清,容易误发或漏发。 +- 风险点:同一时间仅允许 1 个进行中的活动,如果平台端和商家端同时配置活动,范围口径不清会导致规则冲突。 +- 确认结果:平台端和商家端活动可以并存,但约束粒度为“平台一条、每店铺各一条”。 +- 确认结果:未支付取消、超时未付、已退款等最终交易关闭单据不影响新人资格。 +- 确认结果:活动“已结束”和“已失效”同时成立时,页面优先展示“已失效”。 +- 确认结果:已领取平台新人礼的用户,若满足门店新人条件,仍允许继续领取门店新人礼。 diff --git a/output/manifests/新人礼需求.json b/output/manifests/新人礼需求.json new file mode 100644 index 0000000..b8765a1 --- /dev/null +++ b/output/manifests/新人礼需求.json @@ -0,0 +1,56 @@ +{ + "requirement": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/requirements_raw/新人礼需求.docx", + "requirement_source_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/requirements_raw/新人礼需求.docx", + "requirement_input_type": "docx", + "base_name": "新人礼需求", + "normalized_requirement_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/normalized_inputs/新人礼需求/requirement.md", + "technical_solution_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/technical_solutions/新人礼技术方案.docx" + ], + "normalized_technical_solution_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/normalized_inputs/新人礼需求/technical_solution_01.md" + ], + "analysis_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/analysis/新人礼需求_分析.md", + "relation_report_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/analysis/新人礼需求_关联与冲突.md", + "test_points_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/test_points/新人礼需求_测试点.md", + "test_cases_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/test_cases/新人礼需求_测试用例.md", + "excel_output_dir": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/excel_reports", + "project_profile_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/00_project/project_profile.md", + "knowledge_base_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/terminology.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/test_case_template.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/definition_of_done.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/review_checklist.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/common_missed_scenes.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/historical_defects.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/marketing_rules.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/03_best_practices/payment_flow_cases.md" + ], + "effective_terminology_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/terminology.md" + ], + "optional_terminology_files": [], + "related_requirements": [], + "conflict_candidates_count": 0, + "current_excel_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/excel_reports/新人礼需求_测试用例.xlsx", + "versioning_scheme": { + "current_files": "固定文件名,始终表示当前最新版", + "snapshot_rule": "仅在 export 成功且产物内容发生变化时递增版本", + "snapshot_dir_pattern": "output/versions/{BASE_NAME}/vN/" + }, + "latest_snapshot_version": "v9", + "latest_snapshot_dir": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/versions/新人礼需求/v9", + "latest_snapshot_type": "full_pipeline", + "confirmation_gate": { + "required": false, + "reasons": [], + "pending_markers_count": 0, + "decision_file": null, + "decision_status": "not_required", + "decision_status_label": null, + "allow_export_before_confirmation": null, + "candidate_decision_files": [], + "suggested_decision_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/decisions/新人礼需求_确认结论.md" + }, + "maintained_requirement_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/requirements/新人礼需求.md" +} diff --git a/output/normalized_inputs/新人礼需求/requirement.md b/output/normalized_inputs/新人礼需求/requirement.md new file mode 100644 index 0000000..e825bae --- /dev/null +++ b/output/normalized_inputs/新人礼需求/requirement.md @@ -0,0 +1,61 @@ +# 新人礼需求 + +> 文档角色:需求文档 +> 原始来源:`source_docs/requirements_raw/新人礼需求.docx` + +基线-新人礼 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 0.0.1 | 文档创建 | 张昊 | 2026-02-28 | +一、业务背景 +基于问界需求清单 新人礼需求 +二、业务目标 +通过发布新人礼活动,吸引新用户注册使用~平台端&商家端支持发布新人礼活动,支持配置优惠券奖品,c端新用户注册展示新人礼内容 +三、产品设计 +1. 平台端-营销-新人有礼 +1.1 新人有礼列表 +列表数据说明 +数据权限:有此菜单列表权限的用户可看数据 +排序规则:按数据新增时间倒序排列 +分页规则:默认10行每页,可自主选择每页显示的条数(10/20/30/50) +数据来源:如下表 +| 数据字段 | 数据来源 | +| 活动名称 | 来源【新增/编辑】表单同名字段 | +| 活动时间 | 来源【新增/编辑】表单“活动时间“数据 | +| 活动状态 | 见下方状态逻辑说明 | +| 活动有效性 | 展示有效/已失效,支持 失效活动,失效后展示 已失效,失效后 操作栏展示删除操作 | +| 活动奖品 | 展示活动配置的奖品,当前活动奖品仅支持优惠券 | +| 创建时间 | 活动创建时间 | +状态逻辑说明 +| 状态名称 | 状态变更条件 | 可操作按钮 | +| 未开始 | 活动时间开始时间>当前时间 | 编辑,失效 | +| 进行中 | 活动时间开始时间<=当前时间 | 查看,失效 | +| 已结束 | 活动时间结束时间<当前时间 | 删除 | +查询条件说明 +| 查询条件 | 查询逻辑 | +| 活动名称 | 模糊查询,查询列表字段“活动名称” | +| 活动状态 | 精准查询,单选,选项数据:未开始、进行中、已结束、已失效,默认空 | +功能按钮说明 +| 按钮名称 | 触发后逻辑说明 | | +| 新建 | 在当前窗口打开“新建新人礼”弹窗 | | +| 查询 | 1、已选查询条件情况下,列表显示符合条件的数据 2、查询条件无匹配数据时,列表显示空,提示”暂无数据“ | | +| 重置 | 清空查询条件 | | +| 编辑 | 打开编辑表单弹窗 | | +| 查看 | 打开查看表单弹窗 | | +| 失效 | 打开失效操作弹窗,失效操作后,状态变更为已失效 | | +| 删除 | 打开删除操作弹窗,删除操作后,在列表删除活动(永久删除);取消后,关闭删除弹窗。 | | +1.2 新增/编辑 +页面字段说明 +| 字段名称 | 逻辑规则 | 是否必填 | 是否可编辑 | 原型界面、逻辑补充 | +| 活动名称 | 文本输入,最多50个字 | 是 | 是 | | +| 活动时间 | 开始时间-结束时间,年月日时分秒 | 是 | 是 | 控制活动的有效时段,可选择的时间大于等于当前时间,结束时间大于开始时间 | +| 活动奖品 | 多选 | 是 | 是 | | +| | 送优惠券 优惠券: 勾选后展示选择优惠券,只能选择1张优惠券,选择后展示选中优惠券信息表格 选择优惠券弹窗: 通用优惠券选择弹窗,单选 平台端展示平台可用优惠券列表, 商家端展示商家可用的优惠券列表, 优惠券列表数据展示规则:投放,未过期且为 用户领取 的优惠券,支持根据名称筛选 | 是 | 是 | 优惠券列表:选择前 优惠券列表:选择后 选择优惠券弹窗: | +| | 送积分 可输入1-999999的整数,配置生效后调用发积分接口发放积分 | 是 | 否 | 暂不支持 | +2. 商家端-营销-新人有礼 +功能同平台端,仅优惠券选择时,仅可选择该店铺下的优惠券 +3. C端 +3.1 首页 +| 平台首页-新人礼领取提示 奖励领取后,可在个人中心优惠券查看 | 店铺首页-新人礼领取提示 | +| 功能点 | 功能说明 | +| 弹窗逻辑 | 1)用户未在任意门店下过单,即视为新用户,登录后进入首页,弹窗提示用户领取新人礼奖励 2)用户未在该门店下过单,即视为门店新用户,登录后进入门店首页,弹窗提示用户领取新人礼奖励时机3)如果平台或店铺设置了弹窗广告,则新人礼弹窗在弹窗广告之前展示,关闭新人礼弹窗后,展示弹窗广告内容 | +| 优惠券 | 用户点击新人礼弹窗立即领取按钮,如果领取成功,奖励进入我的-优惠券列表,并提示用户领取成功 | diff --git a/output/normalized_inputs/新人礼需求/technical_solution_01.md b/output/normalized_inputs/新人礼需求/technical_solution_01.md new file mode 100644 index 0000000..095f30b --- /dev/null +++ b/output/normalized_inputs/新人礼需求/technical_solution_01.md @@ -0,0 +1,66 @@ +# 新人礼技术方案 + +> 文档角色:技术方案 +> 原始来源:`source_docs/technical_solutions/新人礼技术方案.docx` + +基线改造---新人礼技术方案&需求概述 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 1.0 | 建档 | 陶震 | 2026-2-21 | +1 背景 +1.1  需求背景 +新增,针对于新注册,未下单用户发放专属优惠券的场景(暂不支持下单后退款场景) +1.2 业务现况 +1.3. 业务系统现况 +1.4 名词说明 +| 名称 | 描述 | +| 新人(平台新人,店铺新人) | 平台新人:未在该平台下过单的用户,即shop_custormer中无任何数据的user 店铺新人:未在该店铺下过单的用户,即shop——customer中无该店铺该user数据的用户 | +1.7 涉及人员 +| 角色名称 | 使用内容 | +| 用户 | 消费者 | +| 运营 | 商城日常使用维护以及操作者。 | +2 目标 +本期实现目标说明: +2.1、技术目标 +| 技术指标 | 指标值 | 备注 | +| 用户响应RT | 1000ms | | +| 用户体量 | | | +| 并发数 | | | +| 开发语言 | | | +| 网络要求 | | | +3 整体概述 +3.1 需求概述 +同一时间仅允许一个新人礼活动(避免同一时间多个活动发放业务过重)。关联优惠券仅支持关联一张 +C端弹窗,若存在进行中的新人礼活动且用户未领取过,则进行弹窗 +3.2 业务架构图(一图概览) +3.3 业务模块列表 +3.4 第三方服务列表(可选) +| 服务厂商 | 类型(接口/设备) | 接口地址 | 备注 | 状态 | +3.5 技术架构 +3.5.1 前端设计 +3.5.2 后端设计 +3.6 领域模型设计 +新人礼主表 +| SQLCREATE TABLE `new_gift` ( `new_gift_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `shop_id` bigint NOT NULL COMMENT '关联店铺 平台为0', `activity_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动名称', `activity_start_time` datetime NOT NULL COMMENT '活动开始时间', `activity_end_time` datetime NOT NULL COMMENT '活动结束时间', `gift_type` int NOT NULL COMMENT '礼物类型 0优惠券 其他待拓展', `activity_status` int NOT NULL COMMENT '活动状态0未开始,1进行中,2已结束', `valid_status` int NOT NULL DEFAULT '0' COMMENT '有效性 0有效 1已失效', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` int NOT NULL DEFAULT '0' COMMENT '是否已删除 0否1是', PRIMARY KEY (`new_gift_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼主表'; | +新人礼关联礼物表 +| SQLCREATE TABLE `new_gift_detail` ( `new_gift_detail_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `new_gift_id` bigint NOT NULL COMMENT '新人礼主键', `gift_type` int NOT NULL COMMENT '礼物类型 0优惠券 其他待拓展', `gift_biz_id` bigint NOT NULL COMMENT '礼物主键Id', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`new_gift_detail_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼 子表,存储主表与礼物关联关系'; | +新人礼发放记录表 +| SQLCREATE TABLE `new_gift_send_log` ( `new_gift_log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` bigint NOT NULL COMMENT '用户ID', `send_status` int NOT NULL COMMENT '发放状态 0成功 1失败', `fail_reason` json DEFAULT NULL COMMENT '失败原因', `new_gift_id` bigint NOT NULL COMMENT '新人礼主键', `new_gift_detail_id` bigint NOT NULL COMMENT '礼物详情主键', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`new_gift_log_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼发放记录表'; | +3.7 数据模型设计 +详见领域模型 +3.8 依赖项 +| 依赖项 | 作用 | 预计提供时间 | 状态 | 责任人 | 交付物 | +4 场景(user story)与流程图(How) +4.1 新增活动 +4.1.1 业务流程图 +4.1.2 时序图 +4.1.3 接口依赖 +无 +4.1.4 接口设计 +| API | 状态 | 说明 | +| /mp/newGift/save | 未开发 | 新增新人礼活动 | +| /mp/newGift/update | 未开发 | 修改新人礼活动 | +| /mp/newGift/detail | 未开发 | 查看新人礼详情 | +| /mp/newGift/delete | 未开发 | 删除新人礼活动 | +| /mp/newGift/page | 未开发 | 新人礼活动分页查询 | +| /ua/newGift/check | 未开发 | 检测用户是否符合进行中的平台/店铺中的新人礼活动。 | +| /ua/newGift/send | 未开发 | 为用户发放对应新人礼绑定的券 | diff --git a/output/test_cases/新人礼需求_测试用例.md b/output/test_cases/新人礼需求_测试用例.md new file mode 100644 index 0000000..9e0371e --- /dev/null +++ b/output/test_cases/新人礼需求_测试用例.md @@ -0,0 +1,47 @@ +# 新人礼需求测试用例 + +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| PLT_NG_LIST_001 | 平台端-营销管理-新人有礼列表 | 验证平台端列表默认排序、分页和查询功能正确 | P1 | 功能测试 | 平台端已存在 12 条新人礼活动数据,覆盖未开始、进行中、已结束、已失效状态;测试账号具备列表权限 | 1. 登录平台端进入营销-新人有礼列表
2. 观察默认排序和分页条数
3. 输入活动名称关键字执行查询
4. 选择活动状态执行筛选
5. 输入无匹配关键字执行查询
6. 点击重置 | 活动A 创建时间晚于活动B;查询关键字=新人;状态=进行中;无匹配关键字=不存在的活动名 | 1. 列表默认按创建时间倒序展示
2. 默认每页展示 10 条
3. 名称查询仅返回命中活动
4. 状态筛选仅返回对应状态活动
5. 无匹配数据时列表展示空态或“暂无数据”提示
6. 点击重置后查询条件被清空,列表恢复默认结果 | [AI修正: 对标团队用例补充空结果查询场景] | +| PLT_NG_CFG_001 | 平台端-营销管理-新人有礼配置 | 验证活动时间非法时无法保存活动 | P1 | 功能测试 | 平台运营账号已登录;存在可选平台优惠券 | 1. 点击新建活动
2. 输入合法活动名称
3. 设置开始时间早于当前时间后尝试保存
4. 再设置结束时间早于开始时间后尝试保存 | 活动名称=平台新人礼A;开始时间=当前时间前 1 分钟;结束时间=开始时间前 1 秒 | 1. 页面对开始时间非法给出明确提示
2. 页面对结束时间非法给出明确提示
3. 活动保存失败
4. 后台 `new_gift` 主表不新增活动记录 | 边界值 | +| PLT_NG_CFG_002 | 平台端-营销管理-新人有礼配置 | 验证平台端只能绑定 1 张符合条件的平台优惠券 | P0 | 功能测试 | 平台运营账号已登录;平台下存在 3 张券,分别为投放中可领券、已过期券、非用户领取券 | 1. 点击新建活动
2. 打开选择优惠券弹窗
3. 观察券列表范围
4. 选择 1 张投放中可领券后尝试继续追加选择第 2 张券
5. 保存活动 | 券A=投放中未过期用户领取券;券B=已过期券;券C=系统发放券 | 1. 弹窗仅展示平台可用且投放中、未过期、用户领取的券
2. 已过期券和非用户领取券不展示或不可选
3. 页面仅允许单选 1 张券
4. 保存成功后 `new_gift_detail` 仅存在 1 条券绑定记录 | [AI修正: 技术方案限定单券绑定] | +| PLT_NG_CFG_003 | 平台端-营销管理-新人有礼配置 | 验证积分奖励当前不支持 | P1 | 功能测试 | 平台运营账号已登录 | 1. 点击新建活动
2. 进入活动奖品区域
3. 查看送积分配置入口
4. 若可通过前端或抓包提交积分类型则尝试保存 | gift_type=积分;积分值=100 | 1. 页面不允许启用积分奖品,或该入口展示为暂不支持
2. 若前端被绕过提交积分类型,后端拦截保存并返回错误提示
3. 后台不生成积分类型活动记录 | [AI修正: 范围外能力拦截] | +| PLT_NG_CREATE_001 | 平台端-营销管理-新人有礼配置 | 验证平台端新建合法活动可保存成功 | P0 | 功能测试 | 平台运营账号已登录;存在 1 张投放中、未过期、用户领取类型的平台优惠券;当前无冲突中的平台活动 | 1. 点击新建活动
2. 填写活动名称、时间并选择 1 张合法平台券
3. 点击确定保存
4. 返回列表并进入详情页核对数据 | 活动名称=平台新人礼春季活动;开始时间=明天 10:00;结束时间=后天 10:00;券ID=PLT_COUPON_1001 | 1. 页面提示创建成功
2. 列表新增该活动记录,字段展示正确
3. 活动状态按时间口径展示为未开始
4. `new_gift` 和 `new_gift_detail` 新增对应活动及券绑定记录 | [AI修正: 对标团队用例补充后台正向新建链路] | +| PLT_NG_EDIT_001 | 平台端-营销管理-新人有礼编辑 | 验证平台端编辑未开始活动可保存成功 | P1 | 功能测试 | 平台已存在 1 条未开始活动;平台运营账号已登录;存在 1 张新的合法平台优惠券 | 1. 在列表中点击编辑未开始活动
2. 修改活动名称、时间或绑定券
3. 点击确定保存
4. 刷新列表并进入详情查看 | 原活动名称=平台新人礼A;新活动名称=平台新人礼A-调整版;新券ID=PLT_COUPON_1002 | 1. 页面提示保存成功
2. 列表展示为修改后的名称和时间
3. 详情页展示最新配置
4. 后台活动主表和明细表更新为最新值,不产生重复活动记录 | [AI修正: 对标团队用例补充后台正向编辑链路] | +| PLT_NG_POPUP_001 | 平台端-营销管理-优惠券选择弹窗 | 验证平台端选券弹窗支持搜索分页排序和单选反馈 | P1 | 功能测试 | 平台运营账号已登录;平台下存在 25 张符合或不符合条件的优惠券 | 1. 进入新建活动页面并打开优惠券选择弹窗
2. 点击刷新并观察列表加载
3. 输入优惠券名称执行搜索
4. 切换分页条数和页码
5. 观察列表排序和字段展示
6. 选择 1 张优惠券并确认返回 | 券名称关键字=新人礼;分页项=10/20;目标券=PLT_COUPON_1003 | 1. 弹窗可正常刷新数据
2. 名称搜索仅返回命中券
3. 分页、页码切换和排序行为正确
4. 列表展示券名称、有效期、领取方式等必要字段
5. 仅允许单选 1 张券,选中后页面回填正确的券信息 | [AI修正: 对标团队用例补充选券弹窗交互明细] | +| PLT_NG_RULE_001 | 平台端-营销管理-新人有礼配置 | 验证平台维度同一时间仅允许一个进行中的新人礼活动 | P0 | 功能测试 | 已存在 1 条平台活动A,时间范围覆盖当前时刻且状态为进行中;平台运营账号已登录 | 1. 点击新建活动
2. 填写与活动A 时间重叠的新活动B信息
3. 选择合法平台优惠券并保存 | 活动A 时间=今天 10:00 到 明天 10:00;活动B 时间=今天 12:00 到 明天 12:00 | 1. 页面或接口提示当前已有进行中的平台新人礼活动
2. 活动B 保存失败
3. 后台不新增活动B 记录
4. 活动A 状态和绑定关系不受影响 | [AI修正: 按产品确认口径更新为平台维度唯一] | +| PLT_NG_STATE_001 | 平台端-营销管理-新人有礼状态 | 验证活动失效后展示已失效并支持删除 | P1 | 功能测试 | 平台已存在 1 条未开始活动和 1 条进行中活动;平台运营账号已登录 | 1. 在列表中对活动执行失效操作
2. 刷新列表查看状态和操作按钮
3. 对已失效活动执行删除操作
4. 再次刷新列表 | 活动A=未开始;活动B=进行中 | 1. 失效后活动有效性展示为已失效
2. 失效活动的操作按钮切换为删除
3. 删除确认后页面提示删除成功
4. 列表中不再显示该活动
5. 后台活动记录被标记删除或按实现永久删除,不可继续被资格检查命中 | 状态流转 | +| PLT_NG_STATE_002 | 平台端-营销管理-新人有礼状态 | 验证活动已结束且已失效时列表优先展示已失效 | P1 | 功能测试 | 平台存在 1 条活动,活动结束时间早于当前时间,且已执行失效操作;平台运营账号已登录 | 1. 进入平台端新人有礼列表
2. 查询该活动状态展示和操作按钮 | 活动A 结束时间=当前时间前 1 天;valid_status=已失效 | 1. 列表最终状态优先展示为已失效
2. 操作按钮按已失效口径展示删除,不按已结束展示
3. 页面状态展示与后台有效性字段一致 | [AI修正: 按产品确认口径补充状态优先级] | +| MCH_NG_SCOPE_001 | 商家端-营销管理-新人有礼配置 | 验证商家端只能选择本店铺优惠券 | P0 | 功能测试 | 商家A 账号已登录;商家A 券A 为可领券;商家B 券B 为可领券 | 1. 商家A 进入新建活动页面
2. 打开优惠券选择弹窗
3. 搜索本店券A 和外店券B
4. 选择券A 保存活动 | 商家A ID=1001;商家B ID=1002;券A 属于商家A;券B 属于商家B | 1. 列表仅展示商家A 可用券
2. 搜索券B 无结果或不可选
3. 保存成功后活动绑定的券归属为商家A
4. 后台不存在跨店绑定关系 | [AI修正: 覆盖数据隔离与越权风险] | +| MCH_NG_SCOPE_002 | 商家端-营销管理-新人有礼配置 | 验证篡改券 ID 无法越权绑定其他店铺优惠券 | P0 | 安全性测试 | 商家A 账号已登录;抓包工具可修改请求;商家B 存在 1 张有效券 | 1. 商家A 正常进入新建活动页面并选择商家A 自有券
2. 提交前抓包将券 ID 替换为商家B 券 ID
3. 提交保存请求 | 提交参数原券 ID=COUPON_A_01;篡改后券 ID=COUPON_B_01 | 1. 后端拦截越权绑定请求并返回错误提示
2. 页面保存失败
3. 后台不生成跨店活动与券绑定关系
4. 审计日志记录异常请求或失败原因 | [AI修正: 对应越权与价格篡改类历史风险] | +| MCH_NG_RULE_001 | 商家端-营销管理-新人有礼配置 | 验证同一店铺仅允许一个进行中的门店新人礼活动但不同店铺可并存 | P0 | 功能测试 | 商家A 已存在 1 条进行中的门店活动A;商家B 无进行中活动;商家A、商家B 账号均可登录 | 1. 商家A 新建与活动A 时间重叠的门店活动A2并保存
2. 商家B 新建与活动A 同时段重叠的门店活动B并保存
3. 查询两家店铺活动列表 | 商家A ID=1001;商家B ID=1002;活动A2 与活动A 时间重叠;活动B 与活动A 时间重叠 | 1. 商家A 保存活动A2失败,并提示当前店铺已有进行中的新人礼活动
2. 商家B 保存活动B成功
3. 后台显示门店活动限制按店铺维度生效,不会因商家A 活动阻塞商家B 配置 | [AI修正: 按产品确认口径补充店铺维度唯一] | +| MCH_NG_LIST_001 | 商家端-营销管理-新人有礼列表 | 验证商家端列表默认排序、分页、搜索和重置功能正确 | P1 | 功能测试 | 商家A 已存在 12 条新人礼活动数据,覆盖未开始、进行中、已结束、已失效状态;商家运营账号具备列表权限 | 1. 登录商家A 端进入新人有礼列表
2. 观察默认排序和分页条数
3. 输入活动名称关键字执行查询
4. 选择活动状态执行筛选
5. 输入无匹配关键字执行查询
6. 点击重置 | 店铺ID=1001;关键字=新人;状态=进行中;无匹配关键字=不存在的活动名 | 1. 列表默认按创建时间倒序展示
2. 默认每页展示 10 条并可切换分页项
3. 名称搜索和状态筛选仅返回当前店铺命中数据
4. 无匹配数据时展示空态或“暂无数据”提示
5. 点击重置后恢复默认列表 | [AI修正: 对标团队用例补充商家端列表基础能力] | +| MCH_NG_LIST_002 | 商家端-营销管理-新人有礼列表 | 验证商家端列表字段和操作栏状态映射正确 | P1 | 功能测试 | 商家A 存在未开始、进行中、已结束、已失效四类活动;商家运营账号已登录 | 1. 进入商家A 新人有礼列表
2. 逐条检查活动名称、活动时间、活动状态、创建时间、操作栏
3. 对比不同状态下的操作按钮 | 活动A=未开始;活动B=进行中;活动C=已结束;活动D=已失效 | 1. 列表展示字段完整且内容正确
2. 未开始活动展示编辑、失效
3. 进行中活动展示查看、失效或按最终规则允许的编辑能力
4. 已结束和已失效活动展示删除或受限操作
5. 状态与按钮映射不串位 | [AI修正: 对标团队用例补充商家端状态按钮映射] | +| MCH_NG_CREATE_001 | 商家端-营销管理-新人有礼配置 | 验证商家端新建合法活动可保存成功 | P0 | 功能测试 | 商家A 账号已登录;商家A 存在 1 张投放中、未过期、用户领取类型的店铺优惠券;当前店铺无冲突中的门店活动 | 1. 点击新建活动
2. 填写活动名称、时间并选择 1 张本店合法券
3. 点击确定保存
4. 返回列表并进入详情页核对数据 | 店铺ID=1001;活动名称=门店新人礼春季活动;券ID=SHOP_COUPON_1001 | 1. 页面提示创建成功
2. 列表新增该门店活动记录,字段展示正确
3. 活动状态按时间口径展示为未开始
4. `new_gift` 和 `new_gift_detail` 新增当前店铺对应活动及券绑定记录 | [AI修正: 对标团队用例补充商家端正向新建链路] | +| MCH_NG_EDIT_001 | 商家端-营销管理-新人有礼编辑 | 验证商家端编辑未开始活动可保存成功 | P1 | 功能测试 | 商家A 存在 1 条未开始活动;商家A 账号已登录;存在 1 张新的本店合法券 | 1. 在列表中点击编辑未开始活动
2. 修改活动名称、时间或绑定券
3. 点击确定保存
4. 刷新列表并进入详情页核对 | 原活动名称=门店新人礼A;新活动名称=门店新人礼A-调整版;新券ID=SHOP_COUPON_1002 | 1. 页面提示保存成功
2. 列表和详情页展示最新配置
3. 后台活动主表和明细表更新为最新值
4. 不产生重复活动记录或跨店异常数据 | [AI修正: 对标团队用例补充商家端正向编辑链路] | +| MCH_NG_POPUP_001 | 商家端-营销管理-优惠券选择弹窗 | 验证商家端选券弹窗支持搜索分页排序和单选反馈 | P1 | 功能测试 | 商家A 账号已登录;商家A 下存在 25 张符合或不符合条件的优惠券 | 1. 进入新建活动页面并打开优惠券选择弹窗
2. 点击刷新并观察列表加载
3. 输入优惠券名称执行搜索
4. 切换分页条数和页码
5. 观察列表排序和字段展示
6. 选择 1 张优惠券并确认返回 | 店铺ID=1001;券名称关键字=新人礼;分页项=10/20;目标券=SHOP_COUPON_1003 | 1. 弹窗可正常刷新数据
2. 搜索仅返回当前店铺命中的券
3. 分页、页码切换和排序行为正确
4. 列表展示券名称、有效期、领取方式等必要字段
5. 仅允许单选 1 张券,确认后页面正确回填券信息 | [AI修正: 对标团队用例补充商家端选券弹窗交互明细] | +| MCH_NG_STATE_001 | 商家端-营销管理-新人有礼状态 | 验证商家端活动失效后展示已失效并支持删除 | P1 | 功能测试 | 商家A 已存在 1 条未开始活动和 1 条进行中活动;商家A 账号已登录 | 1. 在列表中对活动执行失效操作并确认
2. 刷新列表查看状态和操作按钮
3. 对已失效活动执行删除并确认
4. 再次刷新列表 | 店铺ID=1001;活动A=未开始;活动B=进行中 | 1. 失效后活动有效性展示为已失效
2. 已失效活动操作栏切换为删除
3. 删除确认后页面提示删除成功
4. 列表中不再显示该活动
5. 后台仅删除当前店铺对应活动,不影响其他店铺或平台活动 | [AI修正: 对标团队用例补充商家端失效删除链路] | +| MCH_NG_VIEW_001 | 商家端-营销管理-新人有礼查看 | 验证商家端查看态页面所有字段只读不可编辑 | P1 | 功能测试 | 商家A 已存在 1 条新人礼活动;商家A 账号已登录 | 1. 在列表中点击查看
2. 观察活动名称、活动时间、活动奖品等字段状态
3. 尝试修改字段或提交 | 店铺ID=1001;活动ID=SHOP1001 | 1. 查看页所有字段均为只读态
2. 页面不提供可提交修改的入口
3. 用户无法通过查看态改写活动配置 | [AI修正: 对标团队用例补充商家端查看只读场景] | +| C_NG_POP_001 | 用户端-首页-新人礼弹窗 | 验证平台新人登录平台首页时展示新人礼弹窗 | P0 | 冒烟测试 | 平台存在 1 条进行中的平台新人礼活动;用户U1 已注册登录且平台维度无下单记录;用户未领取过该活动 | 1. 用户U1 登录平台首页
2. 观察首页首屏弹窗 | 用户U1;平台活动=进行中;平台下单记录=0 | 1. 首页展示新人礼弹窗
2. 弹窗内容展示活动奖励信息和立即领取按钮
3. 后台资格检查接口返回命中活动和可领取状态 | 主流程 | +| C_NG_POP_002 | 用户端-首页-新人礼弹窗 | 验证非平台新人登录平台首页时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条进行中的平台新人礼活动;用户U2 已注册登录且平台维度存在已下单记录 | 1. 用户U2 登录平台首页
2. 观察首页弹窗和资格检查结果 | 用户U2;平台已支付订单数=1 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回不满足新人条件
3. 页面不出现立即领取入口 | 边界值 | +| C_NG_POP_003 | 用户端-门店首页-新人礼弹窗 | 验证平台老用户但门店新用户进入门店首页时展示门店新人礼弹窗 | P0 | 功能测试 | 商家A 存在 1 条进行中的门店新人礼活动;用户U3 平台维度已有下单记录,但在商家A 维度无下单记录;用户未领取过商家A 活动 | 1. 用户U3 进入商家A 门店首页
2. 观察首页弹窗
3. 查询资格检查结果 | 用户U3;平台订单数=1;商家A 订单数=0 | 1. 门店首页展示商家A 新人礼弹窗
2. 资格检查接口按门店维度返回可领取
3. 弹窗奖励信息与商家A 活动配置一致 | [AI修正: 覆盖平台新人和店铺新人差异口径] | +| C_NG_POP_004 | 用户端-首页-弹窗优先级 | 验证存在广告弹窗时新人礼弹窗优先展示 | P1 | 功能测试 | 平台存在 1 条进行中的新人礼活动;首页同时配置普通广告弹窗;用户U1 满足平台新人资格 | 1. 用户U1 登录平台首页
2. 观察首个弹窗
3. 关闭新人礼弹窗后继续观察 | 用户U1;广告弹窗=已配置 | 1. 首个弹窗为新人礼弹窗
2. 关闭新人礼弹窗后再展示广告弹窗
3. 整个过程中弹窗顺序与需求一致 | 交互优先级 | +| C_NG_POP_005 | 用户端-首页-新人礼弹窗 | 验证历史订单均为交易关闭时仍识别为平台新人 | P0 | 功能测试 | 平台存在 1 条进行中的平台新人礼活动;用户U6 历史仅有未支付取消单、超时未付单或已退款订单,且无其他非关闭订单 | 1. 用户U6 登录平台首页
2. 观察首页弹窗
3. 查询资格检查结果 | 用户U6 历史订单状态=交易关闭、已退款、超时未付 | 1. 首页展示平台新人礼弹窗
2. 资格检查接口返回满足平台新人条件
3. 页面不因历史关闭单或已退款单而拦截新人资格 | [AI修正: 按产品确认口径补充交易关闭单仍算新人] | +| C_NG_POP_006 | 用户端-首页-新人礼弹窗 | 验证未登录进入首页时不展示新人礼弹窗 | P0 | 功能测试 | 平台或门店存在进行中的新人礼活动;用户未登录 | 1. 未登录直接进入平台首页
2. 未登录直接进入门店首页
3. 观察页面弹窗与网络请求 | 访问端=H5/小程序;登录态=未登录 | 1. 平台首页和门店首页均不展示新人礼弹窗
2. 页面不进入领取流程
3. 若触发资格检查请求,应返回未登录拦截而非可领取结果 | [AI修正: 取自团队现有功能用例] | +| C_NG_POP_007 | 用户端-首页-新人礼展示 | 验证首页展示的奖品信息与后台配置一致 | P0 | 功能测试 | 平台和商家端各存在 1 条进行中的新人礼活动,且分别绑定不同门槛和优惠内容的优惠券;用户满足资格 | 1. 平台新人登录平台首页查看弹窗奖品信息
2. 店铺新人进入门店首页查看弹窗奖品信息
3. 对比后台券配置 | 平台券=满100减20, 用券时间 2026-05-01 至 2026-05-31;店铺券=8折券, 上限 30 元 | 1. 平台首页弹窗展示的平台券门槛、优惠金额或折扣、用券时间与后台配置一致
2. 门店首页弹窗展示的商家券信息与商家端配置一致
3. 不出现平台券和商家券信息串位 | [AI修正: 取自团队现有功能用例] | +| C_NG_POP_008 | 用户端-门店首页-新人礼弹窗 | 验证门店老用户进入门店首页时不展示门店新人礼弹窗 | P1 | 功能测试 | 商家A 存在 1 条进行中的门店新人礼活动;用户U9 已登录且在商家A 维度存在已支付订单 | 1. 用户U9 进入商家A 门店首页
2. 观察首页弹窗和资格检查结果 | 用户U9;店铺ID=1001;商家A 已支付订单数=1 | 1. 门店首页不展示门店新人礼弹窗
2. 资格检查接口返回不满足门店新人条件
3. 页面不出现立即领取入口 | [AI修正: 对标团队用例补充门店老用户负向场景] | +| C_NG_SEND_001 | 用户端-首页-新人礼领取 | 验证点击立即领取成功后优惠券入账并写发放日志 | P0 | 冒烟测试 | 用户U1 满足平台新人资格;平台存在进行中活动且绑定有效券;用户未领取过该活动 | 1. 用户U1 在新人礼弹窗点击立即领取
2. 观察页面提示
3. 进入我的优惠券查询奖励
4. 查询发放日志 | 用户U1;活动ID=NG1001;券ID=PC1001 | 1. 页面提示领取成功
2. 我的优惠券列表新增对应优惠券
3. `new_gift_send_log` 新增 1 条成功记录,包含用户、活动、活动明细和发送状态
4. 该用户再次进入首页时不再展示同一活动弹窗 | 主流程 | +| C_NG_SEND_002 | 用户端-首页-新人礼领取 | 验证同一用户重复点击立即领取时只发放一次 | P0 | 回归测试 | 用户U1 满足新人资格;平台存在进行中活动且绑定有效券;抓包或前端可模拟快速重复点击 | 1. 用户U1 打开新人礼弹窗
2. 在 1 秒内连续点击 3 次立即领取
3. 查询优惠券列表和发放日志 | 用户U1;活动ID=NG1001;重复点击次数=3 | 1. 页面最多显示 1 次领取成功提示
2. 用户仅新增 1 张优惠券
3. `new_gift_send_log` 仅有 1 条成功记录,其余请求被幂等拦截或返回已领取
4. 不出现重复发券 | [AI修正: 对应重复提交和重复支付类历史风险] | +| C_NG_SEND_003 | 用户端-首页-新人礼领取 | 验证领取接口超时重试时不会重复发券 | P1 | 回归测试 | 用户U1 满足新人资格;模拟领取接口首个请求响应超时但后端已处理成功 | 1. 用户U1 点击立即领取
2. 将首个请求模拟为前端超时
3. 用户再次点击立即领取或页面自动重试
4. 查询优惠券列表和发放日志 | 首次请求后端处理成功;前端超时 5 秒 | 1. 页面提示处理中或可稍后刷新查看结果
2. 最终用户仅获得 1 张优惠券
3. 发放日志中仅 1 条成功记录,不存在多条成功发放
4. 页面最终状态与后台结果一致 | 非功能 | +| C_NG_SEND_004 | 用户端-首页-新人礼领取 | 验证发券失败时记录失败原因且不出现半成功状态 | P1 | 功能测试 | 用户U4 满足新人资格;将发券接口模拟为失败 | 1. 用户U4 点击立即领取
2. 观察页面提示
3. 查询我的优惠券列表
4. 查询发放日志 | 券中心返回=库存不足或券失效 | 1. 页面提示领取失败及失败原因
2. 我的优惠券列表不新增该券
3. `new_gift_send_log` 记录失败状态和失败原因
4. 用户状态不被误标记为已领取 | [AI修正: 覆盖部分成功和异常记录风险] | +| C_NG_SEND_005 | 用户端-首页-新人礼领取 | 验证同一账号双端并发领取时最终仅一次成功 | P1 | 功能测试 | 用户U5 满足新人资格;用户在手机端和 H5 端同时登录;平台存在进行中活动 | 1. 手机端和 H5 端同时打开新人礼弹窗
2. 两端几乎同时点击立即领取
3. 查询两端提示、优惠券列表和发放日志 | 用户U5;双端并发间隔小于 200ms | 1. 最终仅 1 次领取成功
2. 另一端返回已领取、处理中或重复请求提示
3. 用户优惠券列表仅新增 1 张券
4. 发放日志仅保留 1 条成功记录 | 并发 | +| C_NG_SEND_006 | 用户端-门店首页-新人礼领取 | 验证用户领取平台新人礼后仍可继续领取门店新人礼 | P0 | 功能测试 | 用户U7 已成功领取平台新人礼;商家A 存在进行中的门店新人礼活动;用户U7 在商家A 维度无非关闭订单且未领取过门店活动 | 1. 用户U7 登录平台首页并确认已领取平台新人礼
2. 用户U7 进入商家A 门店首页
3. 观察门店弹窗并点击立即领取
4. 查询门店发放日志和优惠券列表 | 用户U7;平台活动ID=PLT1001;门店活动ID=SHOP1001 | 1. 门店首页仍展示门店新人礼弹窗
2. 用户可成功领取门店优惠券
3. 优惠券列表中同时存在平台新人礼券和门店新人礼券
4. 门店活动发放日志新增成功记录,不因已领取平台礼而被拦截 | [AI修正: 按产品确认口径补充平台礼与门店礼可并存] | +| C_NG_CHECK_001 | 用户端-首页-资格检查 | 验证无进行中活动时不展示新人礼弹窗 | P1 | 功能测试 | 平台不存在进行中活动;用户U1 满足新人资格 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动列表=空或全部不命中资格检查条件 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动
3. 页面不出现错误提示或异常闪现弹窗 | [AI修正: 将状态负向场景拆分,提升定位性] | +| C_NG_CHECK_002 | 用户端-首页-资格检查 | 验证活动未开始时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条未开始活动;用户U1 满足新人资格;当前无其他进行中活动 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动开始时间=当前时间后 1 小时 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动或活动未开始
3. 页面不出现提前曝光的领取入口 | [AI修正: 对标团队用例补充状态拆分场景] | +| C_NG_CHECK_003 | 用户端-首页-资格检查 | 验证活动已结束时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条已结束活动;用户U1 满足新人资格;当前无其他进行中活动 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动结束时间=当前时间前 1 小时 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动或活动已结束
3. 页面不出现已结束活动的领取入口 | [AI修正: 对标团队用例补充状态拆分场景] | +| C_NG_CHECK_004 | 用户端-首页-资格检查 | 验证活动已失效时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条已失效活动;用户U1 满足新人资格;当前无其他进行中活动 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动状态=已失效;valid_status=失效 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动或活动已失效
3. 页面状态与后台有效性字段一致 | [AI修正: 对标团队用例补充状态拆分场景] | +| API_NG_PERF_001 | 用户端-资格检查-接口性能 | 验证资格检查接口在常规数据量下满足 RT 基线 | P2 | 性能测试 | 存在 100 条历史发放记录和 10 条活动数据;性能环境可统计接口耗时 | 1. 触发用户进入平台首页调用资格检查接口
2. 连续执行 30 次
3. 统计平均 RT 和 P95 | 接口=`/ua/newGift/check`;样本量=30 | 1. 常规场景下接口平均 RT 和 P95 满足 1000ms 基线或接近目标
2. 页面无明显卡顿或超时提示
3. 若超基线,应能定位是活动查询、资格判定还是日志判断链路耗时 | [AI修正: 技术方案给出 RT 1000ms] | +| C_NG_RULE_001 | 用户端-资格判定-新人口径 | 验证存在已支付订单时不再识别为新人 | P1 | 功能测试 | 用户U8 存在 1 笔平台已支付订单;平台存在进行中活动 | 1. 用户U8 登录平台首页
2. 观察是否弹出新人礼
3. 查询资格检查返回 | 用户U8 历史订单状态=已支付 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回不满足新人条件
3. 页面展示与产品确认口径一致,不因已支付历史订单继续认定为新人 | [AI修正: 按产品确认口径更新新人判定] | +| DATA_NG_SCOPE_001 | 平台端-商家端-数据隔离 | 验证平台端与商家端新人礼活动数据不互通 | P0 | 功能测试 | 平台端已配置 1 条平台新人礼活动;商家A 已配置 1 条门店新人礼活动;测试账号分别具备平台端和商家端权限 | 1. 在平台端查看新人礼活动列表
2. 在商家A 端查看新人礼活动列表
3. 对比两端列表数据 | 平台活动ID=PLT1001;商家活动ID=SHOP1001 | 1. 平台端仅展示平台活动数据,不展示商家活动
2. 商家端仅展示当前店铺活动数据,不展示平台活动
3. 两端数据查询、查看、编辑入口相互隔离 | [AI修正: 取自团队现有功能用例] | +| VIEW_NG_READONLY_001 | 平台端-营销管理-新人有礼查看 | 验证查看态页面所有字段只读不可编辑 | P1 | 功能测试 | 平台已存在 1 条新人礼活动;平台运营账号已登录 | 1. 在列表中点击查看
2. 观察活动名称、活动时间、活动奖品等字段状态
3. 尝试修改字段或提交 | 活动ID=PLT1001 | 1. 查看页所有字段均为只读态
2. 页面不提供可提交修改的入口
3. 用户无法通过查看态改写活动配置 | [AI修正: 取自团队现有功能用例] | +| PLT_NG_LIST_002 | 平台端-营销管理-新人有礼列表 | 验证列表展示字段和操作栏状态映射正确 | P1 | 功能测试 | 平台端存在未开始、进行中、已结束、已失效四类活动;平台运营账号已登录 | 1. 进入新人有礼列表
2. 逐条检查活动名称、活动时间、活动状态、创建时间、操作栏
3. 对比不同状态下的操作按钮 | 活动A=未开始;活动B=进行中;活动C=已结束;活动D=已失效 | 1. 列表展示字段完整且内容正确
2. 未开始活动展示编辑、失效
3. 进行中活动展示查看、失效或按最终规则允许的编辑能力
4. 已结束和已失效活动操作栏按需求展示删除或受限操作 | [AI修正: 取自团队现有功能用例] | diff --git a/output/test_points/新人礼需求_测试点.md b/output/test_points/新人礼需求_测试点.md new file mode 100644 index 0000000..e2492e2 --- /dev/null +++ b/output/test_points/新人礼需求_测试点.md @@ -0,0 +1,80 @@ +# 新人礼需求测试点 + +## 1. 平台端列表与状态管理 + +1. 校验平台端列表默认按创建时间倒序展示,分页默认 10 条,支持切换 10、20、30、50 条。[需求] +2. 校验按活动名称模糊查询、按活动状态精准查询、无结果空态提示、重置查询条件的行为正确。[需求] +3. 校验活动状态“未开始、进行中、已结束、已失效”的展示口径和操作按钮是否符合规则。[需求] +4. 校验活动失效后有效性展示为“已失效”,且操作栏切换为删除入口。[需求] +5. 校验删除为永久删除,删除后列表不可见,后台数据状态与页面一致。[需求][项目画像] +6. 校验列表展示字段、创建时间、活动状态、操作栏内容与需求一致。[需求] +7. 校验不同状态下操作栏按钮映射正确,未开始/进行中/已结束/已失效的按钮展示不串位。[需求] +8. 校验点击“新建”可正常打开新人礼配置弹窗或页面,交互入口与权限口径一致。[需求] + +## 2. 活动配置与规则校验 + +1. 校验活动名称最大 50 字,超长时前端与后端均能拦截。[需求][漏测清单] +2. 校验活动开始时间小于当前时间、结束时间小于开始时间时不可保存。[需求][边界] +3. 校验活动奖品当前仅支持优惠券,积分奖励入口不可用或被明确拦截。[需求][技术方案] +4. 校验每个活动仅能关联 1 张优惠券,无法多选、多绑或通过接口绕过限制。[技术方案][项目画像] +5. 校验平台端新建合法活动时保存成功,列表、详情和活动明细数据落库正确。[需求] +6. 校验平台端编辑未开始活动时可修改名称、时间、奖品等字段并保存成功。[需求] +7. 校验平台维度同一时间仅允许 1 个进行中的平台新人礼活动,新增或编辑命中并存条件时保存失败并给出明确提示。[技术方案] +8. 校验同一店铺维度同一时间仅允许 1 个进行中的门店新人礼活动,不同店铺活动可并存。[技术方案] +9. 校验失效、删除操作存在二次确认,确认结果与列表及后台状态保持一致。[需求] +10. 校验编辑活动时,已开始活动是否只允许查看不允许修改关键字段,状态与按钮保持一致。[需求] + +## 3. 优惠券选择与权限隔离 + +1. 校验平台端仅能选择平台可用优惠券,且仅展示投放中、未过期、领取方式为用户领取的券。[需求] +2. 校验商家端仅能选择本店铺可用优惠券,不能看到或绑定其他店铺优惠券。[需求][项目画像] +3. 校验优惠券选择弹窗支持刷新、名称搜索、列表字段展示、分页、排序、单选反馈,且平台端与商家端展示的数据源范围不同。[需求][漏测清单] +4. 校验通过抓包篡改券 ID、店铺 ID 或活动归属时,后端能拦截越权绑定。[历史缺陷][项目画像] + +## 4. 商家端差异化行为 + +1. 校验商家端列表默认排序、分页、名称搜索、状态筛选、重置、空结果提示与平台端同构,但数据仅限当前店铺可见。[需求][项目画像] +2. 校验商家端列表展示字段、操作栏按钮、不同状态下的权限映射正确。[需求] +3. 校验商家端新建活动时,跨店铺数据隔离正确,门店 A 无法操作门店 B 活动。[项目画像] +4. 校验商家端新建合法活动时保存成功,列表、详情和活动明细数据正确落库。[需求] +5. 校验商家端编辑未开始活动时可正常保存,查看态页面所有字段只读,编辑态与查看态权限边界正确。[需求] +6. 校验商家端活动失效、删除后,仅影响当前店铺,不影响平台端和其他店铺活动。[需求] +7. 校验平台端活动数据在商家端不可见,商家端活动数据在平台端不可见。[需求][项目画像] + +## 5. C 端资格检查与弹窗展示 + +1. 校验平台新人登录平台首页时,存在进行中平台新人礼活动则展示弹窗。[需求] +2. 校验平台范围存在已支付或非交易关闭订单时,不展示平台新人礼弹窗。[需求][边界] +3. 校验店铺新人进入门店首页时,存在进行中门店新人礼活动则展示门店弹窗。[需求] +4. 校验当前店铺范围存在已支付或非交易关闭订单时,不展示门店新人礼弹窗。[需求][边界] +5. 校验门店老用户进入门店首页时,不展示门店新人礼弹窗。[需求] +6. 校验同时存在广告弹窗时,新人礼弹窗优先展示,关闭新人礼后再展示广告。[需求] +7. 校验活动未开始时,资格检查结果和页面展示均不展示新人礼弹窗。[需求][状态流转] +8. 校验活动已结束时,资格检查结果和页面展示均不展示新人礼弹窗。[需求][状态流转] +9. 校验活动已失效时,资格检查结果和页面展示均不展示新人礼弹窗。[需求][状态流转] +10. 校验用户历史订单均为交易关闭(未支付取消、超时未付、已退款)时,仍识别为新人并展示弹窗。[需求][产品确认] +11. 校验未登录进入平台首页或门店首页时,不展示新人礼弹窗且不误触发领取流程。[需求][边界] +12. 校验平台首页和门店首页展示的奖品信息与后台配置的优惠券信息一致,包括门槛、优惠金额、用券时间等。[需求] + +## 6. 领取发放与日志落库 + +1. 校验点击“立即领取”成功后,页面提示成功,优惠券进入“我的优惠券”。[需求] +2. 校验领取成功后,`new_gift_send_log` 写入成功记录,记录用户、活动、活动明细和状态。[技术方案] +3. 校验同一用户重复点击“立即领取”或短时间重复调用发放接口时,只发放 1 次,日志不出现重复成功记录。[历史缺陷][项目画像] +4. 校验领取失败时,页面提示失败原因,发放日志记录失败原因,不出现半成功状态。[技术方案][项目画像] +5. 校验用户已领取过奖励后,再次进入首页不再弹出同一活动弹窗。[需求] +6. 校验用户已领取平台新人礼后,若满足门店新人条件,仍可在门店首页领取门店新人礼。[需求][产品确认] + +## 7. 异常、并发与非功能 + +1. 校验弱网、超时或接口重试场景下,资格检查接口不会错误多次弹窗或误判资格。[漏测清单][非功能] +2. 校验领取接口超时或前端重复提交时,不会重复发券,用户可通过优惠券列表或重新进入页面查看最终结果。[漏测清单][非功能] +3. 校验同一账号在两个终端同时领取新人礼时,最终仅 1 次成功发放。[项目画像][并发] +4. 校验资格检查和领取接口响应时间满足技术目标 RT 1000ms,至少在常规测试数据量下不明显超时。[技术方案][非功能] + +## 8. 产品确认口径回归 + +1. 校验平台活动与门店活动可同时存在,但平台维度仅允许 1 条进行中活动、每个店铺维度仅允许 1 条进行中活动。[产品确认] +2. 校验历史订单均为交易关闭时仍视为新人;存在已支付或非关闭订单时不视为新人。[产品确认] +3. 校验活动“已结束”和“已失效”同时成立时,列表优先展示“已失效”。[产品确认] +4. 校验用户领取平台新人礼后,仍可继续领取符合条件的门店新人礼。[产品确认] diff --git a/output/versions/新人礼需求/VERSION_INDEX.md b/output/versions/新人礼需求/VERSION_INDEX.md new file mode 100644 index 0000000..967b1c4 --- /dev/null +++ b/output/versions/新人礼需求/VERSION_INDEX.md @@ -0,0 +1,7 @@ +# 新人礼需求 版本索引 + +| 版本 | 类型 | 内容摘要 | 目录 | +| --- | --- | --- | --- | +| v7 | 历史 Excel 导入 | excel、migration_note | `output/versions/新人礼需求/v7` | +| v8 | 完整流水线快照 | manifest、analysis、relation_report、test_points、test_cases_markdown、excel、normalized_inputs | `output/versions/新人礼需求/v8` | +| v9 | 完整流水线快照 | manifest、analysis、relation_report、test_points、test_cases_markdown、excel、normalized_inputs | `output/versions/新人礼需求/v9` | diff --git a/output/versions/新人礼需求/v7/snapshot_meta.json b/output/versions/新人礼需求/v7/snapshot_meta.json new file mode 100644 index 0000000..b50b657 --- /dev/null +++ b/output/versions/新人礼需求/v7/snapshot_meta.json @@ -0,0 +1,10 @@ +{ + "base_name": "新人礼需求", + "version": "v7", + "snapshot_type": "legacy_excel_import", + "summary": [ + "excel", + "migration_note" + ], + "note_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/versions/新人礼需求/v7/snapshot_note.md" +} diff --git a/output/versions/新人礼需求/v7/snapshot_note.md b/output/versions/新人礼需求/v7/snapshot_note.md new file mode 100644 index 0000000..edbc364 --- /dev/null +++ b/output/versions/新人礼需求/v7/snapshot_note.md @@ -0,0 +1,6 @@ +# 新人礼需求_测试用例 历史 Excel 导入说明 + +- 导入来源:`新人礼需求_测试用例_20260426_173650.xlsx` +- 导入类型:旧时间戳命名 Excel +- 说明:该快照仅迁移了历史 Excel,本次未重建当时对应的分析、测试点、测试用例 Markdown 与 manifest。 +- 目的:统一历史文件归档路径,并清理 `output/excel_reports/` 中的旧时间戳文件。 diff --git a/output/versions/新人礼需求/v7/新人礼需求_测试用例.xlsx b/output/versions/新人礼需求/v7/新人礼需求_测试用例.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8216888978847820c936d40f99a5b0607bdd13cc GIT binary patch literal 12294 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 literal 0 HcmV?d00001 diff --git a/output/versions/新人礼需求/v8/normalized_inputs/requirement.md b/output/versions/新人礼需求/v8/normalized_inputs/requirement.md new file mode 100644 index 0000000..e825bae --- /dev/null +++ b/output/versions/新人礼需求/v8/normalized_inputs/requirement.md @@ -0,0 +1,61 @@ +# 新人礼需求 + +> 文档角色:需求文档 +> 原始来源:`source_docs/requirements_raw/新人礼需求.docx` + +基线-新人礼 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 0.0.1 | 文档创建 | 张昊 | 2026-02-28 | +一、业务背景 +基于问界需求清单 新人礼需求 +二、业务目标 +通过发布新人礼活动,吸引新用户注册使用~平台端&商家端支持发布新人礼活动,支持配置优惠券奖品,c端新用户注册展示新人礼内容 +三、产品设计 +1. 平台端-营销-新人有礼 +1.1 新人有礼列表 +列表数据说明 +数据权限:有此菜单列表权限的用户可看数据 +排序规则:按数据新增时间倒序排列 +分页规则:默认10行每页,可自主选择每页显示的条数(10/20/30/50) +数据来源:如下表 +| 数据字段 | 数据来源 | +| 活动名称 | 来源【新增/编辑】表单同名字段 | +| 活动时间 | 来源【新增/编辑】表单“活动时间“数据 | +| 活动状态 | 见下方状态逻辑说明 | +| 活动有效性 | 展示有效/已失效,支持 失效活动,失效后展示 已失效,失效后 操作栏展示删除操作 | +| 活动奖品 | 展示活动配置的奖品,当前活动奖品仅支持优惠券 | +| 创建时间 | 活动创建时间 | +状态逻辑说明 +| 状态名称 | 状态变更条件 | 可操作按钮 | +| 未开始 | 活动时间开始时间>当前时间 | 编辑,失效 | +| 进行中 | 活动时间开始时间<=当前时间 | 查看,失效 | +| 已结束 | 活动时间结束时间<当前时间 | 删除 | +查询条件说明 +| 查询条件 | 查询逻辑 | +| 活动名称 | 模糊查询,查询列表字段“活动名称” | +| 活动状态 | 精准查询,单选,选项数据:未开始、进行中、已结束、已失效,默认空 | +功能按钮说明 +| 按钮名称 | 触发后逻辑说明 | | +| 新建 | 在当前窗口打开“新建新人礼”弹窗 | | +| 查询 | 1、已选查询条件情况下,列表显示符合条件的数据 2、查询条件无匹配数据时,列表显示空,提示”暂无数据“ | | +| 重置 | 清空查询条件 | | +| 编辑 | 打开编辑表单弹窗 | | +| 查看 | 打开查看表单弹窗 | | +| 失效 | 打开失效操作弹窗,失效操作后,状态变更为已失效 | | +| 删除 | 打开删除操作弹窗,删除操作后,在列表删除活动(永久删除);取消后,关闭删除弹窗。 | | +1.2 新增/编辑 +页面字段说明 +| 字段名称 | 逻辑规则 | 是否必填 | 是否可编辑 | 原型界面、逻辑补充 | +| 活动名称 | 文本输入,最多50个字 | 是 | 是 | | +| 活动时间 | 开始时间-结束时间,年月日时分秒 | 是 | 是 | 控制活动的有效时段,可选择的时间大于等于当前时间,结束时间大于开始时间 | +| 活动奖品 | 多选 | 是 | 是 | | +| | 送优惠券 优惠券: 勾选后展示选择优惠券,只能选择1张优惠券,选择后展示选中优惠券信息表格 选择优惠券弹窗: 通用优惠券选择弹窗,单选 平台端展示平台可用优惠券列表, 商家端展示商家可用的优惠券列表, 优惠券列表数据展示规则:投放,未过期且为 用户领取 的优惠券,支持根据名称筛选 | 是 | 是 | 优惠券列表:选择前 优惠券列表:选择后 选择优惠券弹窗: | +| | 送积分 可输入1-999999的整数,配置生效后调用发积分接口发放积分 | 是 | 否 | 暂不支持 | +2. 商家端-营销-新人有礼 +功能同平台端,仅优惠券选择时,仅可选择该店铺下的优惠券 +3. C端 +3.1 首页 +| 平台首页-新人礼领取提示 奖励领取后,可在个人中心优惠券查看 | 店铺首页-新人礼领取提示 | +| 功能点 | 功能说明 | +| 弹窗逻辑 | 1)用户未在任意门店下过单,即视为新用户,登录后进入首页,弹窗提示用户领取新人礼奖励 2)用户未在该门店下过单,即视为门店新用户,登录后进入门店首页,弹窗提示用户领取新人礼奖励时机3)如果平台或店铺设置了弹窗广告,则新人礼弹窗在弹窗广告之前展示,关闭新人礼弹窗后,展示弹窗广告内容 | +| 优惠券 | 用户点击新人礼弹窗立即领取按钮,如果领取成功,奖励进入我的-优惠券列表,并提示用户领取成功 | diff --git a/output/versions/新人礼需求/v8/normalized_inputs/technical_solution_01.md b/output/versions/新人礼需求/v8/normalized_inputs/technical_solution_01.md new file mode 100644 index 0000000..095f30b --- /dev/null +++ b/output/versions/新人礼需求/v8/normalized_inputs/technical_solution_01.md @@ -0,0 +1,66 @@ +# 新人礼技术方案 + +> 文档角色:技术方案 +> 原始来源:`source_docs/technical_solutions/新人礼技术方案.docx` + +基线改造---新人礼技术方案&需求概述 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 1.0 | 建档 | 陶震 | 2026-2-21 | +1 背景 +1.1  需求背景 +新增,针对于新注册,未下单用户发放专属优惠券的场景(暂不支持下单后退款场景) +1.2 业务现况 +1.3. 业务系统现况 +1.4 名词说明 +| 名称 | 描述 | +| 新人(平台新人,店铺新人) | 平台新人:未在该平台下过单的用户,即shop_custormer中无任何数据的user 店铺新人:未在该店铺下过单的用户,即shop——customer中无该店铺该user数据的用户 | +1.7 涉及人员 +| 角色名称 | 使用内容 | +| 用户 | 消费者 | +| 运营 | 商城日常使用维护以及操作者。 | +2 目标 +本期实现目标说明: +2.1、技术目标 +| 技术指标 | 指标值 | 备注 | +| 用户响应RT | 1000ms | | +| 用户体量 | | | +| 并发数 | | | +| 开发语言 | | | +| 网络要求 | | | +3 整体概述 +3.1 需求概述 +同一时间仅允许一个新人礼活动(避免同一时间多个活动发放业务过重)。关联优惠券仅支持关联一张 +C端弹窗,若存在进行中的新人礼活动且用户未领取过,则进行弹窗 +3.2 业务架构图(一图概览) +3.3 业务模块列表 +3.4 第三方服务列表(可选) +| 服务厂商 | 类型(接口/设备) | 接口地址 | 备注 | 状态 | +3.5 技术架构 +3.5.1 前端设计 +3.5.2 后端设计 +3.6 领域模型设计 +新人礼主表 +| SQLCREATE TABLE `new_gift` ( `new_gift_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `shop_id` bigint NOT NULL COMMENT '关联店铺 平台为0', `activity_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动名称', `activity_start_time` datetime NOT NULL COMMENT '活动开始时间', `activity_end_time` datetime NOT NULL COMMENT '活动结束时间', `gift_type` int NOT NULL COMMENT '礼物类型 0优惠券 其他待拓展', `activity_status` int NOT NULL COMMENT '活动状态0未开始,1进行中,2已结束', `valid_status` int NOT NULL DEFAULT '0' COMMENT '有效性 0有效 1已失效', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` int NOT NULL DEFAULT '0' COMMENT '是否已删除 0否1是', PRIMARY KEY (`new_gift_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼主表'; | +新人礼关联礼物表 +| SQLCREATE TABLE `new_gift_detail` ( `new_gift_detail_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `new_gift_id` bigint NOT NULL COMMENT '新人礼主键', `gift_type` int NOT NULL COMMENT '礼物类型 0优惠券 其他待拓展', `gift_biz_id` bigint NOT NULL COMMENT '礼物主键Id', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`new_gift_detail_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼 子表,存储主表与礼物关联关系'; | +新人礼发放记录表 +| SQLCREATE TABLE `new_gift_send_log` ( `new_gift_log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` bigint NOT NULL COMMENT '用户ID', `send_status` int NOT NULL COMMENT '发放状态 0成功 1失败', `fail_reason` json DEFAULT NULL COMMENT '失败原因', `new_gift_id` bigint NOT NULL COMMENT '新人礼主键', `new_gift_detail_id` bigint NOT NULL COMMENT '礼物详情主键', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`new_gift_log_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼发放记录表'; | +3.7 数据模型设计 +详见领域模型 +3.8 依赖项 +| 依赖项 | 作用 | 预计提供时间 | 状态 | 责任人 | 交付物 | +4 场景(user story)与流程图(How) +4.1 新增活动 +4.1.1 业务流程图 +4.1.2 时序图 +4.1.3 接口依赖 +无 +4.1.4 接口设计 +| API | 状态 | 说明 | +| /mp/newGift/save | 未开发 | 新增新人礼活动 | +| /mp/newGift/update | 未开发 | 修改新人礼活动 | +| /mp/newGift/detail | 未开发 | 查看新人礼详情 | +| /mp/newGift/delete | 未开发 | 删除新人礼活动 | +| /mp/newGift/page | 未开发 | 新人礼活动分页查询 | +| /ua/newGift/check | 未开发 | 检测用户是否符合进行中的平台/店铺中的新人礼活动。 | +| /ua/newGift/send | 未开发 | 为用户发放对应新人礼绑定的券 | diff --git a/output/versions/新人礼需求/v8/snapshot_meta.json b/output/versions/新人礼需求/v8/snapshot_meta.json new file mode 100644 index 0000000..95ae8ec --- /dev/null +++ b/output/versions/新人礼需求/v8/snapshot_meta.json @@ -0,0 +1,14 @@ +{ + "base_name": "新人礼需求", + "version": "v8", + "snapshot_type": "full_pipeline", + "summary": [ + "manifest", + "analysis", + "relation_report", + "test_points", + "test_cases_markdown", + "excel", + "normalized_inputs" + ] +} diff --git a/output/versions/新人礼需求/v8/新人礼需求.json b/output/versions/新人礼需求/v8/新人礼需求.json new file mode 100644 index 0000000..287c42e --- /dev/null +++ b/output/versions/新人礼需求/v8/新人礼需求.json @@ -0,0 +1,43 @@ +{ + "requirement": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/requirements_raw/新人礼需求.docx", + "requirement_source_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/requirements_raw/新人礼需求.docx", + "requirement_input_type": "docx", + "base_name": "新人礼需求", + "normalized_requirement_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/normalized_inputs/新人礼需求/requirement.md", + "technical_solution_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/technical_solutions/新人礼技术方案.docx" + ], + "normalized_technical_solution_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/normalized_inputs/新人礼需求/technical_solution_01.md" + ], + "analysis_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/analysis/新人礼需求_分析.md", + "relation_report_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/analysis/新人礼需求_关联与冲突.md", + "test_points_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/test_points/新人礼需求_测试点.md", + "test_cases_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/test_cases/新人礼需求_测试用例.md", + "excel_output_dir": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/excel_reports", + "project_profile_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/00_project/project_profile.md", + "knowledge_base_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/terminology.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/test_case_template.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/definition_of_done.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/review_checklist.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/common_missed_scenes.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/historical_defects.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/marketing_rules.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/03_best_practices/payment_flow_cases.md" + ], + "effective_terminology_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/terminology.md" + ], + "optional_terminology_files": [], + "related_requirements": [], + "conflict_candidates_count": 0, + "current_excel_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/excel_reports/新人礼需求_测试用例.xlsx", + "versioning_scheme": { + "current_files": "固定文件名,始终表示当前最新版", + "snapshot_rule": "仅在 export 成功且产物内容发生变化时递增版本", + "snapshot_dir_pattern": "output/versions/{BASE_NAME}/vN/" + }, + "latest_snapshot_version": "v8", + "latest_snapshot_dir": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/versions/新人礼需求/v8" +} diff --git a/output/versions/新人礼需求/v8/新人礼需求_关联与冲突.md b/output/versions/新人礼需求/v8/新人礼需求_关联与冲突.md new file mode 100644 index 0000000..a7ac99b --- /dev/null +++ b/output/versions/新人礼需求/v8/新人礼需求_关联与冲突.md @@ -0,0 +1,16 @@ +# 新人礼需求 关联需求与冲突检查 + +## 目标需求 +- `source_docs/requirements_raw/新人礼需求.docx` + +## 项目画像 +- `knowledge_base/00_project/project_profile.md` + +## 关联技术方案 +- `source_docs/technical_solutions/新人礼技术方案.docx` + +## 关联需求识别 +- 未识别到相似度达到阈值的历史需求文档。 + +## 潜在冲突与修改建议 +- 暂未识别到明显冲突条目。建议在需求评审时继续人工确认。 diff --git a/output/versions/新人礼需求/v8/新人礼需求_分析.md b/output/versions/新人礼需求/v8/新人礼需求_分析.md new file mode 100644 index 0000000..9b9a25d --- /dev/null +++ b/output/versions/新人礼需求/v8/新人礼需求_分析.md @@ -0,0 +1,111 @@ +# 新人礼需求分析 + +## 背景与目标 + +本期需求围绕“新人礼”活动能力建设,目标是在平台端和商家端支持配置新人礼活动,并在 C 端针对符合新人条件的用户展示领取入口与发放优惠券奖励,提升新注册用户的首单转化。 + +技术方案补充了两个关键限制: + +- 同一时间仅允许存在 1 个进行中的新人礼活动。 +- 每个新人礼活动仅允许绑定 1 张优惠券,发放结果需落新人礼发放记录表。 + +## 范围与边界 + +### 范围内 + +- 平台端“营销-新人有礼”列表、查询、新建、编辑、查看、失效、删除。 +- 商家端“营销-新人有礼”同构能力。 +- 新人礼活动配置字段校验:活动名称、活动时间、活动奖品、优惠券选择。 +- 优惠券选择范围控制:平台端仅选平台券,商家端仅选本店铺优惠券。 +- C 端首页和门店首页的新人礼弹窗检查与领取。 +- 发放成功后的优惠券入账和发放记录落库。 +- `ua/newGift/check` 与 `ua/newGift/send` 对应的资格校验和发放行为。 + +### 范围外 + +- 积分类型新人礼,需求和技术方案均明确“暂不支持”。 +- 下单后退款再重新认定为新人场景,技术方案明确“暂不支持下单后退款场景”。 +- 多奖品、多券组合、多人拼抢同一活动池等扩展玩法。 + +## 用户角色与前置条件 + +- 平台运营:维护平台维度新人礼活动。 +- 商家运营:维护店铺维度新人礼活动。 +- C 端用户:登录后触发首页或门店首页新人礼检查与领取。 +- 后端系统:负责活动状态判断、资格校验、优惠券发放、发送日志写入。 + +前置条件: + +- 已存在投放中、未过期、领取方式为“用户领取”的优惠券。 +- 用户已登录,且能获取平台维度与店铺维度的历史下单信息。 +- 发券接口可用,优惠券中心返回的券状态准确。 + +## 关键业务规则 + +1. 平台端和商家端都可以配置新人礼活动,但优惠券范围必须与端侧归属一致。 +2. 活动名称最多 50 个字。 +3. 活动开始时间必须大于等于当前时间,结束时间必须大于开始时间。 +4. 活动奖品当前仅支持优惠券,且每个活动仅能关联 1 张优惠券。 +5. 平台维度同一时间仅允许 1 个进行中的平台新人礼活动;店铺维度同一时间每个店铺仅允许 1 个进行中的门店新人礼活动。 +6. 新人判定按订单提交结果范围判断:平台新人礼查询平台范围订单,店铺新人礼查询当前店铺订单;若用户从未提交过订单,或历史订单最终状态均为交易关闭(包括未支付取消、超时未付、已退款订单等),仍视为新人。 +7. 用户登录首页时,若存在进行中的新人礼活动且用户未领取过,则展示新人礼弹窗。 +8. 门店首页只对门店新人展示门店新人礼弹窗。 +9. 若同时存在弹窗广告,新人礼弹窗必须先于广告弹窗展示。 +10. 用户点击立即领取成功后,奖励进入“我的优惠券”,同时写入新人礼发放记录。 +11. 活动“已结束”和“已失效”并存时,页面优先展示“已失效”。 +12. 活动失效后状态展示为“已失效”,并支持后续删除。 +13. 用户领取平台新人礼后,若仍满足门店新人条件,允许继续领取门店新人礼。 + +## 主流程描述 + +1. 运营在平台端或商家端进入“营销-新人有礼”列表页。 +2. 运营新建活动,填写活动名称、活动时间并选择 1 张符合条件的优惠券。 +3. 系统校验时间、优惠券范围、优惠券状态和活动并存规则,保存活动。 +4. 活动进入“未开始”或“进行中”状态,列表页按状态展示可操作按钮。 +5. C 端用户登录平台首页或门店首页时,调用资格检查接口。 +6. 若存在进行中的匹配活动且用户符合新人条件且未领取过,则展示新人礼弹窗。 +7. 用户点击“立即领取”,系统发放优惠券并记录发放日志。 +8. 发放成功后,用户可在个人中心优惠券列表查看奖励。 + +## 跨需求关联与冲突修订建议 + +- 当前未识别到需要纳入本次评审的关联需求,也未发现需要基于历史需求执行的规则冲突修订。 +- 当前无需对历史需求做口径覆盖修订,但仍需重点防御营销类公共风险: + - 重复点击导致重复发放。 + - 前端传参篡改导致越权选券或跨店铺发券。 + - 状态变更与页面展示不一致。 + +## 技术方案补充约束 + +- `ua/newGift/check` 负责资格检查,应重点验证平台维度和店铺维度“新人”判定口径。 +- `ua/newGift/send` 负责发券,应重点验证幂等、防重复领取、失败原因记录和成功落库。 +- 数据模型拆分为主表、礼物关联表、发放记录表,说明测试不能只看页面成功提示,还要覆盖: + - `new_gift` 主表活动状态和有效性字段。 + - `new_gift_detail` 活动与券的绑定关系。 + - `new_gift_send_log` 发放成功或失败记录。 +- 技术目标给出用户响应 RT 1000ms,应至少对资格检查和领取动作补充性能基线关注。 + +## 产品确认口径 + +- 活动并存范围:平台维度同一时间仅允许 1 条进行中的平台活动;店铺维度同一时间每个店铺仅允许 1 条进行中的门店活动。 +- 新人判定口径:若用户从未提交过订单,或历史订单最终状态均为交易关闭(包括未支付取消、超时未付、已退款订单),仍视为新人。 +- 状态展示优先级:活动“已结束”和“已失效”并存时,优先展示“已失效”。 +- 平台礼与门店礼关系:用户已领取平台新人礼后,只要满足门店新人条件,仍允许领取门店新人礼。 + +## 项目差异化测试约束 + +- 平台端、商家端、C 端是三套角色链路,必须覆盖角色隔离和数据隔离。 +- 这是典型营销发券能力,需重点覆盖越权选券、重复发放、状态错发和资损场景。 +- 预期结果必须同时覆盖 UI 反馈和后台状态变化,特别是活动状态、券领取结果、发放日志。 + +## 风险点与确认结果 + +- 风险点:重复点击“立即领取”或接口重试导致同一用户重复发放优惠券。 +- 风险点:商家端错误选择了其他店铺的优惠券,导致跨店资损或越权发券。 +- 风险点:活动失效、已结束、已删除三个状态口径不清,可能导致列表按钮和实际行为不一致。 +- 风险点:平台新人和店铺新人的判定依赖历史订单数据,若口径不清,容易误发或漏发。 +- 风险点:同一时间仅允许 1 个进行中的活动,如果平台端和商家端同时配置活动,范围口径不清会导致规则冲突。 +- 确认结果:平台端和商家端活动可以并存,但约束粒度为“平台一条、每店铺各一条”。 +- 确认结果:未支付取消、超时未付、已退款等最终交易关闭单据不影响新人资格。 +- 确认结果:活动“已结束”和“已失效”同时成立时,页面优先展示“已失效”。 +- 确认结果:已领取平台新人礼的用户,若满足门店新人条件,仍允许继续领取门店新人礼。 diff --git a/output/versions/新人礼需求/v8/新人礼需求_测试点.md b/output/versions/新人礼需求/v8/新人礼需求_测试点.md new file mode 100644 index 0000000..521a5b3 --- /dev/null +++ b/output/versions/新人礼需求/v8/新人礼需求_测试点.md @@ -0,0 +1,71 @@ +# 新人礼需求测试点 + +## 1. 平台端列表与状态管理 + +1. 校验平台端列表默认按创建时间倒序展示,分页默认 10 条,支持切换 10、20、30、50 条。[需求] +2. 校验按活动名称模糊查询、按活动状态精准查询、重置查询条件的行为正确。[需求] +3. 校验活动状态“未开始、进行中、已结束、已失效”的展示口径和操作按钮是否符合规则。[需求] +4. 校验活动失效后有效性展示为“已失效”,且操作栏切换为删除入口。[需求] +5. 校验删除为永久删除,删除后列表不可见,后台数据状态与页面一致。[需求][项目画像] +6. 校验列表展示字段、创建时间、活动状态、操作栏内容与需求一致。[需求] +7. 校验不同状态下操作栏按钮映射正确,未开始/进行中/已结束/已失效的按钮展示不串位。[需求] + +## 2. 活动配置与规则校验 + +1. 校验活动名称最大 50 字,超长时前端与后端均能拦截。[需求][漏测清单] +2. 校验活动开始时间小于当前时间、结束时间小于开始时间时不可保存。[需求][边界] +3. 校验活动奖品当前仅支持优惠券,积分奖励入口不可用或被明确拦截。[需求][技术方案] +4. 校验每个活动仅能关联 1 张优惠券,无法多选、多绑或通过接口绕过限制。[技术方案][项目画像] +5. 校验平台维度同一时间仅允许 1 个进行中的平台新人礼活动,新增或编辑命中并存条件时保存失败并给出明确提示。[技术方案] +6. 校验同一店铺维度同一时间仅允许 1 个进行中的门店新人礼活动,不同店铺活动可并存。[技术方案] +7. 校验编辑活动时,已开始活动是否只允许查看不允许修改关键字段,状态与按钮保持一致。[需求] + +## 3. 优惠券选择与权限隔离 + +1. 校验平台端仅能选择平台可用优惠券,且仅展示投放中、未过期、领取方式为用户领取的券。[需求] +2. 校验商家端仅能选择本店铺可用优惠券,不能看到或绑定其他店铺优惠券。[需求][项目画像] +3. 校验优惠券选择弹窗支持按名称筛选,选择前后展示信息正确。[需求] +4. 校验通过抓包篡改券 ID、店铺 ID 或活动归属时,后端能拦截越权绑定。[历史缺陷][项目画像] + +## 4. 商家端差异化行为 + +1. 校验商家端列表、查询、状态展示与平台端同构,但数据仅限当前店铺可见。[需求][项目画像] +2. 校验商家端新增活动时,跨店铺数据隔离正确,门店 A 无法操作门店 B 活动。[项目画像] +3. 校验商家端活动失效、删除后,仅影响当前店铺,不影响平台端和其他店铺活动。[需求] +4. 校验平台端活动数据在商家端不可见,商家端活动数据在平台端不可见。[需求][项目画像] +5. 校验查看态页面所有字段只读,编辑态与查看态权限边界正确。[需求] + +## 5. C 端资格检查与弹窗展示 + +1. 校验平台新人登录平台首页时,存在进行中平台新人礼活动则展示弹窗。[需求] +2. 校验平台范围存在已支付或非交易关闭订单时,不展示平台新人礼弹窗。[需求][边界] +3. 校验店铺新人进入门店首页时,存在进行中门店新人礼活动则展示门店弹窗。[需求] +4. 校验当前店铺范围存在已支付或非交易关闭订单时,不展示门店新人礼弹窗。[需求][边界] +5. 校验同时存在广告弹窗时,新人礼弹窗优先展示,关闭新人礼后再展示广告。[需求] +6. 校验无进行中活动、活动未开始、活动已结束、活动已失效时,资格检查结果和页面展示均正确。[需求][状态流转] +7. 校验用户历史订单均为交易关闭(未支付取消、超时未付、已退款)时,仍识别为新人并展示弹窗。[需求][产品确认] +8. 校验未登录进入平台首页或门店首页时,不展示新人礼弹窗且不误触发领取流程。[需求][边界] +9. 校验平台首页和门店首页展示的奖品信息与后台配置的优惠券信息一致,包括门槛、优惠金额、用券时间等。[需求] + +## 6. 领取发放与日志落库 + +1. 校验点击“立即领取”成功后,页面提示成功,优惠券进入“我的优惠券”。[需求] +2. 校验领取成功后,`new_gift_send_log` 写入成功记录,记录用户、活动、活动明细和状态。[技术方案] +3. 校验同一用户重复点击“立即领取”或短时间重复调用发放接口时,只发放 1 次,日志不出现重复成功记录。[历史缺陷][项目画像] +4. 校验领取失败时,页面提示失败原因,发放日志记录失败原因,不出现半成功状态。[技术方案][项目画像] +5. 校验用户已领取过奖励后,再次进入首页不再弹出同一活动弹窗。[需求] +6. 校验用户已领取平台新人礼后,若满足门店新人条件,仍可在门店首页领取门店新人礼。[需求][产品确认] + +## 7. 异常、并发与非功能 + +1. 校验弱网、超时或接口重试场景下,资格检查接口不会错误多次弹窗或误判资格。[漏测清单][非功能] +2. 校验领取接口超时或前端重复提交时,不会重复发券,用户可通过优惠券列表或重新进入页面查看最终结果。[漏测清单][非功能] +3. 校验同一账号在两个终端同时领取新人礼时,最终仅 1 次成功发放。[项目画像][并发] +4. 校验资格检查和领取接口响应时间满足技术目标 RT 1000ms,至少在常规测试数据量下不明显超时。[技术方案][非功能] + +## 8. 产品确认口径回归 + +1. 校验平台活动与门店活动可同时存在,但平台维度仅允许 1 条进行中活动、每个店铺维度仅允许 1 条进行中活动。[产品确认] +2. 校验历史订单均为交易关闭时仍视为新人;存在已支付或非关闭订单时不视为新人。[产品确认] +3. 校验活动“已结束”和“已失效”同时成立时,列表优先展示“已失效”。[产品确认] +4. 校验用户领取平台新人礼后,仍可继续领取符合条件的门店新人礼。[产品确认] diff --git a/output/versions/新人礼需求/v8/新人礼需求_测试用例.md b/output/versions/新人礼需求/v8/新人礼需求_测试用例.md new file mode 100644 index 0000000..cd7cfe6 --- /dev/null +++ b/output/versions/新人礼需求/v8/新人礼需求_测试用例.md @@ -0,0 +1,33 @@ +# 新人礼需求测试用例 + +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| PLT_NG_LIST_001 | 平台端-营销管理-新人有礼列表 | 验证平台端列表默认排序、分页和查询功能正确 | P1 | 功能测试 | 平台端已存在 12 条新人礼活动数据,覆盖未开始、进行中、已结束、已失效状态;测试账号具备列表权限 | 1. 登录平台端进入营销-新人有礼列表
2. 观察默认排序和分页条数
3. 输入活动名称关键字执行查询
4. 选择活动状态执行筛选
5. 点击重置 | 活动A 创建时间晚于活动B;查询关键字=新人;状态=进行中 | 1. 列表默认按创建时间倒序展示
2. 默认每页展示 10 条
3. 名称查询仅返回命中活动
4. 状态筛选仅返回对应状态活动
5. 点击重置后查询条件被清空,列表恢复默认结果 | 主流程 | +| PLT_NG_CFG_001 | 平台端-营销管理-新人有礼配置 | 验证活动时间非法时无法保存活动 | P1 | 功能测试 | 平台运营账号已登录;存在可选平台优惠券 | 1. 点击新建活动
2. 输入合法活动名称
3. 设置开始时间早于当前时间后尝试保存
4. 再设置结束时间早于开始时间后尝试保存 | 活动名称=平台新人礼A;开始时间=当前时间前 1 分钟;结束时间=开始时间前 1 秒 | 1. 页面对开始时间非法给出明确提示
2. 页面对结束时间非法给出明确提示
3. 活动保存失败
4. 后台 `new_gift` 主表不新增活动记录 | 边界值 | +| PLT_NG_CFG_002 | 平台端-营销管理-新人有礼配置 | 验证平台端只能绑定 1 张符合条件的平台优惠券 | P0 | 功能测试 | 平台运营账号已登录;平台下存在 3 张券,分别为投放中可领券、已过期券、非用户领取券 | 1. 点击新建活动
2. 打开选择优惠券弹窗
3. 观察券列表范围
4. 选择 1 张投放中可领券后尝试继续追加选择第 2 张券
5. 保存活动 | 券A=投放中未过期用户领取券;券B=已过期券;券C=系统发放券 | 1. 弹窗仅展示平台可用且投放中、未过期、用户领取的券
2. 已过期券和非用户领取券不展示或不可选
3. 页面仅允许单选 1 张券
4. 保存成功后 `new_gift_detail` 仅存在 1 条券绑定记录 | [AI修正: 技术方案限定单券绑定] | +| PLT_NG_CFG_003 | 平台端-营销管理-新人有礼配置 | 验证积分奖励当前不支持 | P1 | 功能测试 | 平台运营账号已登录 | 1. 点击新建活动
2. 进入活动奖品区域
3. 查看送积分配置入口
4. 若可通过前端或抓包提交积分类型则尝试保存 | gift_type=积分;积分值=100 | 1. 页面不允许启用积分奖品,或该入口展示为暂不支持
2. 若前端被绕过提交积分类型,后端拦截保存并返回错误提示
3. 后台不生成积分类型活动记录 | [AI修正: 范围外能力拦截] | +| PLT_NG_RULE_001 | 平台端-营销管理-新人有礼配置 | 验证平台维度同一时间仅允许一个进行中的新人礼活动 | P0 | 功能测试 | 已存在 1 条平台活动A,时间范围覆盖当前时刻且状态为进行中;平台运营账号已登录 | 1. 点击新建活动
2. 填写与活动A 时间重叠的新活动B信息
3. 选择合法平台优惠券并保存 | 活动A 时间=今天 10:00 到 明天 10:00;活动B 时间=今天 12:00 到 明天 12:00 | 1. 页面或接口提示当前已有进行中的平台新人礼活动
2. 活动B 保存失败
3. 后台不新增活动B 记录
4. 活动A 状态和绑定关系不受影响 | [AI修正: 按产品确认口径更新为平台维度唯一] | +| PLT_NG_STATE_001 | 平台端-营销管理-新人有礼状态 | 验证活动失效后展示已失效并支持删除 | P1 | 功能测试 | 平台已存在 1 条未开始活动和 1 条进行中活动;平台运营账号已登录 | 1. 在列表中对活动执行失效操作
2. 刷新列表查看状态和操作按钮
3. 对已失效活动执行删除操作
4. 再次刷新列表 | 活动A=未开始;活动B=进行中 | 1. 失效后活动有效性展示为已失效
2. 失效活动的操作按钮切换为删除
3. 删除确认后页面提示删除成功
4. 列表中不再显示该活动
5. 后台活动记录被标记删除或按实现永久删除,不可继续被资格检查命中 | 状态流转 | +| PLT_NG_STATE_002 | 平台端-营销管理-新人有礼状态 | 验证活动已结束且已失效时列表优先展示已失效 | P1 | 功能测试 | 平台存在 1 条活动,活动结束时间早于当前时间,且已执行失效操作;平台运营账号已登录 | 1. 进入平台端新人有礼列表
2. 查询该活动状态展示和操作按钮 | 活动A 结束时间=当前时间前 1 天;valid_status=已失效 | 1. 列表最终状态优先展示为已失效
2. 操作按钮按已失效口径展示删除,不按已结束展示
3. 页面状态展示与后台有效性字段一致 | [AI修正: 按产品确认口径补充状态优先级] | +| MCH_NG_SCOPE_001 | 商家端-营销管理-新人有礼配置 | 验证商家端只能选择本店铺优惠券 | P0 | 功能测试 | 商家A 账号已登录;商家A 券A 为可领券;商家B 券B 为可领券 | 1. 商家A 进入新建活动页面
2. 打开优惠券选择弹窗
3. 搜索本店券A 和外店券B
4. 选择券A 保存活动 | 商家A ID=1001;商家B ID=1002;券A 属于商家A;券B 属于商家B | 1. 列表仅展示商家A 可用券
2. 搜索券B 无结果或不可选
3. 保存成功后活动绑定的券归属为商家A
4. 后台不存在跨店绑定关系 | [AI修正: 覆盖数据隔离与越权风险] | +| MCH_NG_SCOPE_002 | 商家端-营销管理-新人有礼配置 | 验证篡改券 ID 无法越权绑定其他店铺优惠券 | P0 | 安全性测试 | 商家A 账号已登录;抓包工具可修改请求;商家B 存在 1 张有效券 | 1. 商家A 正常进入新建活动页面并选择商家A 自有券
2. 提交前抓包将券 ID 替换为商家B 券 ID
3. 提交保存请求 | 提交参数原券 ID=COUPON_A_01;篡改后券 ID=COUPON_B_01 | 1. 后端拦截越权绑定请求并返回错误提示
2. 页面保存失败
3. 后台不生成跨店活动与券绑定关系
4. 审计日志记录异常请求或失败原因 | [AI修正: 对应越权与价格篡改类历史风险] | +| MCH_NG_RULE_001 | 商家端-营销管理-新人有礼配置 | 验证同一店铺仅允许一个进行中的门店新人礼活动但不同店铺可并存 | P0 | 功能测试 | 商家A 已存在 1 条进行中的门店活动A;商家B 无进行中活动;商家A、商家B 账号均可登录 | 1. 商家A 新建与活动A 时间重叠的门店活动A2并保存
2. 商家B 新建与活动A 同时段重叠的门店活动B并保存
3. 查询两家店铺活动列表 | 商家A ID=1001;商家B ID=1002;活动A2 与活动A 时间重叠;活动B 与活动A 时间重叠 | 1. 商家A 保存活动A2失败,并提示当前店铺已有进行中的新人礼活动
2. 商家B 保存活动B成功
3. 后台显示门店活动限制按店铺维度生效,不会因商家A 活动阻塞商家B 配置 | [AI修正: 按产品确认口径补充店铺维度唯一] | +| C_NG_POP_001 | 用户端-首页-新人礼弹窗 | 验证平台新人登录平台首页时展示新人礼弹窗 | P0 | 冒烟测试 | 平台存在 1 条进行中的平台新人礼活动;用户U1 已注册登录且平台维度无下单记录;用户未领取过该活动 | 1. 用户U1 登录平台首页
2. 观察首页首屏弹窗 | 用户U1;平台活动=进行中;平台下单记录=0 | 1. 首页展示新人礼弹窗
2. 弹窗内容展示活动奖励信息和立即领取按钮
3. 后台资格检查接口返回命中活动和可领取状态 | 主流程 | +| C_NG_POP_002 | 用户端-首页-新人礼弹窗 | 验证非平台新人登录平台首页时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条进行中的平台新人礼活动;用户U2 已注册登录且平台维度存在已下单记录 | 1. 用户U2 登录平台首页
2. 观察首页弹窗和资格检查结果 | 用户U2;平台已支付订单数=1 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回不满足新人条件
3. 页面不出现立即领取入口 | 边界值 | +| C_NG_POP_003 | 用户端-门店首页-新人礼弹窗 | 验证平台老用户但门店新用户进入门店首页时展示门店新人礼弹窗 | P0 | 功能测试 | 商家A 存在 1 条进行中的门店新人礼活动;用户U3 平台维度已有下单记录,但在商家A 维度无下单记录;用户未领取过商家A 活动 | 1. 用户U3 进入商家A 门店首页
2. 观察首页弹窗
3. 查询资格检查结果 | 用户U3;平台订单数=1;商家A 订单数=0 | 1. 门店首页展示商家A 新人礼弹窗
2. 资格检查接口按门店维度返回可领取
3. 弹窗奖励信息与商家A 活动配置一致 | [AI修正: 覆盖平台新人和店铺新人差异口径] | +| C_NG_POP_004 | 用户端-首页-弹窗优先级 | 验证存在广告弹窗时新人礼弹窗优先展示 | P1 | 功能测试 | 平台存在 1 条进行中的新人礼活动;首页同时配置普通广告弹窗;用户U1 满足平台新人资格 | 1. 用户U1 登录平台首页
2. 观察首个弹窗
3. 关闭新人礼弹窗后继续观察 | 用户U1;广告弹窗=已配置 | 1. 首个弹窗为新人礼弹窗
2. 关闭新人礼弹窗后再展示广告弹窗
3. 整个过程中弹窗顺序与需求一致 | 交互优先级 | +| C_NG_POP_005 | 用户端-首页-新人礼弹窗 | 验证历史订单均为交易关闭时仍识别为平台新人 | P0 | 功能测试 | 平台存在 1 条进行中的平台新人礼活动;用户U6 历史仅有未支付取消单、超时未付单或已退款订单,且无其他非关闭订单 | 1. 用户U6 登录平台首页
2. 观察首页弹窗
3. 查询资格检查结果 | 用户U6 历史订单状态=交易关闭、已退款、超时未付 | 1. 首页展示平台新人礼弹窗
2. 资格检查接口返回满足平台新人条件
3. 页面不因历史关闭单或已退款单而拦截新人资格 | [AI修正: 按产品确认口径补充交易关闭单仍算新人] | +| C_NG_SEND_001 | 用户端-首页-新人礼领取 | 验证点击立即领取成功后优惠券入账并写发放日志 | P0 | 冒烟测试 | 用户U1 满足平台新人资格;平台存在进行中活动且绑定有效券;用户未领取过该活动 | 1. 用户U1 在新人礼弹窗点击立即领取
2. 观察页面提示
3. 进入我的优惠券查询奖励
4. 查询发放日志 | 用户U1;活动ID=NG1001;券ID=PC1001 | 1. 页面提示领取成功
2. 我的优惠券列表新增对应优惠券
3. `new_gift_send_log` 新增 1 条成功记录,包含用户、活动、活动明细和发送状态
4. 该用户再次进入首页时不再展示同一活动弹窗 | 主流程 | +| C_NG_SEND_002 | 用户端-首页-新人礼领取 | 验证同一用户重复点击立即领取时只发放一次 | P0 | 回归测试 | 用户U1 满足新人资格;平台存在进行中活动且绑定有效券;抓包或前端可模拟快速重复点击 | 1. 用户U1 打开新人礼弹窗
2. 在 1 秒内连续点击 3 次立即领取
3. 查询优惠券列表和发放日志 | 用户U1;活动ID=NG1001;重复点击次数=3 | 1. 页面最多显示 1 次领取成功提示
2. 用户仅新增 1 张优惠券
3. `new_gift_send_log` 仅有 1 条成功记录,其余请求被幂等拦截或返回已领取
4. 不出现重复发券 | [AI修正: 对应重复提交和重复支付类历史风险] | +| C_NG_SEND_003 | 用户端-首页-新人礼领取 | 验证领取接口超时重试时不会重复发券 | P1 | 回归测试 | 用户U1 满足新人资格;模拟领取接口首个请求响应超时但后端已处理成功 | 1. 用户U1 点击立即领取
2. 将首个请求模拟为前端超时
3. 用户再次点击立即领取或页面自动重试
4. 查询优惠券列表和发放日志 | 首次请求后端处理成功;前端超时 5 秒 | 1. 页面提示处理中或可稍后刷新查看结果
2. 最终用户仅获得 1 张优惠券
3. 发放日志中仅 1 条成功记录,不存在多条成功发放
4. 页面最终状态与后台结果一致 | 非功能 | +| C_NG_SEND_004 | 用户端-首页-新人礼领取 | 验证发券失败时记录失败原因且不出现半成功状态 | P1 | 功能测试 | 用户U4 满足新人资格;将发券接口模拟为失败 | 1. 用户U4 点击立即领取
2. 观察页面提示
3. 查询我的优惠券列表
4. 查询发放日志 | 券中心返回=库存不足或券失效 | 1. 页面提示领取失败及失败原因
2. 我的优惠券列表不新增该券
3. `new_gift_send_log` 记录失败状态和失败原因
4. 用户状态不被误标记为已领取 | [AI修正: 覆盖部分成功和异常记录风险] | +| C_NG_SEND_005 | 用户端-首页-新人礼领取 | 验证同一账号双端并发领取时最终仅一次成功 | P1 | 功能测试 | 用户U5 满足新人资格;用户在手机端和 H5 端同时登录;平台存在进行中活动 | 1. 手机端和 H5 端同时打开新人礼弹窗
2. 两端几乎同时点击立即领取
3. 查询两端提示、优惠券列表和发放日志 | 用户U5;双端并发间隔小于 200ms | 1. 最终仅 1 次领取成功
2. 另一端返回已领取、处理中或重复请求提示
3. 用户优惠券列表仅新增 1 张券
4. 发放日志仅保留 1 条成功记录 | 并发 | +| C_NG_SEND_006 | 用户端-门店首页-新人礼领取 | 验证用户领取平台新人礼后仍可继续领取门店新人礼 | P0 | 功能测试 | 用户U7 已成功领取平台新人礼;商家A 存在进行中的门店新人礼活动;用户U7 在商家A 维度无非关闭订单且未领取过门店活动 | 1. 用户U7 登录平台首页并确认已领取平台新人礼
2. 用户U7 进入商家A 门店首页
3. 观察门店弹窗并点击立即领取
4. 查询门店发放日志和优惠券列表 | 用户U7;平台活动ID=PLT1001;门店活动ID=SHOP1001 | 1. 门店首页仍展示门店新人礼弹窗
2. 用户可成功领取门店优惠券
3. 优惠券列表中同时存在平台新人礼券和门店新人礼券
4. 门店活动发放日志新增成功记录,不因已领取平台礼而被拦截 | [AI修正: 按产品确认口径补充平台礼与门店礼可并存] | +| C_NG_CHECK_001 | 用户端-首页-资格检查 | 验证无进行中活动或活动失效时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在未开始、已结束或已失效活动,但不存在进行中活动;用户U1 满足新人资格 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动状态分别为未开始、已结束、已失效 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动
3. 页面不出现错误提示或异常闪现弹窗 | 状态流转 | +| API_NG_PERF_001 | 用户端-资格检查-接口性能 | 验证资格检查接口在常规数据量下满足 RT 基线 | P2 | 性能测试 | 存在 100 条历史发放记录和 10 条活动数据;性能环境可统计接口耗时 | 1. 触发用户进入平台首页调用资格检查接口
2. 连续执行 30 次
3. 统计平均 RT 和 P95 | 接口=`/ua/newGift/check`;样本量=30 | 1. 常规场景下接口平均 RT 和 P95 满足 1000ms 基线或接近目标
2. 页面无明显卡顿或超时提示
3. 若超基线,应能定位是活动查询、资格判定还是日志判断链路耗时 | [AI修正: 技术方案给出 RT 1000ms] | +| C_NG_RULE_001 | 用户端-资格判定-新人口径 | 验证存在已支付订单时不再识别为新人 | P1 | 功能测试 | 用户U8 存在 1 笔平台已支付订单;平台存在进行中活动 | 1. 用户U8 登录平台首页
2. 观察是否弹出新人礼
3. 查询资格检查返回 | 用户U8 历史订单状态=已支付 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回不满足新人条件
3. 页面展示与产品确认口径一致,不因已支付历史订单继续认定为新人 | [AI修正: 按产品确认口径更新新人判定] | +| C_NG_POP_006 | 用户端-首页-新人礼弹窗 | 验证未登录进入首页时不展示新人礼弹窗 | P0 | 功能测试 | 平台或门店存在进行中的新人礼活动;用户未登录 | 1. 未登录直接进入平台首页
2. 未登录直接进入门店首页
3. 观察页面弹窗与网络请求 | 访问端=H5/小程序;登录态=未登录 | 1. 平台首页和门店首页均不展示新人礼弹窗
2. 页面不进入领取流程
3. 若触发资格检查请求,应返回未登录拦截而非可领取结果 | [AI修正: 取自团队现有功能用例] | +| C_NG_POP_007 | 用户端-首页-新人礼展示 | 验证首页展示的奖品信息与后台配置一致 | P0 | 功能测试 | 平台和商家端各存在 1 条进行中的新人礼活动,且分别绑定不同门槛和优惠内容的优惠券;用户满足资格 | 1. 平台新人登录平台首页查看弹窗奖品信息
2. 店铺新人进入门店首页查看弹窗奖品信息
3. 对比后台券配置 | 平台券=满100减20, 用券时间 2026-05-01 至 2026-05-31;店铺券=8折券, 上限 30 元 | 1. 平台首页弹窗展示的平台券门槛、优惠金额或折扣、用券时间与后台配置一致
2. 门店首页弹窗展示的商家券信息与商家端配置一致
3. 不出现平台券和商家券信息串位 | [AI修正: 取自团队现有功能用例] | +| DATA_NG_SCOPE_001 | 平台端-商家端-数据隔离 | 验证平台端与商家端新人礼活动数据不互通 | P0 | 功能测试 | 平台端已配置 1 条平台新人礼活动;商家A 已配置 1 条门店新人礼活动;测试账号分别具备平台端和商家端权限 | 1. 在平台端查看新人礼活动列表
2. 在商家A 端查看新人礼活动列表
3. 对比两端列表数据 | 平台活动ID=PLT1001;商家活动ID=SHOP1001 | 1. 平台端仅展示平台活动数据,不展示商家活动
2. 商家端仅展示当前店铺活动数据,不展示平台活动
3. 两端数据查询、查看、编辑入口相互隔离 | [AI修正: 取自团队现有功能用例] | +| VIEW_NG_READONLY_001 | 平台端-营销管理-新人有礼查看 | 验证查看态页面所有字段只读不可编辑 | P1 | 功能测试 | 平台已存在 1 条新人礼活动;平台运营账号已登录 | 1. 在列表中点击查看
2. 观察活动名称、活动时间、活动奖品等字段状态
3. 尝试修改字段或提交 | 活动ID=PLT1001 | 1. 查看页所有字段均为只读态
2. 页面不提供可提交修改的入口
3. 用户无法通过查看态改写活动配置 | [AI修正: 取自团队现有功能用例] | +| PLT_NG_LIST_002 | 平台端-营销管理-新人有礼列表 | 验证列表展示字段和操作栏状态映射正确 | P1 | 功能测试 | 平台端存在未开始、进行中、已结束、已失效四类活动;平台运营账号已登录 | 1. 进入新人有礼列表
2. 逐条检查活动名称、活动时间、活动状态、创建时间、操作栏
3. 对比不同状态下的操作按钮 | 活动A=未开始;活动B=进行中;活动C=已结束;活动D=已失效 | 1. 列表展示字段完整且内容正确
2. 未开始活动展示编辑、失效
3. 进行中活动展示查看、失效或按最终规则允许的编辑能力
4. 已结束和已失效活动操作栏按需求展示删除或受限操作 | [AI修正: 取自团队现有功能用例] | diff --git a/output/versions/新人礼需求/v8/新人礼需求_测试用例.xlsx b/output/versions/新人礼需求/v8/新人礼需求_测试用例.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..495c4b287acc3247c6857fedb506f37f4d3a3d4e GIT binary patch literal 12287 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 Sa}(5`o$pWaFQ@zG>i+}Gi~S$~ literal 0 HcmV?d00001 diff --git a/output/versions/新人礼需求/v9/normalized_inputs/requirement.md b/output/versions/新人礼需求/v9/normalized_inputs/requirement.md new file mode 100644 index 0000000..e825bae --- /dev/null +++ b/output/versions/新人礼需求/v9/normalized_inputs/requirement.md @@ -0,0 +1,61 @@ +# 新人礼需求 + +> 文档角色:需求文档 +> 原始来源:`source_docs/requirements_raw/新人礼需求.docx` + +基线-新人礼 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 0.0.1 | 文档创建 | 张昊 | 2026-02-28 | +一、业务背景 +基于问界需求清单 新人礼需求 +二、业务目标 +通过发布新人礼活动,吸引新用户注册使用~平台端&商家端支持发布新人礼活动,支持配置优惠券奖品,c端新用户注册展示新人礼内容 +三、产品设计 +1. 平台端-营销-新人有礼 +1.1 新人有礼列表 +列表数据说明 +数据权限:有此菜单列表权限的用户可看数据 +排序规则:按数据新增时间倒序排列 +分页规则:默认10行每页,可自主选择每页显示的条数(10/20/30/50) +数据来源:如下表 +| 数据字段 | 数据来源 | +| 活动名称 | 来源【新增/编辑】表单同名字段 | +| 活动时间 | 来源【新增/编辑】表单“活动时间“数据 | +| 活动状态 | 见下方状态逻辑说明 | +| 活动有效性 | 展示有效/已失效,支持 失效活动,失效后展示 已失效,失效后 操作栏展示删除操作 | +| 活动奖品 | 展示活动配置的奖品,当前活动奖品仅支持优惠券 | +| 创建时间 | 活动创建时间 | +状态逻辑说明 +| 状态名称 | 状态变更条件 | 可操作按钮 | +| 未开始 | 活动时间开始时间>当前时间 | 编辑,失效 | +| 进行中 | 活动时间开始时间<=当前时间 | 查看,失效 | +| 已结束 | 活动时间结束时间<当前时间 | 删除 | +查询条件说明 +| 查询条件 | 查询逻辑 | +| 活动名称 | 模糊查询,查询列表字段“活动名称” | +| 活动状态 | 精准查询,单选,选项数据:未开始、进行中、已结束、已失效,默认空 | +功能按钮说明 +| 按钮名称 | 触发后逻辑说明 | | +| 新建 | 在当前窗口打开“新建新人礼”弹窗 | | +| 查询 | 1、已选查询条件情况下,列表显示符合条件的数据 2、查询条件无匹配数据时,列表显示空,提示”暂无数据“ | | +| 重置 | 清空查询条件 | | +| 编辑 | 打开编辑表单弹窗 | | +| 查看 | 打开查看表单弹窗 | | +| 失效 | 打开失效操作弹窗,失效操作后,状态变更为已失效 | | +| 删除 | 打开删除操作弹窗,删除操作后,在列表删除活动(永久删除);取消后,关闭删除弹窗。 | | +1.2 新增/编辑 +页面字段说明 +| 字段名称 | 逻辑规则 | 是否必填 | 是否可编辑 | 原型界面、逻辑补充 | +| 活动名称 | 文本输入,最多50个字 | 是 | 是 | | +| 活动时间 | 开始时间-结束时间,年月日时分秒 | 是 | 是 | 控制活动的有效时段,可选择的时间大于等于当前时间,结束时间大于开始时间 | +| 活动奖品 | 多选 | 是 | 是 | | +| | 送优惠券 优惠券: 勾选后展示选择优惠券,只能选择1张优惠券,选择后展示选中优惠券信息表格 选择优惠券弹窗: 通用优惠券选择弹窗,单选 平台端展示平台可用优惠券列表, 商家端展示商家可用的优惠券列表, 优惠券列表数据展示规则:投放,未过期且为 用户领取 的优惠券,支持根据名称筛选 | 是 | 是 | 优惠券列表:选择前 优惠券列表:选择后 选择优惠券弹窗: | +| | 送积分 可输入1-999999的整数,配置生效后调用发积分接口发放积分 | 是 | 否 | 暂不支持 | +2. 商家端-营销-新人有礼 +功能同平台端,仅优惠券选择时,仅可选择该店铺下的优惠券 +3. C端 +3.1 首页 +| 平台首页-新人礼领取提示 奖励领取后,可在个人中心优惠券查看 | 店铺首页-新人礼领取提示 | +| 功能点 | 功能说明 | +| 弹窗逻辑 | 1)用户未在任意门店下过单,即视为新用户,登录后进入首页,弹窗提示用户领取新人礼奖励 2)用户未在该门店下过单,即视为门店新用户,登录后进入门店首页,弹窗提示用户领取新人礼奖励时机3)如果平台或店铺设置了弹窗广告,则新人礼弹窗在弹窗广告之前展示,关闭新人礼弹窗后,展示弹窗广告内容 | +| 优惠券 | 用户点击新人礼弹窗立即领取按钮,如果领取成功,奖励进入我的-优惠券列表,并提示用户领取成功 | diff --git a/output/versions/新人礼需求/v9/normalized_inputs/technical_solution_01.md b/output/versions/新人礼需求/v9/normalized_inputs/technical_solution_01.md new file mode 100644 index 0000000..095f30b --- /dev/null +++ b/output/versions/新人礼需求/v9/normalized_inputs/technical_solution_01.md @@ -0,0 +1,66 @@ +# 新人礼技术方案 + +> 文档角色:技术方案 +> 原始来源:`source_docs/technical_solutions/新人礼技术方案.docx` + +基线改造---新人礼技术方案&需求概述 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 1.0 | 建档 | 陶震 | 2026-2-21 | +1 背景 +1.1  需求背景 +新增,针对于新注册,未下单用户发放专属优惠券的场景(暂不支持下单后退款场景) +1.2 业务现况 +1.3. 业务系统现况 +1.4 名词说明 +| 名称 | 描述 | +| 新人(平台新人,店铺新人) | 平台新人:未在该平台下过单的用户,即shop_custormer中无任何数据的user 店铺新人:未在该店铺下过单的用户,即shop——customer中无该店铺该user数据的用户 | +1.7 涉及人员 +| 角色名称 | 使用内容 | +| 用户 | 消费者 | +| 运营 | 商城日常使用维护以及操作者。 | +2 目标 +本期实现目标说明: +2.1、技术目标 +| 技术指标 | 指标值 | 备注 | +| 用户响应RT | 1000ms | | +| 用户体量 | | | +| 并发数 | | | +| 开发语言 | | | +| 网络要求 | | | +3 整体概述 +3.1 需求概述 +同一时间仅允许一个新人礼活动(避免同一时间多个活动发放业务过重)。关联优惠券仅支持关联一张 +C端弹窗,若存在进行中的新人礼活动且用户未领取过,则进行弹窗 +3.2 业务架构图(一图概览) +3.3 业务模块列表 +3.4 第三方服务列表(可选) +| 服务厂商 | 类型(接口/设备) | 接口地址 | 备注 | 状态 | +3.5 技术架构 +3.5.1 前端设计 +3.5.2 后端设计 +3.6 领域模型设计 +新人礼主表 +| SQLCREATE TABLE `new_gift` ( `new_gift_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `shop_id` bigint NOT NULL COMMENT '关联店铺 平台为0', `activity_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '活动名称', `activity_start_time` datetime NOT NULL COMMENT '活动开始时间', `activity_end_time` datetime NOT NULL COMMENT '活动结束时间', `gift_type` int NOT NULL COMMENT '礼物类型 0优惠券 其他待拓展', `activity_status` int NOT NULL COMMENT '活动状态0未开始,1进行中,2已结束', `valid_status` int NOT NULL DEFAULT '0' COMMENT '有效性 0有效 1已失效', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` int NOT NULL DEFAULT '0' COMMENT '是否已删除 0否1是', PRIMARY KEY (`new_gift_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼主表'; | +新人礼关联礼物表 +| SQLCREATE TABLE `new_gift_detail` ( `new_gift_detail_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `new_gift_id` bigint NOT NULL COMMENT '新人礼主键', `gift_type` int NOT NULL COMMENT '礼物类型 0优惠券 其他待拓展', `gift_biz_id` bigint NOT NULL COMMENT '礼物主键Id', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`new_gift_detail_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼 子表,存储主表与礼物关联关系'; | +新人礼发放记录表 +| SQLCREATE TABLE `new_gift_send_log` ( `new_gift_log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` bigint NOT NULL COMMENT '用户ID', `send_status` int NOT NULL COMMENT '发放状态 0成功 1失败', `fail_reason` json DEFAULT NULL COMMENT '失败原因', `new_gift_id` bigint NOT NULL COMMENT '新人礼主键', `new_gift_detail_id` bigint NOT NULL COMMENT '礼物详情主键', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`new_gift_log_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='新人礼发放记录表'; | +3.7 数据模型设计 +详见领域模型 +3.8 依赖项 +| 依赖项 | 作用 | 预计提供时间 | 状态 | 责任人 | 交付物 | +4 场景(user story)与流程图(How) +4.1 新增活动 +4.1.1 业务流程图 +4.1.2 时序图 +4.1.3 接口依赖 +无 +4.1.4 接口设计 +| API | 状态 | 说明 | +| /mp/newGift/save | 未开发 | 新增新人礼活动 | +| /mp/newGift/update | 未开发 | 修改新人礼活动 | +| /mp/newGift/detail | 未开发 | 查看新人礼详情 | +| /mp/newGift/delete | 未开发 | 删除新人礼活动 | +| /mp/newGift/page | 未开发 | 新人礼活动分页查询 | +| /ua/newGift/check | 未开发 | 检测用户是否符合进行中的平台/店铺中的新人礼活动。 | +| /ua/newGift/send | 未开发 | 为用户发放对应新人礼绑定的券 | diff --git a/output/versions/新人礼需求/v9/snapshot_meta.json b/output/versions/新人礼需求/v9/snapshot_meta.json new file mode 100644 index 0000000..00b717c --- /dev/null +++ b/output/versions/新人礼需求/v9/snapshot_meta.json @@ -0,0 +1,14 @@ +{ + "base_name": "新人礼需求", + "version": "v9", + "snapshot_type": "full_pipeline", + "summary": [ + "manifest", + "analysis", + "relation_report", + "test_points", + "test_cases_markdown", + "excel", + "normalized_inputs" + ] +} diff --git a/output/versions/新人礼需求/v9/新人礼需求.json b/output/versions/新人礼需求/v9/新人礼需求.json new file mode 100644 index 0000000..95f1f15 --- /dev/null +++ b/output/versions/新人礼需求/v9/新人礼需求.json @@ -0,0 +1,44 @@ +{ + "requirement": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/requirements_raw/新人礼需求.docx", + "requirement_source_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/requirements_raw/新人礼需求.docx", + "requirement_input_type": "docx", + "base_name": "新人礼需求", + "normalized_requirement_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/normalized_inputs/新人礼需求/requirement.md", + "technical_solution_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/source_docs/technical_solutions/新人礼技术方案.docx" + ], + "normalized_technical_solution_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/normalized_inputs/新人礼需求/technical_solution_01.md" + ], + "analysis_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/analysis/新人礼需求_分析.md", + "relation_report_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/analysis/新人礼需求_关联与冲突.md", + "test_points_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/test_points/新人礼需求_测试点.md", + "test_cases_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/test_cases/新人礼需求_测试用例.md", + "excel_output_dir": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/excel_reports", + "project_profile_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/00_project/project_profile.md", + "knowledge_base_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/terminology.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/test_case_template.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/definition_of_done.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/review_checklist.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/common_missed_scenes.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/historical_defects.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/02_history/marketing_rules.md", + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/03_best_practices/payment_flow_cases.md" + ], + "effective_terminology_files": [ + "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/01_standards/terminology.md" + ], + "optional_terminology_files": [], + "related_requirements": [], + "conflict_candidates_count": 0, + "current_excel_file": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/excel_reports/新人礼需求_测试用例.xlsx", + "versioning_scheme": { + "current_files": "固定文件名,始终表示当前最新版", + "snapshot_rule": "仅在 export 成功且产物内容发生变化时递增版本", + "snapshot_dir_pattern": "output/versions/{BASE_NAME}/vN/" + }, + "latest_snapshot_version": "v8", + "latest_snapshot_dir": "/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/output/versions/新人礼需求/v8", + "latest_snapshot_type": "full_pipeline" +} diff --git a/output/versions/新人礼需求/v9/新人礼需求_关联与冲突.md b/output/versions/新人礼需求/v9/新人礼需求_关联与冲突.md new file mode 100644 index 0000000..a7ac99b --- /dev/null +++ b/output/versions/新人礼需求/v9/新人礼需求_关联与冲突.md @@ -0,0 +1,16 @@ +# 新人礼需求 关联需求与冲突检查 + +## 目标需求 +- `source_docs/requirements_raw/新人礼需求.docx` + +## 项目画像 +- `knowledge_base/00_project/project_profile.md` + +## 关联技术方案 +- `source_docs/technical_solutions/新人礼技术方案.docx` + +## 关联需求识别 +- 未识别到相似度达到阈值的历史需求文档。 + +## 潜在冲突与修改建议 +- 暂未识别到明显冲突条目。建议在需求评审时继续人工确认。 diff --git a/output/versions/新人礼需求/v9/新人礼需求_分析.md b/output/versions/新人礼需求/v9/新人礼需求_分析.md new file mode 100644 index 0000000..9b9a25d --- /dev/null +++ b/output/versions/新人礼需求/v9/新人礼需求_分析.md @@ -0,0 +1,111 @@ +# 新人礼需求分析 + +## 背景与目标 + +本期需求围绕“新人礼”活动能力建设,目标是在平台端和商家端支持配置新人礼活动,并在 C 端针对符合新人条件的用户展示领取入口与发放优惠券奖励,提升新注册用户的首单转化。 + +技术方案补充了两个关键限制: + +- 同一时间仅允许存在 1 个进行中的新人礼活动。 +- 每个新人礼活动仅允许绑定 1 张优惠券,发放结果需落新人礼发放记录表。 + +## 范围与边界 + +### 范围内 + +- 平台端“营销-新人有礼”列表、查询、新建、编辑、查看、失效、删除。 +- 商家端“营销-新人有礼”同构能力。 +- 新人礼活动配置字段校验:活动名称、活动时间、活动奖品、优惠券选择。 +- 优惠券选择范围控制:平台端仅选平台券,商家端仅选本店铺优惠券。 +- C 端首页和门店首页的新人礼弹窗检查与领取。 +- 发放成功后的优惠券入账和发放记录落库。 +- `ua/newGift/check` 与 `ua/newGift/send` 对应的资格校验和发放行为。 + +### 范围外 + +- 积分类型新人礼,需求和技术方案均明确“暂不支持”。 +- 下单后退款再重新认定为新人场景,技术方案明确“暂不支持下单后退款场景”。 +- 多奖品、多券组合、多人拼抢同一活动池等扩展玩法。 + +## 用户角色与前置条件 + +- 平台运营:维护平台维度新人礼活动。 +- 商家运营:维护店铺维度新人礼活动。 +- C 端用户:登录后触发首页或门店首页新人礼检查与领取。 +- 后端系统:负责活动状态判断、资格校验、优惠券发放、发送日志写入。 + +前置条件: + +- 已存在投放中、未过期、领取方式为“用户领取”的优惠券。 +- 用户已登录,且能获取平台维度与店铺维度的历史下单信息。 +- 发券接口可用,优惠券中心返回的券状态准确。 + +## 关键业务规则 + +1. 平台端和商家端都可以配置新人礼活动,但优惠券范围必须与端侧归属一致。 +2. 活动名称最多 50 个字。 +3. 活动开始时间必须大于等于当前时间,结束时间必须大于开始时间。 +4. 活动奖品当前仅支持优惠券,且每个活动仅能关联 1 张优惠券。 +5. 平台维度同一时间仅允许 1 个进行中的平台新人礼活动;店铺维度同一时间每个店铺仅允许 1 个进行中的门店新人礼活动。 +6. 新人判定按订单提交结果范围判断:平台新人礼查询平台范围订单,店铺新人礼查询当前店铺订单;若用户从未提交过订单,或历史订单最终状态均为交易关闭(包括未支付取消、超时未付、已退款订单等),仍视为新人。 +7. 用户登录首页时,若存在进行中的新人礼活动且用户未领取过,则展示新人礼弹窗。 +8. 门店首页只对门店新人展示门店新人礼弹窗。 +9. 若同时存在弹窗广告,新人礼弹窗必须先于广告弹窗展示。 +10. 用户点击立即领取成功后,奖励进入“我的优惠券”,同时写入新人礼发放记录。 +11. 活动“已结束”和“已失效”并存时,页面优先展示“已失效”。 +12. 活动失效后状态展示为“已失效”,并支持后续删除。 +13. 用户领取平台新人礼后,若仍满足门店新人条件,允许继续领取门店新人礼。 + +## 主流程描述 + +1. 运营在平台端或商家端进入“营销-新人有礼”列表页。 +2. 运营新建活动,填写活动名称、活动时间并选择 1 张符合条件的优惠券。 +3. 系统校验时间、优惠券范围、优惠券状态和活动并存规则,保存活动。 +4. 活动进入“未开始”或“进行中”状态,列表页按状态展示可操作按钮。 +5. C 端用户登录平台首页或门店首页时,调用资格检查接口。 +6. 若存在进行中的匹配活动且用户符合新人条件且未领取过,则展示新人礼弹窗。 +7. 用户点击“立即领取”,系统发放优惠券并记录发放日志。 +8. 发放成功后,用户可在个人中心优惠券列表查看奖励。 + +## 跨需求关联与冲突修订建议 + +- 当前未识别到需要纳入本次评审的关联需求,也未发现需要基于历史需求执行的规则冲突修订。 +- 当前无需对历史需求做口径覆盖修订,但仍需重点防御营销类公共风险: + - 重复点击导致重复发放。 + - 前端传参篡改导致越权选券或跨店铺发券。 + - 状态变更与页面展示不一致。 + +## 技术方案补充约束 + +- `ua/newGift/check` 负责资格检查,应重点验证平台维度和店铺维度“新人”判定口径。 +- `ua/newGift/send` 负责发券,应重点验证幂等、防重复领取、失败原因记录和成功落库。 +- 数据模型拆分为主表、礼物关联表、发放记录表,说明测试不能只看页面成功提示,还要覆盖: + - `new_gift` 主表活动状态和有效性字段。 + - `new_gift_detail` 活动与券的绑定关系。 + - `new_gift_send_log` 发放成功或失败记录。 +- 技术目标给出用户响应 RT 1000ms,应至少对资格检查和领取动作补充性能基线关注。 + +## 产品确认口径 + +- 活动并存范围:平台维度同一时间仅允许 1 条进行中的平台活动;店铺维度同一时间每个店铺仅允许 1 条进行中的门店活动。 +- 新人判定口径:若用户从未提交过订单,或历史订单最终状态均为交易关闭(包括未支付取消、超时未付、已退款订单),仍视为新人。 +- 状态展示优先级:活动“已结束”和“已失效”并存时,优先展示“已失效”。 +- 平台礼与门店礼关系:用户已领取平台新人礼后,只要满足门店新人条件,仍允许领取门店新人礼。 + +## 项目差异化测试约束 + +- 平台端、商家端、C 端是三套角色链路,必须覆盖角色隔离和数据隔离。 +- 这是典型营销发券能力,需重点覆盖越权选券、重复发放、状态错发和资损场景。 +- 预期结果必须同时覆盖 UI 反馈和后台状态变化,特别是活动状态、券领取结果、发放日志。 + +## 风险点与确认结果 + +- 风险点:重复点击“立即领取”或接口重试导致同一用户重复发放优惠券。 +- 风险点:商家端错误选择了其他店铺的优惠券,导致跨店资损或越权发券。 +- 风险点:活动失效、已结束、已删除三个状态口径不清,可能导致列表按钮和实际行为不一致。 +- 风险点:平台新人和店铺新人的判定依赖历史订单数据,若口径不清,容易误发或漏发。 +- 风险点:同一时间仅允许 1 个进行中的活动,如果平台端和商家端同时配置活动,范围口径不清会导致规则冲突。 +- 确认结果:平台端和商家端活动可以并存,但约束粒度为“平台一条、每店铺各一条”。 +- 确认结果:未支付取消、超时未付、已退款等最终交易关闭单据不影响新人资格。 +- 确认结果:活动“已结束”和“已失效”同时成立时,页面优先展示“已失效”。 +- 确认结果:已领取平台新人礼的用户,若满足门店新人条件,仍允许继续领取门店新人礼。 diff --git a/output/versions/新人礼需求/v9/新人礼需求_测试点.md b/output/versions/新人礼需求/v9/新人礼需求_测试点.md new file mode 100644 index 0000000..e2492e2 --- /dev/null +++ b/output/versions/新人礼需求/v9/新人礼需求_测试点.md @@ -0,0 +1,80 @@ +# 新人礼需求测试点 + +## 1. 平台端列表与状态管理 + +1. 校验平台端列表默认按创建时间倒序展示,分页默认 10 条,支持切换 10、20、30、50 条。[需求] +2. 校验按活动名称模糊查询、按活动状态精准查询、无结果空态提示、重置查询条件的行为正确。[需求] +3. 校验活动状态“未开始、进行中、已结束、已失效”的展示口径和操作按钮是否符合规则。[需求] +4. 校验活动失效后有效性展示为“已失效”,且操作栏切换为删除入口。[需求] +5. 校验删除为永久删除,删除后列表不可见,后台数据状态与页面一致。[需求][项目画像] +6. 校验列表展示字段、创建时间、活动状态、操作栏内容与需求一致。[需求] +7. 校验不同状态下操作栏按钮映射正确,未开始/进行中/已结束/已失效的按钮展示不串位。[需求] +8. 校验点击“新建”可正常打开新人礼配置弹窗或页面,交互入口与权限口径一致。[需求] + +## 2. 活动配置与规则校验 + +1. 校验活动名称最大 50 字,超长时前端与后端均能拦截。[需求][漏测清单] +2. 校验活动开始时间小于当前时间、结束时间小于开始时间时不可保存。[需求][边界] +3. 校验活动奖品当前仅支持优惠券,积分奖励入口不可用或被明确拦截。[需求][技术方案] +4. 校验每个活动仅能关联 1 张优惠券,无法多选、多绑或通过接口绕过限制。[技术方案][项目画像] +5. 校验平台端新建合法活动时保存成功,列表、详情和活动明细数据落库正确。[需求] +6. 校验平台端编辑未开始活动时可修改名称、时间、奖品等字段并保存成功。[需求] +7. 校验平台维度同一时间仅允许 1 个进行中的平台新人礼活动,新增或编辑命中并存条件时保存失败并给出明确提示。[技术方案] +8. 校验同一店铺维度同一时间仅允许 1 个进行中的门店新人礼活动,不同店铺活动可并存。[技术方案] +9. 校验失效、删除操作存在二次确认,确认结果与列表及后台状态保持一致。[需求] +10. 校验编辑活动时,已开始活动是否只允许查看不允许修改关键字段,状态与按钮保持一致。[需求] + +## 3. 优惠券选择与权限隔离 + +1. 校验平台端仅能选择平台可用优惠券,且仅展示投放中、未过期、领取方式为用户领取的券。[需求] +2. 校验商家端仅能选择本店铺可用优惠券,不能看到或绑定其他店铺优惠券。[需求][项目画像] +3. 校验优惠券选择弹窗支持刷新、名称搜索、列表字段展示、分页、排序、单选反馈,且平台端与商家端展示的数据源范围不同。[需求][漏测清单] +4. 校验通过抓包篡改券 ID、店铺 ID 或活动归属时,后端能拦截越权绑定。[历史缺陷][项目画像] + +## 4. 商家端差异化行为 + +1. 校验商家端列表默认排序、分页、名称搜索、状态筛选、重置、空结果提示与平台端同构,但数据仅限当前店铺可见。[需求][项目画像] +2. 校验商家端列表展示字段、操作栏按钮、不同状态下的权限映射正确。[需求] +3. 校验商家端新建活动时,跨店铺数据隔离正确,门店 A 无法操作门店 B 活动。[项目画像] +4. 校验商家端新建合法活动时保存成功,列表、详情和活动明细数据正确落库。[需求] +5. 校验商家端编辑未开始活动时可正常保存,查看态页面所有字段只读,编辑态与查看态权限边界正确。[需求] +6. 校验商家端活动失效、删除后,仅影响当前店铺,不影响平台端和其他店铺活动。[需求] +7. 校验平台端活动数据在商家端不可见,商家端活动数据在平台端不可见。[需求][项目画像] + +## 5. C 端资格检查与弹窗展示 + +1. 校验平台新人登录平台首页时,存在进行中平台新人礼活动则展示弹窗。[需求] +2. 校验平台范围存在已支付或非交易关闭订单时,不展示平台新人礼弹窗。[需求][边界] +3. 校验店铺新人进入门店首页时,存在进行中门店新人礼活动则展示门店弹窗。[需求] +4. 校验当前店铺范围存在已支付或非交易关闭订单时,不展示门店新人礼弹窗。[需求][边界] +5. 校验门店老用户进入门店首页时,不展示门店新人礼弹窗。[需求] +6. 校验同时存在广告弹窗时,新人礼弹窗优先展示,关闭新人礼后再展示广告。[需求] +7. 校验活动未开始时,资格检查结果和页面展示均不展示新人礼弹窗。[需求][状态流转] +8. 校验活动已结束时,资格检查结果和页面展示均不展示新人礼弹窗。[需求][状态流转] +9. 校验活动已失效时,资格检查结果和页面展示均不展示新人礼弹窗。[需求][状态流转] +10. 校验用户历史订单均为交易关闭(未支付取消、超时未付、已退款)时,仍识别为新人并展示弹窗。[需求][产品确认] +11. 校验未登录进入平台首页或门店首页时,不展示新人礼弹窗且不误触发领取流程。[需求][边界] +12. 校验平台首页和门店首页展示的奖品信息与后台配置的优惠券信息一致,包括门槛、优惠金额、用券时间等。[需求] + +## 6. 领取发放与日志落库 + +1. 校验点击“立即领取”成功后,页面提示成功,优惠券进入“我的优惠券”。[需求] +2. 校验领取成功后,`new_gift_send_log` 写入成功记录,记录用户、活动、活动明细和状态。[技术方案] +3. 校验同一用户重复点击“立即领取”或短时间重复调用发放接口时,只发放 1 次,日志不出现重复成功记录。[历史缺陷][项目画像] +4. 校验领取失败时,页面提示失败原因,发放日志记录失败原因,不出现半成功状态。[技术方案][项目画像] +5. 校验用户已领取过奖励后,再次进入首页不再弹出同一活动弹窗。[需求] +6. 校验用户已领取平台新人礼后,若满足门店新人条件,仍可在门店首页领取门店新人礼。[需求][产品确认] + +## 7. 异常、并发与非功能 + +1. 校验弱网、超时或接口重试场景下,资格检查接口不会错误多次弹窗或误判资格。[漏测清单][非功能] +2. 校验领取接口超时或前端重复提交时,不会重复发券,用户可通过优惠券列表或重新进入页面查看最终结果。[漏测清单][非功能] +3. 校验同一账号在两个终端同时领取新人礼时,最终仅 1 次成功发放。[项目画像][并发] +4. 校验资格检查和领取接口响应时间满足技术目标 RT 1000ms,至少在常规测试数据量下不明显超时。[技术方案][非功能] + +## 8. 产品确认口径回归 + +1. 校验平台活动与门店活动可同时存在,但平台维度仅允许 1 条进行中活动、每个店铺维度仅允许 1 条进行中活动。[产品确认] +2. 校验历史订单均为交易关闭时仍视为新人;存在已支付或非关闭订单时不视为新人。[产品确认] +3. 校验活动“已结束”和“已失效”同时成立时,列表优先展示“已失效”。[产品确认] +4. 校验用户领取平台新人礼后,仍可继续领取符合条件的门店新人礼。[产品确认] diff --git a/output/versions/新人礼需求/v9/新人礼需求_测试用例.md b/output/versions/新人礼需求/v9/新人礼需求_测试用例.md new file mode 100644 index 0000000..9e0371e --- /dev/null +++ b/output/versions/新人礼需求/v9/新人礼需求_测试用例.md @@ -0,0 +1,47 @@ +# 新人礼需求测试用例 + +| 用例编号 | 模块 | 用例标题 | 优先级 | 类型 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 备注 | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| PLT_NG_LIST_001 | 平台端-营销管理-新人有礼列表 | 验证平台端列表默认排序、分页和查询功能正确 | P1 | 功能测试 | 平台端已存在 12 条新人礼活动数据,覆盖未开始、进行中、已结束、已失效状态;测试账号具备列表权限 | 1. 登录平台端进入营销-新人有礼列表
2. 观察默认排序和分页条数
3. 输入活动名称关键字执行查询
4. 选择活动状态执行筛选
5. 输入无匹配关键字执行查询
6. 点击重置 | 活动A 创建时间晚于活动B;查询关键字=新人;状态=进行中;无匹配关键字=不存在的活动名 | 1. 列表默认按创建时间倒序展示
2. 默认每页展示 10 条
3. 名称查询仅返回命中活动
4. 状态筛选仅返回对应状态活动
5. 无匹配数据时列表展示空态或“暂无数据”提示
6. 点击重置后查询条件被清空,列表恢复默认结果 | [AI修正: 对标团队用例补充空结果查询场景] | +| PLT_NG_CFG_001 | 平台端-营销管理-新人有礼配置 | 验证活动时间非法时无法保存活动 | P1 | 功能测试 | 平台运营账号已登录;存在可选平台优惠券 | 1. 点击新建活动
2. 输入合法活动名称
3. 设置开始时间早于当前时间后尝试保存
4. 再设置结束时间早于开始时间后尝试保存 | 活动名称=平台新人礼A;开始时间=当前时间前 1 分钟;结束时间=开始时间前 1 秒 | 1. 页面对开始时间非法给出明确提示
2. 页面对结束时间非法给出明确提示
3. 活动保存失败
4. 后台 `new_gift` 主表不新增活动记录 | 边界值 | +| PLT_NG_CFG_002 | 平台端-营销管理-新人有礼配置 | 验证平台端只能绑定 1 张符合条件的平台优惠券 | P0 | 功能测试 | 平台运营账号已登录;平台下存在 3 张券,分别为投放中可领券、已过期券、非用户领取券 | 1. 点击新建活动
2. 打开选择优惠券弹窗
3. 观察券列表范围
4. 选择 1 张投放中可领券后尝试继续追加选择第 2 张券
5. 保存活动 | 券A=投放中未过期用户领取券;券B=已过期券;券C=系统发放券 | 1. 弹窗仅展示平台可用且投放中、未过期、用户领取的券
2. 已过期券和非用户领取券不展示或不可选
3. 页面仅允许单选 1 张券
4. 保存成功后 `new_gift_detail` 仅存在 1 条券绑定记录 | [AI修正: 技术方案限定单券绑定] | +| PLT_NG_CFG_003 | 平台端-营销管理-新人有礼配置 | 验证积分奖励当前不支持 | P1 | 功能测试 | 平台运营账号已登录 | 1. 点击新建活动
2. 进入活动奖品区域
3. 查看送积分配置入口
4. 若可通过前端或抓包提交积分类型则尝试保存 | gift_type=积分;积分值=100 | 1. 页面不允许启用积分奖品,或该入口展示为暂不支持
2. 若前端被绕过提交积分类型,后端拦截保存并返回错误提示
3. 后台不生成积分类型活动记录 | [AI修正: 范围外能力拦截] | +| PLT_NG_CREATE_001 | 平台端-营销管理-新人有礼配置 | 验证平台端新建合法活动可保存成功 | P0 | 功能测试 | 平台运营账号已登录;存在 1 张投放中、未过期、用户领取类型的平台优惠券;当前无冲突中的平台活动 | 1. 点击新建活动
2. 填写活动名称、时间并选择 1 张合法平台券
3. 点击确定保存
4. 返回列表并进入详情页核对数据 | 活动名称=平台新人礼春季活动;开始时间=明天 10:00;结束时间=后天 10:00;券ID=PLT_COUPON_1001 | 1. 页面提示创建成功
2. 列表新增该活动记录,字段展示正确
3. 活动状态按时间口径展示为未开始
4. `new_gift` 和 `new_gift_detail` 新增对应活动及券绑定记录 | [AI修正: 对标团队用例补充后台正向新建链路] | +| PLT_NG_EDIT_001 | 平台端-营销管理-新人有礼编辑 | 验证平台端编辑未开始活动可保存成功 | P1 | 功能测试 | 平台已存在 1 条未开始活动;平台运营账号已登录;存在 1 张新的合法平台优惠券 | 1. 在列表中点击编辑未开始活动
2. 修改活动名称、时间或绑定券
3. 点击确定保存
4. 刷新列表并进入详情查看 | 原活动名称=平台新人礼A;新活动名称=平台新人礼A-调整版;新券ID=PLT_COUPON_1002 | 1. 页面提示保存成功
2. 列表展示为修改后的名称和时间
3. 详情页展示最新配置
4. 后台活动主表和明细表更新为最新值,不产生重复活动记录 | [AI修正: 对标团队用例补充后台正向编辑链路] | +| PLT_NG_POPUP_001 | 平台端-营销管理-优惠券选择弹窗 | 验证平台端选券弹窗支持搜索分页排序和单选反馈 | P1 | 功能测试 | 平台运营账号已登录;平台下存在 25 张符合或不符合条件的优惠券 | 1. 进入新建活动页面并打开优惠券选择弹窗
2. 点击刷新并观察列表加载
3. 输入优惠券名称执行搜索
4. 切换分页条数和页码
5. 观察列表排序和字段展示
6. 选择 1 张优惠券并确认返回 | 券名称关键字=新人礼;分页项=10/20;目标券=PLT_COUPON_1003 | 1. 弹窗可正常刷新数据
2. 名称搜索仅返回命中券
3. 分页、页码切换和排序行为正确
4. 列表展示券名称、有效期、领取方式等必要字段
5. 仅允许单选 1 张券,选中后页面回填正确的券信息 | [AI修正: 对标团队用例补充选券弹窗交互明细] | +| PLT_NG_RULE_001 | 平台端-营销管理-新人有礼配置 | 验证平台维度同一时间仅允许一个进行中的新人礼活动 | P0 | 功能测试 | 已存在 1 条平台活动A,时间范围覆盖当前时刻且状态为进行中;平台运营账号已登录 | 1. 点击新建活动
2. 填写与活动A 时间重叠的新活动B信息
3. 选择合法平台优惠券并保存 | 活动A 时间=今天 10:00 到 明天 10:00;活动B 时间=今天 12:00 到 明天 12:00 | 1. 页面或接口提示当前已有进行中的平台新人礼活动
2. 活动B 保存失败
3. 后台不新增活动B 记录
4. 活动A 状态和绑定关系不受影响 | [AI修正: 按产品确认口径更新为平台维度唯一] | +| PLT_NG_STATE_001 | 平台端-营销管理-新人有礼状态 | 验证活动失效后展示已失效并支持删除 | P1 | 功能测试 | 平台已存在 1 条未开始活动和 1 条进行中活动;平台运营账号已登录 | 1. 在列表中对活动执行失效操作
2. 刷新列表查看状态和操作按钮
3. 对已失效活动执行删除操作
4. 再次刷新列表 | 活动A=未开始;活动B=进行中 | 1. 失效后活动有效性展示为已失效
2. 失效活动的操作按钮切换为删除
3. 删除确认后页面提示删除成功
4. 列表中不再显示该活动
5. 后台活动记录被标记删除或按实现永久删除,不可继续被资格检查命中 | 状态流转 | +| PLT_NG_STATE_002 | 平台端-营销管理-新人有礼状态 | 验证活动已结束且已失效时列表优先展示已失效 | P1 | 功能测试 | 平台存在 1 条活动,活动结束时间早于当前时间,且已执行失效操作;平台运营账号已登录 | 1. 进入平台端新人有礼列表
2. 查询该活动状态展示和操作按钮 | 活动A 结束时间=当前时间前 1 天;valid_status=已失效 | 1. 列表最终状态优先展示为已失效
2. 操作按钮按已失效口径展示删除,不按已结束展示
3. 页面状态展示与后台有效性字段一致 | [AI修正: 按产品确认口径补充状态优先级] | +| MCH_NG_SCOPE_001 | 商家端-营销管理-新人有礼配置 | 验证商家端只能选择本店铺优惠券 | P0 | 功能测试 | 商家A 账号已登录;商家A 券A 为可领券;商家B 券B 为可领券 | 1. 商家A 进入新建活动页面
2. 打开优惠券选择弹窗
3. 搜索本店券A 和外店券B
4. 选择券A 保存活动 | 商家A ID=1001;商家B ID=1002;券A 属于商家A;券B 属于商家B | 1. 列表仅展示商家A 可用券
2. 搜索券B 无结果或不可选
3. 保存成功后活动绑定的券归属为商家A
4. 后台不存在跨店绑定关系 | [AI修正: 覆盖数据隔离与越权风险] | +| MCH_NG_SCOPE_002 | 商家端-营销管理-新人有礼配置 | 验证篡改券 ID 无法越权绑定其他店铺优惠券 | P0 | 安全性测试 | 商家A 账号已登录;抓包工具可修改请求;商家B 存在 1 张有效券 | 1. 商家A 正常进入新建活动页面并选择商家A 自有券
2. 提交前抓包将券 ID 替换为商家B 券 ID
3. 提交保存请求 | 提交参数原券 ID=COUPON_A_01;篡改后券 ID=COUPON_B_01 | 1. 后端拦截越权绑定请求并返回错误提示
2. 页面保存失败
3. 后台不生成跨店活动与券绑定关系
4. 审计日志记录异常请求或失败原因 | [AI修正: 对应越权与价格篡改类历史风险] | +| MCH_NG_RULE_001 | 商家端-营销管理-新人有礼配置 | 验证同一店铺仅允许一个进行中的门店新人礼活动但不同店铺可并存 | P0 | 功能测试 | 商家A 已存在 1 条进行中的门店活动A;商家B 无进行中活动;商家A、商家B 账号均可登录 | 1. 商家A 新建与活动A 时间重叠的门店活动A2并保存
2. 商家B 新建与活动A 同时段重叠的门店活动B并保存
3. 查询两家店铺活动列表 | 商家A ID=1001;商家B ID=1002;活动A2 与活动A 时间重叠;活动B 与活动A 时间重叠 | 1. 商家A 保存活动A2失败,并提示当前店铺已有进行中的新人礼活动
2. 商家B 保存活动B成功
3. 后台显示门店活动限制按店铺维度生效,不会因商家A 活动阻塞商家B 配置 | [AI修正: 按产品确认口径补充店铺维度唯一] | +| MCH_NG_LIST_001 | 商家端-营销管理-新人有礼列表 | 验证商家端列表默认排序、分页、搜索和重置功能正确 | P1 | 功能测试 | 商家A 已存在 12 条新人礼活动数据,覆盖未开始、进行中、已结束、已失效状态;商家运营账号具备列表权限 | 1. 登录商家A 端进入新人有礼列表
2. 观察默认排序和分页条数
3. 输入活动名称关键字执行查询
4. 选择活动状态执行筛选
5. 输入无匹配关键字执行查询
6. 点击重置 | 店铺ID=1001;关键字=新人;状态=进行中;无匹配关键字=不存在的活动名 | 1. 列表默认按创建时间倒序展示
2. 默认每页展示 10 条并可切换分页项
3. 名称搜索和状态筛选仅返回当前店铺命中数据
4. 无匹配数据时展示空态或“暂无数据”提示
5. 点击重置后恢复默认列表 | [AI修正: 对标团队用例补充商家端列表基础能力] | +| MCH_NG_LIST_002 | 商家端-营销管理-新人有礼列表 | 验证商家端列表字段和操作栏状态映射正确 | P1 | 功能测试 | 商家A 存在未开始、进行中、已结束、已失效四类活动;商家运营账号已登录 | 1. 进入商家A 新人有礼列表
2. 逐条检查活动名称、活动时间、活动状态、创建时间、操作栏
3. 对比不同状态下的操作按钮 | 活动A=未开始;活动B=进行中;活动C=已结束;活动D=已失效 | 1. 列表展示字段完整且内容正确
2. 未开始活动展示编辑、失效
3. 进行中活动展示查看、失效或按最终规则允许的编辑能力
4. 已结束和已失效活动展示删除或受限操作
5. 状态与按钮映射不串位 | [AI修正: 对标团队用例补充商家端状态按钮映射] | +| MCH_NG_CREATE_001 | 商家端-营销管理-新人有礼配置 | 验证商家端新建合法活动可保存成功 | P0 | 功能测试 | 商家A 账号已登录;商家A 存在 1 张投放中、未过期、用户领取类型的店铺优惠券;当前店铺无冲突中的门店活动 | 1. 点击新建活动
2. 填写活动名称、时间并选择 1 张本店合法券
3. 点击确定保存
4. 返回列表并进入详情页核对数据 | 店铺ID=1001;活动名称=门店新人礼春季活动;券ID=SHOP_COUPON_1001 | 1. 页面提示创建成功
2. 列表新增该门店活动记录,字段展示正确
3. 活动状态按时间口径展示为未开始
4. `new_gift` 和 `new_gift_detail` 新增当前店铺对应活动及券绑定记录 | [AI修正: 对标团队用例补充商家端正向新建链路] | +| MCH_NG_EDIT_001 | 商家端-营销管理-新人有礼编辑 | 验证商家端编辑未开始活动可保存成功 | P1 | 功能测试 | 商家A 存在 1 条未开始活动;商家A 账号已登录;存在 1 张新的本店合法券 | 1. 在列表中点击编辑未开始活动
2. 修改活动名称、时间或绑定券
3. 点击确定保存
4. 刷新列表并进入详情页核对 | 原活动名称=门店新人礼A;新活动名称=门店新人礼A-调整版;新券ID=SHOP_COUPON_1002 | 1. 页面提示保存成功
2. 列表和详情页展示最新配置
3. 后台活动主表和明细表更新为最新值
4. 不产生重复活动记录或跨店异常数据 | [AI修正: 对标团队用例补充商家端正向编辑链路] | +| MCH_NG_POPUP_001 | 商家端-营销管理-优惠券选择弹窗 | 验证商家端选券弹窗支持搜索分页排序和单选反馈 | P1 | 功能测试 | 商家A 账号已登录;商家A 下存在 25 张符合或不符合条件的优惠券 | 1. 进入新建活动页面并打开优惠券选择弹窗
2. 点击刷新并观察列表加载
3. 输入优惠券名称执行搜索
4. 切换分页条数和页码
5. 观察列表排序和字段展示
6. 选择 1 张优惠券并确认返回 | 店铺ID=1001;券名称关键字=新人礼;分页项=10/20;目标券=SHOP_COUPON_1003 | 1. 弹窗可正常刷新数据
2. 搜索仅返回当前店铺命中的券
3. 分页、页码切换和排序行为正确
4. 列表展示券名称、有效期、领取方式等必要字段
5. 仅允许单选 1 张券,确认后页面正确回填券信息 | [AI修正: 对标团队用例补充商家端选券弹窗交互明细] | +| MCH_NG_STATE_001 | 商家端-营销管理-新人有礼状态 | 验证商家端活动失效后展示已失效并支持删除 | P1 | 功能测试 | 商家A 已存在 1 条未开始活动和 1 条进行中活动;商家A 账号已登录 | 1. 在列表中对活动执行失效操作并确认
2. 刷新列表查看状态和操作按钮
3. 对已失效活动执行删除并确认
4. 再次刷新列表 | 店铺ID=1001;活动A=未开始;活动B=进行中 | 1. 失效后活动有效性展示为已失效
2. 已失效活动操作栏切换为删除
3. 删除确认后页面提示删除成功
4. 列表中不再显示该活动
5. 后台仅删除当前店铺对应活动,不影响其他店铺或平台活动 | [AI修正: 对标团队用例补充商家端失效删除链路] | +| MCH_NG_VIEW_001 | 商家端-营销管理-新人有礼查看 | 验证商家端查看态页面所有字段只读不可编辑 | P1 | 功能测试 | 商家A 已存在 1 条新人礼活动;商家A 账号已登录 | 1. 在列表中点击查看
2. 观察活动名称、活动时间、活动奖品等字段状态
3. 尝试修改字段或提交 | 店铺ID=1001;活动ID=SHOP1001 | 1. 查看页所有字段均为只读态
2. 页面不提供可提交修改的入口
3. 用户无法通过查看态改写活动配置 | [AI修正: 对标团队用例补充商家端查看只读场景] | +| C_NG_POP_001 | 用户端-首页-新人礼弹窗 | 验证平台新人登录平台首页时展示新人礼弹窗 | P0 | 冒烟测试 | 平台存在 1 条进行中的平台新人礼活动;用户U1 已注册登录且平台维度无下单记录;用户未领取过该活动 | 1. 用户U1 登录平台首页
2. 观察首页首屏弹窗 | 用户U1;平台活动=进行中;平台下单记录=0 | 1. 首页展示新人礼弹窗
2. 弹窗内容展示活动奖励信息和立即领取按钮
3. 后台资格检查接口返回命中活动和可领取状态 | 主流程 | +| C_NG_POP_002 | 用户端-首页-新人礼弹窗 | 验证非平台新人登录平台首页时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条进行中的平台新人礼活动;用户U2 已注册登录且平台维度存在已下单记录 | 1. 用户U2 登录平台首页
2. 观察首页弹窗和资格检查结果 | 用户U2;平台已支付订单数=1 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回不满足新人条件
3. 页面不出现立即领取入口 | 边界值 | +| C_NG_POP_003 | 用户端-门店首页-新人礼弹窗 | 验证平台老用户但门店新用户进入门店首页时展示门店新人礼弹窗 | P0 | 功能测试 | 商家A 存在 1 条进行中的门店新人礼活动;用户U3 平台维度已有下单记录,但在商家A 维度无下单记录;用户未领取过商家A 活动 | 1. 用户U3 进入商家A 门店首页
2. 观察首页弹窗
3. 查询资格检查结果 | 用户U3;平台订单数=1;商家A 订单数=0 | 1. 门店首页展示商家A 新人礼弹窗
2. 资格检查接口按门店维度返回可领取
3. 弹窗奖励信息与商家A 活动配置一致 | [AI修正: 覆盖平台新人和店铺新人差异口径] | +| C_NG_POP_004 | 用户端-首页-弹窗优先级 | 验证存在广告弹窗时新人礼弹窗优先展示 | P1 | 功能测试 | 平台存在 1 条进行中的新人礼活动;首页同时配置普通广告弹窗;用户U1 满足平台新人资格 | 1. 用户U1 登录平台首页
2. 观察首个弹窗
3. 关闭新人礼弹窗后继续观察 | 用户U1;广告弹窗=已配置 | 1. 首个弹窗为新人礼弹窗
2. 关闭新人礼弹窗后再展示广告弹窗
3. 整个过程中弹窗顺序与需求一致 | 交互优先级 | +| C_NG_POP_005 | 用户端-首页-新人礼弹窗 | 验证历史订单均为交易关闭时仍识别为平台新人 | P0 | 功能测试 | 平台存在 1 条进行中的平台新人礼活动;用户U6 历史仅有未支付取消单、超时未付单或已退款订单,且无其他非关闭订单 | 1. 用户U6 登录平台首页
2. 观察首页弹窗
3. 查询资格检查结果 | 用户U6 历史订单状态=交易关闭、已退款、超时未付 | 1. 首页展示平台新人礼弹窗
2. 资格检查接口返回满足平台新人条件
3. 页面不因历史关闭单或已退款单而拦截新人资格 | [AI修正: 按产品确认口径补充交易关闭单仍算新人] | +| C_NG_POP_006 | 用户端-首页-新人礼弹窗 | 验证未登录进入首页时不展示新人礼弹窗 | P0 | 功能测试 | 平台或门店存在进行中的新人礼活动;用户未登录 | 1. 未登录直接进入平台首页
2. 未登录直接进入门店首页
3. 观察页面弹窗与网络请求 | 访问端=H5/小程序;登录态=未登录 | 1. 平台首页和门店首页均不展示新人礼弹窗
2. 页面不进入领取流程
3. 若触发资格检查请求,应返回未登录拦截而非可领取结果 | [AI修正: 取自团队现有功能用例] | +| C_NG_POP_007 | 用户端-首页-新人礼展示 | 验证首页展示的奖品信息与后台配置一致 | P0 | 功能测试 | 平台和商家端各存在 1 条进行中的新人礼活动,且分别绑定不同门槛和优惠内容的优惠券;用户满足资格 | 1. 平台新人登录平台首页查看弹窗奖品信息
2. 店铺新人进入门店首页查看弹窗奖品信息
3. 对比后台券配置 | 平台券=满100减20, 用券时间 2026-05-01 至 2026-05-31;店铺券=8折券, 上限 30 元 | 1. 平台首页弹窗展示的平台券门槛、优惠金额或折扣、用券时间与后台配置一致
2. 门店首页弹窗展示的商家券信息与商家端配置一致
3. 不出现平台券和商家券信息串位 | [AI修正: 取自团队现有功能用例] | +| C_NG_POP_008 | 用户端-门店首页-新人礼弹窗 | 验证门店老用户进入门店首页时不展示门店新人礼弹窗 | P1 | 功能测试 | 商家A 存在 1 条进行中的门店新人礼活动;用户U9 已登录且在商家A 维度存在已支付订单 | 1. 用户U9 进入商家A 门店首页
2. 观察首页弹窗和资格检查结果 | 用户U9;店铺ID=1001;商家A 已支付订单数=1 | 1. 门店首页不展示门店新人礼弹窗
2. 资格检查接口返回不满足门店新人条件
3. 页面不出现立即领取入口 | [AI修正: 对标团队用例补充门店老用户负向场景] | +| C_NG_SEND_001 | 用户端-首页-新人礼领取 | 验证点击立即领取成功后优惠券入账并写发放日志 | P0 | 冒烟测试 | 用户U1 满足平台新人资格;平台存在进行中活动且绑定有效券;用户未领取过该活动 | 1. 用户U1 在新人礼弹窗点击立即领取
2. 观察页面提示
3. 进入我的优惠券查询奖励
4. 查询发放日志 | 用户U1;活动ID=NG1001;券ID=PC1001 | 1. 页面提示领取成功
2. 我的优惠券列表新增对应优惠券
3. `new_gift_send_log` 新增 1 条成功记录,包含用户、活动、活动明细和发送状态
4. 该用户再次进入首页时不再展示同一活动弹窗 | 主流程 | +| C_NG_SEND_002 | 用户端-首页-新人礼领取 | 验证同一用户重复点击立即领取时只发放一次 | P0 | 回归测试 | 用户U1 满足新人资格;平台存在进行中活动且绑定有效券;抓包或前端可模拟快速重复点击 | 1. 用户U1 打开新人礼弹窗
2. 在 1 秒内连续点击 3 次立即领取
3. 查询优惠券列表和发放日志 | 用户U1;活动ID=NG1001;重复点击次数=3 | 1. 页面最多显示 1 次领取成功提示
2. 用户仅新增 1 张优惠券
3. `new_gift_send_log` 仅有 1 条成功记录,其余请求被幂等拦截或返回已领取
4. 不出现重复发券 | [AI修正: 对应重复提交和重复支付类历史风险] | +| C_NG_SEND_003 | 用户端-首页-新人礼领取 | 验证领取接口超时重试时不会重复发券 | P1 | 回归测试 | 用户U1 满足新人资格;模拟领取接口首个请求响应超时但后端已处理成功 | 1. 用户U1 点击立即领取
2. 将首个请求模拟为前端超时
3. 用户再次点击立即领取或页面自动重试
4. 查询优惠券列表和发放日志 | 首次请求后端处理成功;前端超时 5 秒 | 1. 页面提示处理中或可稍后刷新查看结果
2. 最终用户仅获得 1 张优惠券
3. 发放日志中仅 1 条成功记录,不存在多条成功发放
4. 页面最终状态与后台结果一致 | 非功能 | +| C_NG_SEND_004 | 用户端-首页-新人礼领取 | 验证发券失败时记录失败原因且不出现半成功状态 | P1 | 功能测试 | 用户U4 满足新人资格;将发券接口模拟为失败 | 1. 用户U4 点击立即领取
2. 观察页面提示
3. 查询我的优惠券列表
4. 查询发放日志 | 券中心返回=库存不足或券失效 | 1. 页面提示领取失败及失败原因
2. 我的优惠券列表不新增该券
3. `new_gift_send_log` 记录失败状态和失败原因
4. 用户状态不被误标记为已领取 | [AI修正: 覆盖部分成功和异常记录风险] | +| C_NG_SEND_005 | 用户端-首页-新人礼领取 | 验证同一账号双端并发领取时最终仅一次成功 | P1 | 功能测试 | 用户U5 满足新人资格;用户在手机端和 H5 端同时登录;平台存在进行中活动 | 1. 手机端和 H5 端同时打开新人礼弹窗
2. 两端几乎同时点击立即领取
3. 查询两端提示、优惠券列表和发放日志 | 用户U5;双端并发间隔小于 200ms | 1. 最终仅 1 次领取成功
2. 另一端返回已领取、处理中或重复请求提示
3. 用户优惠券列表仅新增 1 张券
4. 发放日志仅保留 1 条成功记录 | 并发 | +| C_NG_SEND_006 | 用户端-门店首页-新人礼领取 | 验证用户领取平台新人礼后仍可继续领取门店新人礼 | P0 | 功能测试 | 用户U7 已成功领取平台新人礼;商家A 存在进行中的门店新人礼活动;用户U7 在商家A 维度无非关闭订单且未领取过门店活动 | 1. 用户U7 登录平台首页并确认已领取平台新人礼
2. 用户U7 进入商家A 门店首页
3. 观察门店弹窗并点击立即领取
4. 查询门店发放日志和优惠券列表 | 用户U7;平台活动ID=PLT1001;门店活动ID=SHOP1001 | 1. 门店首页仍展示门店新人礼弹窗
2. 用户可成功领取门店优惠券
3. 优惠券列表中同时存在平台新人礼券和门店新人礼券
4. 门店活动发放日志新增成功记录,不因已领取平台礼而被拦截 | [AI修正: 按产品确认口径补充平台礼与门店礼可并存] | +| C_NG_CHECK_001 | 用户端-首页-资格检查 | 验证无进行中活动时不展示新人礼弹窗 | P1 | 功能测试 | 平台不存在进行中活动;用户U1 满足新人资格 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动列表=空或全部不命中资格检查条件 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动
3. 页面不出现错误提示或异常闪现弹窗 | [AI修正: 将状态负向场景拆分,提升定位性] | +| C_NG_CHECK_002 | 用户端-首页-资格检查 | 验证活动未开始时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条未开始活动;用户U1 满足新人资格;当前无其他进行中活动 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动开始时间=当前时间后 1 小时 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动或活动未开始
3. 页面不出现提前曝光的领取入口 | [AI修正: 对标团队用例补充状态拆分场景] | +| C_NG_CHECK_003 | 用户端-首页-资格检查 | 验证活动已结束时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条已结束活动;用户U1 满足新人资格;当前无其他进行中活动 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动结束时间=当前时间前 1 小时 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动或活动已结束
3. 页面不出现已结束活动的领取入口 | [AI修正: 对标团队用例补充状态拆分场景] | +| C_NG_CHECK_004 | 用户端-首页-资格检查 | 验证活动已失效时不展示新人礼弹窗 | P1 | 功能测试 | 平台存在 1 条已失效活动;用户U1 满足新人资格;当前无其他进行中活动 | 1. 用户U1 登录平台首页
2. 观察首页弹窗
3. 查询资格检查接口返回 | 活动状态=已失效;valid_status=失效 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回无可领取活动或活动已失效
3. 页面状态与后台有效性字段一致 | [AI修正: 对标团队用例补充状态拆分场景] | +| API_NG_PERF_001 | 用户端-资格检查-接口性能 | 验证资格检查接口在常规数据量下满足 RT 基线 | P2 | 性能测试 | 存在 100 条历史发放记录和 10 条活动数据;性能环境可统计接口耗时 | 1. 触发用户进入平台首页调用资格检查接口
2. 连续执行 30 次
3. 统计平均 RT 和 P95 | 接口=`/ua/newGift/check`;样本量=30 | 1. 常规场景下接口平均 RT 和 P95 满足 1000ms 基线或接近目标
2. 页面无明显卡顿或超时提示
3. 若超基线,应能定位是活动查询、资格判定还是日志判断链路耗时 | [AI修正: 技术方案给出 RT 1000ms] | +| C_NG_RULE_001 | 用户端-资格判定-新人口径 | 验证存在已支付订单时不再识别为新人 | P1 | 功能测试 | 用户U8 存在 1 笔平台已支付订单;平台存在进行中活动 | 1. 用户U8 登录平台首页
2. 观察是否弹出新人礼
3. 查询资格检查返回 | 用户U8 历史订单状态=已支付 | 1. 首页不展示新人礼弹窗
2. 资格检查接口返回不满足新人条件
3. 页面展示与产品确认口径一致,不因已支付历史订单继续认定为新人 | [AI修正: 按产品确认口径更新新人判定] | +| DATA_NG_SCOPE_001 | 平台端-商家端-数据隔离 | 验证平台端与商家端新人礼活动数据不互通 | P0 | 功能测试 | 平台端已配置 1 条平台新人礼活动;商家A 已配置 1 条门店新人礼活动;测试账号分别具备平台端和商家端权限 | 1. 在平台端查看新人礼活动列表
2. 在商家A 端查看新人礼活动列表
3. 对比两端列表数据 | 平台活动ID=PLT1001;商家活动ID=SHOP1001 | 1. 平台端仅展示平台活动数据,不展示商家活动
2. 商家端仅展示当前店铺活动数据,不展示平台活动
3. 两端数据查询、查看、编辑入口相互隔离 | [AI修正: 取自团队现有功能用例] | +| VIEW_NG_READONLY_001 | 平台端-营销管理-新人有礼查看 | 验证查看态页面所有字段只读不可编辑 | P1 | 功能测试 | 平台已存在 1 条新人礼活动;平台运营账号已登录 | 1. 在列表中点击查看
2. 观察活动名称、活动时间、活动奖品等字段状态
3. 尝试修改字段或提交 | 活动ID=PLT1001 | 1. 查看页所有字段均为只读态
2. 页面不提供可提交修改的入口
3. 用户无法通过查看态改写活动配置 | [AI修正: 取自团队现有功能用例] | +| PLT_NG_LIST_002 | 平台端-营销管理-新人有礼列表 | 验证列表展示字段和操作栏状态映射正确 | P1 | 功能测试 | 平台端存在未开始、进行中、已结束、已失效四类活动;平台运营账号已登录 | 1. 进入新人有礼列表
2. 逐条检查活动名称、活动时间、活动状态、创建时间、操作栏
3. 对比不同状态下的操作按钮 | 活动A=未开始;活动B=进行中;活动C=已结束;活动D=已失效 | 1. 列表展示字段完整且内容正确
2. 未开始活动展示编辑、失效
3. 进行中活动展示查看、失效或按最终规则允许的编辑能力
4. 已结束和已失效活动操作栏按需求展示删除或受限操作 | [AI修正: 取自团队现有功能用例] | diff --git a/output/versions/新人礼需求/v9/新人礼需求_测试用例.xlsx b/output/versions/新人礼需求/v9/新人礼需求_测试用例.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6885909cc6d52fec04042f6bc971746d39f0aca6 GIT binary patch literal 14234 zcmZ{L19WA}wsveA9ox2@j&0lQ*tTukw(X>2b!^+opL5T6@4kEf_x9eaYOFEVH+RjN zs9H6?DJKaGf&u^l00AJ8n64!{A}yZueK+-eA$(s(wuW*Jwswwm`gV4-uGUu4Gt$ug z^e|xCJqpe(Y2mnqaKb#{*_|`APC?BS)`72A7a)8#Zf>L4`Ltn#q|K=!H?;fKOpGJ2 z{7Xcyyc6Sj;d%QW)eM_{k#$(`g?PBY1Nqj=zCjEy?324KwI>U-qNYwW$$~ERobsdt zyK2mwb!2!I8$X~Bj@(IjBakIIQm8<`A`~Z36|)b=ZQqSRd%)Y#<^DqjHy44s)9;~A z00ICY{!bMQZ5@pN(xE7>&tiZcCRn#L#f(HOVs1nh#Bg7uzCTwni6toBpd4e$MZR`j`guZ4$zBF zUURBUY&J^$XM3M+I=n8{gqv8CiH)MEq3P|V#S#6+X2hOU<7ekJKx>Qa0<$FBq#Y!5 zi;p|C6DX#g)2p0E4|zuU8qm{!NS9+iJ7!&$a5niO+5FxWeJ40{nT-JZb>LVfZ!Eh2Vw%$>9lcuQzg*c zDi1@M0a}Y%DOJHClOGtBxx!k5ZJKfAZQo z%P`A?iqe#ww{+Q@j}9BInstTkzL5rXt35Nb zpB?Ey)Uo-f=JhBmW<#`G*4se1oG3~xk~2!vzK_V>^b?j5nGYf>IMqV#2T&m-Lvmj5 zbK`I&;x@8ZOE<*mR#fOyg>5>IYM$E9wZLZtQLNoe$3w?Ct2gi>(YZ(E&W(Z;HB`V9 zj4kGJ7V4oT*QDN?s!VPiWTdG?XfT1`6k<}OG7fKPapX^`qP5S=dH(A}I^tJ}xES*W zqLN>vQ^!nLeWEqkP9bK$x!pfOUou&se#Bwp0GVPph!O;vcUW;Ah{l|Afg$t9S4slNELJlh^{f#6CP}3Ev4LGk8I|I%HR%ibYO&2s3Xf zE+Z7^O&c!nfx9adTk>$HT(!Rk;Md$5TYtr~e=mm*t=CM^RogvJ-tQJRA}`av`3TKF zqBfd?Z`BNI%gnUohN=!zqa#W+2^1?FIlbo}X1v)q7q6?tfi>ysG(>2zl70;W#I5fU z{ysb^leb&ndSpqYeP z93)Sh6T6#8*(L7lChcT!Ct$ctx#Mw~U2<_)-X67`_lb(=6;p&-u>`w;t=qFUIN7sP zbL^F5^^MUL%`QnYmU z=HmC(i;bIXYA9SVtqB!4`pr|3O)JL#7}xbFz%zUa>jpo20%Ai3b zi5n)O7fa;dVJdbXQT-fLX73SUYDP-I=-fLTv6oS7MRIP22V!jN;3#u9W-u+j-J*ek zq}B{oN7|LvzF0iU$gFlJbbd{7>C?OYup1MDKj1pjz1J41_I}*ld$md65|_$!8$ty9 zB?3g0^aBhHopE38GCmdz8E`6bO!yke->CS9Z|W;_*DXvN1?qGaFNco^bwIF;&TkSV zl<-;@Py%#^y{oGP3zx{{S86}&KqW?_Mf7o@us$9p2cZ=ulDq0PQs|)dU8SiGtZq_0 z$pLqpEE=+}b)5yCMsyz0yMnZB+=dXx4ENT4k;*T%CEORrEe^YN&Og99hse}Ih2DK$ z;o-iB6$ahyHL@=xnOuz?H-7jT?@Q~2kDJ>to(mNkMMhMJe3Iavc=2F{k(&3+x-lpQ zRmF8x!)pvMZoX=FFnK2ITOlIpSWJr%l^jt}wgQX%2Yl-bux5|2%s=8lbr{l`Sqt`M zptv_auV8EY2cvf`B6z30RYGw0RX`GdjWB=b+B|aGdBL^NcXSqU#rN0 zwx;3_v1IS3n&a8KmD$bQ2%##7JnZy`6)0U314BchVHHWj$UwBUrO9BtSx_^CSqS?C z06<10#&|QMvC=$&_ms5i^2?GJ=nOJh6%}V?lPpS&TXz>7;`R>4JEJ8I-7LpjE_JaQ zmnY9<4~~o}l27-dGYi|p-UF@6wGnCQt}UHuos;8_(l?Dq%C`dpmzkvKA8#v;Wo1tq zvdw!yw!exhC>A$7YfmJ^juwGOqHnLJAAWGHeRx$@+*v$o$>u-3QK@pee=a3ooOWk( z#By(Y-?$wWO>lgQ%-0nxbJ803j2?Ek4`bEFNZ02;XQ|e!dT@2rkh<5SGl55w@qHRf zLfiJ!y*Qday4T#g0GZrLyF9sE@0$rmyHBL@?$;egIQOb^~ILcy@9N~~cVII86V zj`#ZJ;>4G<)=0#>m3H?>cgh%%MuT6?FP)(;uFq52rr(6d7I8>43UQi+A`!oGMb>8X zMH*B+J*?`c4K>n2!sL#^856C0*Hda#DoKg+;aiX;6Jz5Ldvr_X5CO>ZX&ec-3z${}-VptE< zbg!l7Tk^FvUAat6*C;#Z8o2}-Gc;SAOPDWYf?FDH9aY@cvsWvpI+q%GMH+FjoSc_0 zf(|6y6z5-=>qO~rmzPw|1@qcl^31(RJDo1(tUbKvD7G5#rY$vELRzZNCpA9YOg)t6 z@2Tq+=q8p1xYC_{U~Hcjk8&2+EDShFP^rFuLmofVin~}9X#UhT>!=689;wfb&nTtj zER8oTKA?J7^{>&s7hDA=;g!;SSx85&M8s4Ki7j0lJS^65IDn5iJc_#q{AtH~o+*hWGh(EXSB7!%7Cs`dw|`(?-=TM%}f@@+cMYUuF}H;vdMuD+e@b z#Nrpm^25M(xOeO;xx99lIV!rcwmzkQJJ5Xg+B5zXt-D9eLx5t-uvpe2Y{i$dwZo=6 zgCTrX{Yk!z*X*r){t}zf)(a-xP}(l)bOguaJa|=oLmG*tQN5njWvv!A z2=mJ}pIx2Z=GPtY`IoDp2<6*n!1yD^=Wnoy2=`0poW7R^Jh{rqPI)_P{&cA#=5VZS z?p7MpY9Zp=;)S%m(OAlc#Szu_gT#h4E$gfN-Q*@73L9{paht$Q=4#3W2$CVctelpe)A#$Wx5Eo?w$&lm z)vY(Q^M3ZxvktMPXN>XSSzWLDN!o`7ozx_VuI`&r4a^~mbb@pMT%4s$l1Qw)XsTGa zyoah6WL?m`Mv%Qta(Vz&jc^_oYWf|Jc>ZrJnv_PY~fJ1eS#}o#dTEsuGMdXVDqUUVN+~q0;@mWArTd zQ`L4=st;)nUxAiUeb22`6KcgCLdyr5b6Q?!dunn9#N$K^rWuYGjDxvRXV%_yeve*fwBH7%m8DSa#dyX2&zGC3$Lexx+qYBwC z0I_OP;EJ_=A^^-HNhS9Z&n>KtX48?>3<5o(B4#;IMpnIw7--*!f$aRn<(QYLvGxH!j0C9V>dSa)XemOH_8diz80{tPd z3=y>r=IpP`aFP>SfdO=ST>>n%Op;s10zA!JBuw4dGq-#u;XMX8CyRI-g~dq?a#062 zG5_vce8lvYu&^ilhoAtNaQ+0km^df9T2XK#JM&#`)`~V)4T*fV>Uf?{Zk0WRtp_QB zFPC2CWdxDuEbPV=$Y9om zBRCHMG1~&i-zxwK2)^gaRT}4X>7G|=Py&b8FJ_0hbEi1c!)+X1)8FALmTO1PN*)-2 zO45DH0jNJCP;Dm=g4B+*GZN2o9ns(%@IXYz6x>-dV9aI^+w?w()mkGehR-C*teH`6 z8lXX#{d`W5;oM=Q59VRx4wxaHsz(SC8EZNlE_<%|5sRcrSyu{LM9cl+bMMy9t9b7|c zV(AJpgfA0>+FOp!^w=&gqyM@BJu4h+ZX~_|92{wD>#==o@>4%6DL1N377HDGWMneQ za&rLj2Tp%)Q#71DC&>7TCb-;XtZC1RA6z`2edF4lv%&0_m@<5GGj|;0e;b)VAACWV>I$9NZY-7@gdL znT{qY5=bh0!`Bo4-X8Z;1#OAGQk9C_9=}mr33Bu^xbymc5k~PaCy8^|g(NZK;W|tN z2S7j48L*Pf$8==EBxm%gtnV7vs$bhKZDN#gGYGV{;9(HFf{gtAoj?}!!{kHu^iYh9 zH;sTfdmf)V?_T3p#NyW_xEGqB3Yy5=aEyXtDDclVOpm%bP5Udaam6R&i=(Q6WyHZX zLktI0T8(aQWy@4ZnnoI+yP0*#g@YvH6XUXWEyFx7mPkp{8Ye(ZLg|V1LI9&jIqcVe z=#*bxx@UyxghRPB+1qB%;0q*J9aod2CJLtO8Tag6a@N$eFi@Py;qn%8UdG-2aeTc# zuel`C=f+@k@t~Ts(OYz=&L@N$;YWDR&)7FS68K6lpOUk)ohnvwPP5Jy&gn}W%MTqJ z7=#E=W{U$bN`!j^O?Vz{LwVd+4I)tr772F95RgQwoRf28YW z0HZg+*~h9#=uY-TdCj1E$W1XnnihpPWV!TmJkRy1KrCV6b%YS(ZlcR8vFar-PoG(ecCe z2onM-rR^)}u6$DQmTBoy@+>=gaZUy!jWv=OC6yoF>kI&hB!j0}-_eK=NFhdV4B=dx z5s7=gZNTIp#o|e|abxgW9^{Ybjj{M}pRmeFK z2h8)M35yXhfbmh1Te;x^O>_0E`vq-KG^G5H-z}7eyd0ps9>$CSwd0XrHY?#Il1 zy2oe|E<;mMH!QvUitbWYXufz>JSJQ95k~PaKL}aeg{gr^7k=Zv({N^hp{=|MnOY6} zAy;mGz43q{(&s{I(ZJ)W_;g>_S*!CoHDp8R;-)D{s+Fy35T@YuQw}~9s8uMP8#~rJ z_)WTMxIQnHk{wK~jTde1N98GuXJnl6+J?v3&PkUU0+e{= z!K8oc6r7#HzxBdfLao+Qe)-BEnFRz8=qXI4{tK1j8Y?pq!kwgpUmNGp1xhMDb*z95 z%|i*?>HX7r-0nV9(2O{U{Pj>k_=f#vOuX>94A9a`(V+l@$L+JNiAS-c1!p{v@bzmx z%sCp5jF-#Q*^{tgTbtnt*@9$mejBn+E^`l3npWZ+C^8$Q^!s=oRN|zuT{eo1EJNT< zPYAv66lg)k%@k`5>M(J_r&h^J>+N%rzMl>W)g+-O$*~3(rg$%{BA4?3KtxjGY8}Y< zHe)#b6QPo#o)1%s&Hfh5MIwm)V^y$u$m5C(<{1VT4yy9~m#BnE^umTdE-fRS^m_rU>^;5}{#|G`g8d#=h#4lrDlgA&aNL6EX+M`f)|_=@K|^bQK)s1CTA;|!2*(rK z7^;B1{DeTg)LBd2=n-4lUa9Za($;M@#ntp+!k|;SuOl+?&1P}^|N zBuI4f8a?$H*D69N4HG|*ao4&uB4%WpL58MgI1005^3*?@H%{6F1UR`tw3?0#+vIWf zXp}>tjr7g0WoDck=n%|**0L3(e>tz5IWtpPo}!gRFqp0Rd8g;o`-GMP8L5d8IMTpD zpAR`fD`#)VNEUlGDDC#LlejLTSqoiEA{W>AS<#%rT9eR-?V&6|RY|2pgIH?Wz%TDf zqPi5QuOQ*RW*3BZMp#pNdRB+JhXA}^Ts75B&5|yUuUa*x(4nZrWrOTS1R0S^tFYYW z?6Wa$D@Z;P(qBdBJ6+b9i+awj*Gh&8h&`2Dbr5nHDmrgYmOS7a8CBN}I~7oSeAAsE zAG)RU!<5!0I7{-EADO7IG@<-~6bubNedT1@F##Gx`dMbe4aaVv9u|V9ZO}BkigrJ_ zLK_nUXw4t>Nf8z9FCR)LQ9ZfZ`!00m`H4?j%Je=a{m-!eyHXlk3ghW&f-~rJW!GUS zGvc3(W)tZ|Xv{5O(CJC>#syBz$j~OEDJ-H@Y|QYxm15Phq6W*$dzIS@qabGr0%ou0 z@lEzzAZi06<=`q_nb>J2TL`toN2|#GKlKip(V*$8+BlAkSC3RhXBrX;ZR1RzG9_Te zmtKbfVP3Kma@@-k8z*8);ocF?{Q%xiPa{_J8zT}h(p$MBxw^gDye>$_uVjq&!@pak z7Y~Q7(_?uvh%=(c1ja z1vgkrtN#Q8k>i5YgAU+g(yI+Pa=RvD1DyX<=?ST@!Qe;HPSuxHuS;7$%|-_7X0c(n z^8oW{xR*3moe0HWn(%dql0W-41Nl+hSwh^(1Fgw;1~c)?epE6_m^P@9SyxUxVb7K7NavHOuP2FUrpuSe zo9R)h27!B#0Sa_k%YjdYk@y3wVG2BAg??xnHqjAwI=K9F!4VnJ&7Jn~iY+W6LpVTt zEg@lkh#I|VHKD}t(H^otXs?v6s1euzKV%#{ZDXp)-GC3?q7YJZDG(u^=m}Kld&)6% zs3(7M6@GpSogn1gptzco+-t$gqQE;pxT70FV%!}M(#At?&;roBH~URuvSKev9BR(J z*>}e5bX{KAlHWmKDD5qq9Vf_#Mk*ytfg{;N-h*5xm|hRYWe?e4ichKnnOnF}8Kaf;6Lx zmvR~Kgr~2*d-Lg~_$wi{2lfPyA39|o!5=D|kB(D;!!R}nnvb9;OO0Zntu(6c{o8!U z2X*g?@@k*B?)F(tFNUBhKBe#wD$nG!mC6yu@(B7+?`xquAnqS8=Vd(@eN>DCIbd{| z(P*8!Oz)6=QrpTsUf9TmW}+VWpD5rzM=uu1J-}Rp(YPO8szfJuSt;ONcT3o=xA4)Y zIqc`~#f8I*mC$(v>>V&2e<*8fVeDI(%!VF<9D{pyl!L)t#+$M z{#oF9n5N{BTAX3UJkJhM23x#^fwMKsZT5$dG>~!a)>y+VQLG|vW3~4>{0byIg18g5XOJHR0%j(axJI~h@5OM#P>$-oR-Dtd zoJ+VwOewSDAb(CXgJQsM-RG*dHz03R{VI_Gxfv5eg6ZLMDjiL7%^nTTKHITuRF zEDb{V4lIw5cP=}&grHO$QH}u4z~?T)LRUjPcSg@etdKxJZEY~rf=+GAfIl=51SoaJ zs167vTTIHpSzGi9dv+w#QC%v0#F#ae=^66i;PjAchvwEO!vT%{%)xFQb6qYE2nV97 z?CNO6LBgEe2cK}A=b&y=aW00ork$(*d--U?^WD-DMC`fefb7l+KzM^s5w7#OAm|l# ztooq36&3V*CUy~|+yp~Y=iA=l=ae^n$OP2BB8sf_0F~Qzpd<1?deAbVah?^+?NC@! zOkXfwHVhpxiGd+8ui0M}LSU(l-#XodabPT8cv$p`!w2&W$D|$&(8T`%v23{A4c1?> zo6Juk!&8(ghIbgRXMhIwl+Qrfmgk1x$W7@+iInssM_Qx4M+US&Mu~Q&0ba~vOy%SqsEP!5p-S)TBP?NI zIO$q%hYb+Gi%0PHIAs6vduRO0YwonRM#n%|ID9)#VH1k<;d?icC?emB8MT#hdp}en z_P)aq8q!5*V5m`C)u}VR3L`Q06LD+QK%sk(V^N3z+99GOpDh>hD@8f-0!6z?n+oKH z1w{i#ZoN%%;M>1GTArl{Np)qKxdgo~V0!}$JzCy=lh+gVC3tvPo!Q#`=r{c73o+_= zgg|=R5!_?Z=g+IQfl6nAQV$Q`pT#v!QO=^&B!t8+v)F>50g)H;q>>f(iY+8YCBVD{ zO6@4gPLb(%!wsu7)?E$1_Ct~5 zChI!E>UK6In-e~P>sRAte8B_u181#YLi z005lrb_f&PXv?5FsqyI^FgAMReq`_T5T@K(VG!b>G!XiIB#AJHs{4a-7W_)=Ha_*x zh3_)NQ<4G$6cll+g(Ai?BV4dsnE(Sf#&c#OqTBT~CA57l)DMN6y)ekXbblRzoL+>V zO!0=JC6K$nCl%wyVs_Y8436_T%=q2fYSenjf~ffQ@$|=;Vr;8xy-rb^n`?iLJApm8 z^fc^@`kgc%9g0hm-`m|NP%pSK{f@B(1yzMyhOg3c4Gn>lu1CCnf)p#8W1Sy?r4!lPUkDmV+u&ll0%a#A-#MmnGk zrKS{SvKxbB6$vtBWpmr|Y{I1h0PCnZmv4*C9?rQa${%;MW;2>sNY9OjNZnIgKhHv~ z;4JxTD*@R8tFJvTXbYBuH8hGL#m@j9AI%JpPhmL$3rASr_bpxe+9Oxnvsy=sSKi>^ z^t;i{HQOI6mZ7E%G%^29j$W&ui^}?-SE7I|peH00V!2>YnwQ5Y&o368xD4>LZu6QP)s&D@Q`Mfr2_9D0ZOS8r_ej5NtUfnvd*PZO`f zeY9e!d~{-2i3r(Kd}1Z!D!F4FTh6}qn%)4xCKQ%AIi}d2idW-QgFYT;?{Z*ol}2J> zY^pK6oa~#{=WDEdWKt6h9(834zvFoMcFctjs;Rh+L32}@s()0&*--57{}_q>?bk$fDY*Cota&EXhc10&s!6poV9W3hI#&zOY=x>CVfK*6f<(qK`SgTRrAd{fMFBf)5=s zBNCOL6P++3SYr!iz4=)a$h~70pq5unVUrndD0vkn$QfV5NU!{iS<=b9-^|3TNA1QZ z9jesQRrz3F83m{emx%O;bi*^Ng&%_!4R4y&z#T=ZjiUwZ4z`Ru10NnDAccDkV5etzsnE2!v}PA4)n|F2d{y;R?{Z!z6NaLe5v8oPuvqh7|12JvA*m>LO6a`8e#( zRRBoh6fGB}c)9E!$9)V_JNtpUervd{ReCRT;DRhh9`8n!sRrofE6PmRM@~4#dJ$(e zFE8F4%IJDa(s8kStbI_a{W$ulpi?l=8Yv3ofXz@EF0CN}GuJI(6+Tl>vX4kUYj7RN z3TEd8DkA9*psP!BDSR-|jA18+r%9k?wwGWgk6OqoNmtpW`HV25w*HiA-v@@6!Q5a~ zEf|d4e9QqFK$+(kq_2z`#gOdzh92Q8$c?VtW*lU+2|#oC+8#;|b+tu-b~D7IW@4sP z<7|)*rezixXK98z2pSWY5$*liSc*m!**gFvW6?=fKqxE&){TLhCL2Q#tcWNe8S|G_ zAZ{@K%5S`y525(DPj|8xd0db0tkh?N;`v=HeJyRi_haKEf> z2HPXJtU}G^Ck23uu8NR<*7wW?4v22MJ|=F3iWvg``5=#)s}M2cq+i_7vMsd={O|~+@zsN=YZM(#jYt}Vl$IZ(MmNkH?`yX_ z#L^(yK9T}t0mopANb9HBGP50}Ze&-H5F}2=)<_#LXLh`7G28)>$pHsP2=gy)H&H)k zg)OVDNia*idf5Ye=U9ipHziHZ&;;7}R;4N}hV0TU07R+}8xUO_|ZmO=AmFN$xl(5oN#Y)AmxTZHKO2GJnZ}nihj@s!Kd%2Dz+?_IQYtbbK3|F_#K; z-NkN1*BnAw8uPjMZOXGdktqA5@5F0%VxKfG-#XscB0X4$gj8T>#XaYJI@p8hGW9qm zr}8A-l!}p)Ed{Z+^bu{rQ=-=fsBFd$gI-h05y@3)Lv|MMjTpz+nR6 za6liMC;%%nJXWU|fQ%Rcz}p|=AIsZBaz5Gt%U2KQ8Sj!0f#q@{AAL6d4V~p<* zF>0%)&Yt8R`~0HJ?rzFz0_im}RN=2Y@L2JZj$W}>xK#khIly&zZ2l061s!2&{S*&RlvrF`cO9?{2$DE~qqN(-qeEWW zZEol)Ve&EP+&h|ffO;>Rk^>kMw7*&>(?}rPkJ-CpP85sq_^{Csj*Q!!%~7Mwb?M> z1GVK~qmaQH5K_*g9ro^?e1d4zn;q-N@A#(DYJd{W{1io6#l(USKxNGkR*04ueK6$ za6Z@pIW&X}m6wsDdn8%Q&?BCoft2#kMy7phe zRABAk7R9=m5P8#Z@Ve@{I}e#AQMP2orBCFcqKRVqX1L5gF(lt6CZTNR%w9w#dTl_waFa_5;V!%EJF2^0+u0TA#xc|u zC)%i<%hi_AHt`wGtlGN+^q+!vYVgs7?5dQRI&c=r+z zCOxj%KC6#X#rbb>4Yf>7nbMwI+Tjip>;FS9FC{pNlN1--(52 zz!ST3(rG8-eKUa=!PRmfrCn&3y@I~nIM(e6)`8J$x9FT*j`qQ0x7}T4Ts+?mzkvUf zmBp7tJJSpV0N@P+008?pE6eeho0YNSUxeOG)h*i$dW26^ge#n%$8x0*zk`*`f3qrE z;5}LxB&glOn@EX1F3*H)1~&4vKN!!4B27QNbi7UT1}OY`BwzW+X26D3D78VpsM&Bi`iNWITu!#r|1|ov!`6DHw4L@MpMDlbTT&vDT1rp1T{BHM+G^%{i$~wpLt^ zSN?RG_DCGOs`)tU&78KXf{r}ag>7NyNjtm5I3Z-;c>dh!4@XpwkO(Q_2smM@-EasU zY~J5kgl+8ZUl#XPO|zu+)jz=Edlx_Mk(2cynu68hsjNEza)!T_{OCo7v5)rzwN4$Q z>&?QNCQCKht_$bhen3AC)H%I62meT^c)AH>_@kAsfjvGswCk>_4zZ-Bhta(r6TC>X zVPRdBtS2wytbtgwABP5m?lBSA8lv*Nq(zL8J~mCGx3w_#tK9!&AP|r^HTbTN%)Vv| zt>pmRn(wh1pC!8IX|0}X0E;(rFOLJdx1a9jy3l&)CSaS3B(3JNg((@-ZC?c3gnCP` zqLn7J057-^-m11_8Z(^@^{ZteXyBFZL{gATI{h)U~>^n^0T z1xJw-&y^PXR{RsHZW#bf7A1PEg{1U~>_$2>;4HWL~P;-X7zy};q0ttkh z8OAGu#@7Om&^*HC=|>PC_=H5#@(^(6FoEL$1muaupCYgOUdi0uNAY)j(YOB~^tXte zh4+3tHrlt7Lx1s~ z_m5F4z4&H`l3&@`G&S(dxz0Zv*Nd!%=?Aq|RamM3>MbesvhDNLC|M-=Y4Vt3XCGD& zs1NT*Mrj6YmRh77-+$gi#htY~HX6G?p*#RSR}Z8UNeF4I+WRs|eobx6KrN(a)l{Cp zm#|zHPu@M?$L5QP*iqld6-q@oC)V(0Z*~{n6&V^dx^5kR-OZMw@VxY7(HDjNUKW8Q zwXJ;t{m)27b(smX{H|K4`c@SF?@0cOUuj@#Yx!3!N6D|teAg{}Bq2%fM%m2s8)%Rb zAg~ee`?`vl?c-4h*M^~IXBuiA?NTqH{E^6SIUi8RJIa%Tb>y14Q)Aiw z#hr`RIcWhU)6jdJuBdGYYN}NA!*#l3??xWC*FyBRu8*}m`+`ra4mMZX3Seb5d))lq zq75T+GlY6ebWo0@XhAy5G|=f?Tb$lwB$PyBe@4*B7MjxWcy0$hRWM2!4O>H3p_lHq z^1={xbWKqDwT}s8_*C|dVb$}u@i}MZL`Y(roR}d&C4=xKE2lRN>6SpUN239!*aX5f z^MFXMa>Qp-K^(@5O7ta)&{U_h9C`3)QgkdqK*U(YWVO^)M35boacTiff6}TPyeF8& zy`D{w9lABM4sWFkI2|9U6NNuzL*g|3@y~d$D8QV;l(&xV$0t#;f-%ouJn2(tFUkE5 z;9>1@Dz{Z-zbJ|u2FB{N?2IqU?l0eA&F>sDcT7{Z{?jf@XM62c-}ZR>whh+bcKO=} z|EG2S<&RBqJa7T@FhMm)2LKqQ3wc1rw3Vpnq5dz3e!_JX{TJAM0OC09^y)LoJx@la zbj;x%T=L6YNOxwW!hauSz8`YO%}RcLYm-}P?uM4)s9k_COhdU0>^ z)3~HDp24v#fb1SeR-0@nVW=}zZi}45A_?2u-F|?VxDg?5a~SO#7S^&8%noY^CAg>B zQF?awO^gh-qC)NxA2H8w06H-PoS48eZHIBPMmf%XjFyy$ge)8e^Ub6Yn;Sx9zKPX; z|1)Ky7uzPjzhDi8xY`8bbChLuQV}sK7(1%Pu^(u3u}T*B#~$`og_ZdF4L$jZ$C9vcqLBH#=001Drzr5ecUzFvqyZ;BAow+ms literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b771e46 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +openpyxl>=3.1,<4 +python-docx>=0.8.11,<2 +pyantiword diff --git a/requirements/新人礼需求.md b/requirements/新人礼需求.md new file mode 100644 index 0000000..0b6e5ab --- /dev/null +++ b/requirements/新人礼需求.md @@ -0,0 +1,72 @@ +# 新人礼需求 + +> 文档角色:正式维护版需求 +> 原始来源:`source_docs/requirements_raw/新人礼需求.docx` +> 标准化来源:`output/normalized_inputs/新人礼需求/requirement.md` +> 输入类型:`docx` + +## 维护信息 +- 当前维护文件:`requirements/新人礼需求.md` +- 最近维护说明:暂无 + +## 技术方案来源 +- `source_docs/technical_solutions/新人礼技术方案.docx` + +## 正式维护内容 + +基线-新人礼 +| 版本号 | 变更内容 | 变更人 | 变更时间 | +| 0.0.1 | 文档创建 | 张昊 | 2026-02-28 | +一、业务背景 +基于问界需求清单 新人礼需求 +二、业务目标 +通过发布新人礼活动,吸引新用户注册使用~平台端&商家端支持发布新人礼活动,支持配置优惠券奖品,c端新用户注册展示新人礼内容 +三、产品设计 +1. 平台端-营销-新人有礼 +1.1 新人有礼列表 +列表数据说明 +数据权限:有此菜单列表权限的用户可看数据 +排序规则:按数据新增时间倒序排列 +分页规则:默认10行每页,可自主选择每页显示的条数(10/20/30/50) +数据来源:如下表 +| 数据字段 | 数据来源 | +| 活动名称 | 来源【新增/编辑】表单同名字段 | +| 活动时间 | 来源【新增/编辑】表单“活动时间“数据 | +| 活动状态 | 见下方状态逻辑说明 | +| 活动有效性 | 展示有效/已失效,支持 失效活动,失效后展示 已失效,失效后 操作栏展示删除操作 | +| 活动奖品 | 展示活动配置的奖品,当前活动奖品仅支持优惠券 | +| 创建时间 | 活动创建时间 | +状态逻辑说明 +| 状态名称 | 状态变更条件 | 可操作按钮 | +| 未开始 | 活动时间开始时间>当前时间 | 编辑,失效 | +| 进行中 | 活动时间开始时间<=当前时间 | 查看,失效 | +| 已结束 | 活动时间结束时间<当前时间 | 删除 | +查询条件说明 +| 查询条件 | 查询逻辑 | +| 活动名称 | 模糊查询,查询列表字段“活动名称” | +| 活动状态 | 精准查询,单选,选项数据:未开始、进行中、已结束、已失效,默认空 | +功能按钮说明 +| 按钮名称 | 触发后逻辑说明 | | +| 新建 | 在当前窗口打开“新建新人礼”弹窗 | | +| 查询 | 1、已选查询条件情况下,列表显示符合条件的数据 2、查询条件无匹配数据时,列表显示空,提示”暂无数据“ | | +| 重置 | 清空查询条件 | | +| 编辑 | 打开编辑表单弹窗 | | +| 查看 | 打开查看表单弹窗 | | +| 失效 | 打开失效操作弹窗,失效操作后,状态变更为已失效 | | +| 删除 | 打开删除操作弹窗,删除操作后,在列表删除活动(永久删除);取消后,关闭删除弹窗。 | | +1.2 新增/编辑 +页面字段说明 +| 字段名称 | 逻辑规则 | 是否必填 | 是否可编辑 | 原型界面、逻辑补充 | +| 活动名称 | 文本输入,最多50个字 | 是 | 是 | | +| 活动时间 | 开始时间-结束时间,年月日时分秒 | 是 | 是 | 控制活动的有效时段,可选择的时间大于等于当前时间,结束时间大于开始时间 | +| 活动奖品 | 多选 | 是 | 是 | | +| | 送优惠券 优惠券: 勾选后展示选择优惠券,只能选择1张优惠券,选择后展示选中优惠券信息表格 选择优惠券弹窗: 通用优惠券选择弹窗,单选 平台端展示平台可用优惠券列表, 商家端展示商家可用的优惠券列表, 优惠券列表数据展示规则:投放,未过期且为 用户领取 的优惠券,支持根据名称筛选 | 是 | 是 | 优惠券列表:选择前 优惠券列表:选择后 选择优惠券弹窗: | +| | 送积分 可输入1-999999的整数,配置生效后调用发积分接口发放积分 | 是 | 否 | 暂不支持 | +2. 商家端-营销-新人有礼 +功能同平台端,仅优惠券选择时,仅可选择该店铺下的优惠券 +3. C端 +3.1 首页 +| 平台首页-新人礼领取提示 奖励领取后,可在个人中心优惠券查看 | 店铺首页-新人礼领取提示 | +| 功能点 | 功能说明 | +| 弹窗逻辑 | 1)用户未在任意门店下过单,即视为新用户,登录后进入首页,弹窗提示用户领取新人礼奖励 2)用户未在该门店下过单,即视为门店新用户,登录后进入门店首页,弹窗提示用户领取新人礼奖励时机3)如果平台或店铺设置了弹窗广告,则新人礼弹窗在弹窗广告之前展示,关闭新人礼弹窗后,展示弹窗广告内容 | +| 优惠券 | 用户点击新人礼弹窗立即领取按钮,如果领取成功,奖励进入我的-优惠券列表,并提示用户领取成功 | diff --git a/scripts/case_pipeline.py b/scripts/case_pipeline.py new file mode 100644 index 0000000..1f62152 --- /dev/null +++ b/scripts/case_pipeline.py @@ -0,0 +1,2117 @@ +import argparse +import filecmp +import json +from pathlib import Path +import re +import shutil +import subprocess +import sys +from typing import Any +import xml.etree.ElementTree as ET +from zipfile import BadZipFile, ZipFile +import zlib + +try: + from docx import Document as DocxDocument +except ImportError: + DocxDocument = None + +try: + from pyantiword.antiword_wrapper import extract_text as extract_doc_text +except ImportError: + try: + from pyantiword import extract_text as extract_doc_text + except ImportError: + extract_doc_text = None + +from export_excel import ( + LEGACY_COLUMNS, + REQUIRED_COLUMNS, + TYPE_ENUMS, + export_markdown_to_excel, + load_markdown_table, +) +from openpyxl import load_workbook + + +REPO_ROOT = Path(__file__).resolve().parent.parent +REQUIREMENTS_DIR = REPO_ROOT / "requirements" +RAW_REQUIREMENTS_DIR = REPO_ROOT / "source_docs" / "requirements_raw" +TECHNICAL_SOLUTIONS_DIR = REPO_ROOT / "source_docs" / "technical_solutions" +DECISIONS_DIR = REPO_ROOT / "decisions" +DECISIONS_APPLIED_DIR = DECISIONS_DIR / "applied" +VERSIONS_DIR = REPO_ROOT / "output" / "versions" +MAX_SNAPSHOT_VERSIONS = 3 +PROJECT_PROFILE_FILE = REPO_ROOT / "knowledge_base" / "00_project" / "project_profile.md" +CORE_TERMINOLOGY_FILE = REPO_ROOT / "knowledge_base" / "01_standards" / "terminology.md" +SUPPORTED_REQUIREMENT_SUFFIXES = {".md", ".doc", ".docx", ".pdf", ".txt"} +DOCX_NAMESPACE = {"w": "http://schemas.openxmlformats.org/wordprocessingml/2006/main"} +PDF_STREAM_RE = re.compile(rb"stream\r?\n(.*?)\r?\nendstream", re.DOTALL) +PDF_TEXT_BLOCK_RE = re.compile(rb"BT(.*?)ET", re.DOTALL) +PDF_ARRAY_TEXT_RE = re.compile(rb"\[(.*?)\]\s*TJ", re.DOTALL) +PDF_SIMPLE_TEXT_RE = re.compile(rb"(?.+)_\d{8}_\d{6}\.xlsx$") +DECISION_FILE_RE = re.compile(r"确认状态[::]\s*`?(已确认|待确认|已驳回|已拒绝)`?") +DECISION_EXPORT_RE = re.compile(r"是否允许在确认前继续导出[::]\s*`?(允许|不允许)`?") +DECISION_RELATION_TYPE_RE = re.compile(r"关系类型[::]\s*`?(补充|替代|并行)`?") +OUT_OF_SCOPE_HEADING_KEYWORDS = ( + "不在本期范围", + "非本期范围", + "不支持", + "不包含", + "out of scope", +) + + +def resolve_requirement_path(requirement: str) -> Path: + path = Path(requirement) + return path if path.is_absolute() else REPO_ROOT / path + + +def build_paths(base_name: str) -> dict[str, Path]: + return { + "analysis": REPO_ROOT / "output" / "analysis" / f"{base_name}_分析.md", + "relation_report": REPO_ROOT / "output" / "analysis" / f"{base_name}_关联与冲突.md", + "test_points": REPO_ROOT / "output" / "test_points" / f"{base_name}_测试点.md", + "test_cases": REPO_ROOT / "output" / "test_cases" / f"{base_name}_测试用例.md", + "manifest": REPO_ROOT / "output" / "manifests" / f"{base_name}.json", + "normalized_input_dir": REPO_ROOT / "output" / "normalized_inputs" / base_name, + "excel_dir": REPO_ROOT / "output" / "excel_reports", + "version_root": VERSIONS_DIR / base_name, + "decision_file": DECISIONS_DIR / f"{base_name}_确认结论.md", + "maintained_requirement": REQUIREMENTS_DIR / f"{base_name}.md", + } + + +def ensure_output_dirs(paths: dict[str, Path]) -> None: + for key in ("analysis", "relation_report", "test_points", "test_cases", "manifest", "excel_dir"): + paths[key].parent.mkdir(parents=True, exist_ok=True) + paths["normalized_input_dir"].mkdir(parents=True, exist_ok=True) + + +def validate_requirement_file(requirement_path: Path) -> None: + if not requirement_path.exists(): + raise FileNotFoundError(f"需求文档不存在:{requirement_path}") + if requirement_path.stat().st_size == 0: + raise ValueError(f"需求文档为空:{requirement_path}") + if requirement_path.suffix.lower() not in SUPPORTED_REQUIREMENT_SUFFIXES: + raise ValueError( + "当前流水线仅支持以下需求文档格式:" + f"{', '.join(sorted(SUPPORTED_REQUIREMENT_SUFFIXES))}。" + f"当前文件:{requirement_path}" + ) + + +def validate_knowledge_base() -> None: + missing = [str(file_path) for file_path in KNOWLEDGE_BASE_FILES if not file_path.exists()] + if missing: + raise FileNotFoundError("缺少知识库或规范文件:\n" + "\n".join(missing)) + + optional_missing = [ + str(rule["path"]) + for rule in OPTIONAL_TERMINOLOGY_RULES + if not Path(rule["path"]).exists() + ] + if optional_missing: + raise FileNotFoundError("缺少可选术语文件:\n" + "\n".join(optional_missing)) + + +def validate_project_profile() -> None: + if not PROJECT_PROFILE_FILE.exists(): + raise FileNotFoundError(f"缺少项目画像文件:{PROJECT_PROFILE_FILE}") + if PROJECT_PROFILE_FILE.stat().st_size == 0: + raise ValueError(f"项目画像文件为空:{PROJECT_PROFILE_FILE}") + + +def safe_read_text(path: Path) -> str: + suffix = path.suffix.lower() + if suffix == ".doc": + return read_doc_text_file(path) + if suffix == ".docx": + return read_docx_text(path) + if suffix == ".pdf": + return read_pdf_text(path) + return path.read_text(encoding="utf-8", errors="ignore") + + +def read_doc_text_file(path: Path) -> str: + if extract_doc_text is None: + raise RuntimeError( + "当前环境缺少 .doc 解析依赖 `pyantiword`,请先执行 `pip install -r requirements.txt`。" + ) + + try: + return (extract_doc_text(str(path)) or "").strip() + except Exception as exc: + raise ValueError(f"无法解析 DOC 文件:{path}\n{exc}") from exc + + +def read_docx_text(path: Path) -> str: + library_text = read_docx_text_via_library(path) + if library_text.strip(): + return library_text.strip() + + try: + with ZipFile(path) as archive: + document_xml = archive.read("word/document.xml") + except KeyError as exc: + raise ValueError(f"DOCX 文件缺少 word/document.xml:{path}") from exc + except BadZipFile as exc: + raise ValueError(f"无法解析 DOCX 文件:{path}") from exc + + root = ET.fromstring(document_xml) + body = root.find("w:body", DOCX_NAMESPACE) + if body is None: + return "" + + lines: list[str] = [] + for child in body: + tag = child.tag.rsplit("}", 1)[-1] + if tag == "p": + text = extract_docx_paragraph_text(child) + if text: + lines.append(text) + elif tag == "tbl": + lines.extend(extract_docx_table_lines(child)) + return "\n".join(lines).strip() + + +def read_docx_text_via_library(path: Path) -> str: + if DocxDocument is None: + return "" + + try: + document = DocxDocument(str(path)) + except Exception: + return "" + + lines: list[str] = [] + iter_inner_content = getattr(document, "iter_inner_content", None) + if callable(iter_inner_content): + for block in iter_inner_content(): + if hasattr(block, "rows"): + lines.extend(extract_python_docx_table_lines(block)) + continue + text = normalize_extracted_text(getattr(block, "text", "")) + if text: + lines.append(text) + else: + lines.extend( + text + for text in ( + normalize_extracted_text(paragraph.text) + for paragraph in getattr(document, "paragraphs", []) + ) + if text + ) + for table in getattr(document, "tables", []): + lines.extend(extract_python_docx_table_lines(table)) + return "\n".join(lines).strip() + + +def extract_python_docx_table_lines(table: object) -> list[str]: + lines: list[str] = [] + for row in getattr(table, "rows", []): + cells: list[str] = [] + for cell in row.cells: + content_lines: list[str] = [] + iter_inner_content = getattr(cell, "iter_inner_content", None) + if callable(iter_inner_content): + for item in iter_inner_content(): + if hasattr(item, "rows"): + content_lines.extend(extract_python_docx_table_lines(item)) + continue + text = normalize_extracted_text(getattr(item, "text", "")) + if text: + content_lines.append(text) + else: + fallback_text = normalize_extracted_text(getattr(cell, "text", "")) + if fallback_text: + content_lines.append(fallback_text) + + cells.append(" / ".join(content_lines).strip()) + if any(cells): + lines.append("| " + " | ".join(cells) + " |") + return lines + + +def extract_docx_paragraph_text(node: ET.Element) -> str: + parts = [item.text or "" for item in node.findall(".//w:t", DOCX_NAMESPACE)] + return "".join(parts).strip() + + +def extract_docx_table_lines(node: ET.Element) -> list[str]: + lines: list[str] = [] + for row in node.findall("./w:tr", DOCX_NAMESPACE): + cells: list[str] = [] + for cell in row.findall("./w:tc", DOCX_NAMESPACE): + paragraphs = [ + extract_docx_paragraph_text(paragraph) + for paragraph in cell.findall(".//w:p", DOCX_NAMESPACE) + ] + text = " ".join(part for part in paragraphs if part).strip() + cells.append(text) + if any(cells): + lines.append("| " + " | ".join(cells) + " |") + return lines + + +def read_pdf_text(path: Path) -> str: + raw = path.read_bytes() + chunks: list[str] = [] + + for stream in PDF_STREAM_RE.findall(raw): + decoded = decode_pdf_stream(stream) + if not decoded: + continue + text = extract_text_from_pdf_stream(decoded) + if text: + chunks.append(text) + + result = "\n".join(part.strip() for part in chunks if part.strip()).strip() + if result: + return result + + fallback = extract_printable_pdf_text(raw) + if fallback: + return fallback + + return "> ⚠️ 待确认:PDF 未提取到可用文本,可能是扫描件、图片型 PDF 或使用了不受当前解析器支持的编码。" + + +def decode_pdf_stream(stream: bytes) -> bytes: + candidate = stream.strip(b"\r\n") + if not candidate: + return b"" + for decoder in (zlib.decompress, lambda data: data): + try: + return decoder(candidate) + except Exception: + continue + return b"" + + +def extract_text_from_pdf_stream(stream: bytes) -> str: + pieces: list[str] = [] + for block in PDF_TEXT_BLOCK_RE.findall(stream): + array_matches = PDF_ARRAY_TEXT_RE.findall(block) + for array_content in array_matches: + pieces.extend(decode_pdf_string(token) for token in PDF_INLINE_STRING_RE.findall(array_content)) + + simple_matches = PDF_SIMPLE_TEXT_RE.findall(block) + for token in simple_matches: + inline_match = PDF_INLINE_STRING_RE.search(token) + if inline_match: + pieces.append(decode_pdf_string(inline_match.group(0))) + + cleaned = [normalize_extracted_text(piece) for piece in pieces] + return "\n".join(item for item in cleaned if item) + + +def extract_printable_pdf_text(raw: bytes) -> str: + printable_chunks = re.findall(rb"[\x20-\x7e]{6,}", raw) + text = "\n".join( + normalize_extracted_text(chunk.decode("latin-1", errors="ignore")) + for chunk in printable_chunks + ) + lines = [line for line in text.splitlines() if len(line.strip()) >= 6] + return "\n".join(lines[:400]).strip() + + +def decode_pdf_string(token: bytes) -> str: + if token.startswith(b"(") and token.endswith(b")"): + token = token[1:-1] + token = re.sub(rb"\\([()\\])", rb"\1", token) + token = token.replace(b"\\n", b"\n").replace(b"\\r", b"\r").replace(b"\\t", b"\t") + token = re.sub( + rb"\\([0-7]{1,3})", + lambda match: bytes([int(match.group(1), 8)]), + token, + ) + return token.decode("utf-8", errors="ignore") or token.decode("latin-1", errors="ignore") + + +def normalize_extracted_text(text: str) -> str: + text = text.replace("\x00", " ") + text = re.sub(r"[ \t]+", " ", text) + return text.strip() + + +def normalize_topic_key(name: str) -> str: + normalized = name.lower() + for token in TOPIC_NOISE_TOKENS: + normalized = normalized.replace(token.lower(), "") + normalized = re.sub(r"[_\-\s]+", "", normalized) + normalized = re.sub(r"v\d+(?:\.\d+)*", "", normalized) + normalized = re.sub(r"版本\d+(?:\.\d+)*", "", normalized) + normalized = re.sub(r"[()()【】\[\]]", "", normalized) + return normalized.strip() + + +def is_relative_to(path: Path, parent: Path) -> bool: + try: + path.resolve().relative_to(parent.resolve()) + return True + except ValueError: + return False + + +def is_requirement_markdown(path: Path) -> bool: + return is_relative_to(path, REQUIREMENTS_DIR) and path.suffix.lower() == ".md" + + +def iter_requirement_documents() -> list[Path]: + result: list[Path] = [] + for directory in (REQUIREMENTS_DIR, RAW_REQUIREMENTS_DIR): + if not directory.exists(): + continue + for item in sorted(directory.rglob("*")): + if not item.is_file(): + continue + if item.suffix.lower() not in SUPPORTED_REQUIREMENT_SUFFIXES: + continue + if item.stat().st_size == 0: + continue + result.append(item) + return result + + +def prefer_maintained_requirement_documents(paths: list[Path]) -> list[Path]: + maintained_keys = { + normalize_topic_key(path.stem) + for path in paths + if is_requirement_markdown(path) + } + result: list[Path] = [] + for path in paths: + if ( + is_relative_to(path, RAW_REQUIREMENTS_DIR) + and normalize_topic_key(path.stem) in maintained_keys + ): + continue + result.append(path) + return result + + +def select_technical_solution_files(requirement_path: Path) -> list[Path]: + if not TECHNICAL_SOLUTIONS_DIR.exists(): + return [] + + requirement_key = normalize_topic_key(requirement_path.stem) + requirement_text = safe_read_text(requirement_path) + requirement_tokens = to_ngrams(f"{requirement_path.stem}\n{requirement_text}") + matches: list[tuple[float, Path]] = [] + + for candidate in sorted(TECHNICAL_SOLUTIONS_DIR.rglob("*")): + if not candidate.is_file(): + continue + if candidate.suffix.lower() not in SUPPORTED_REQUIREMENT_SUFFIXES: + continue + candidate_key = normalize_topic_key(candidate.stem) + filename_score = 1.0 if requirement_key and candidate_key == requirement_key else 0.0 + candidate_text = safe_read_text(candidate) + similarity_score = jaccard_similarity( + requirement_tokens, + to_ngrams(f"{candidate.stem}\n{candidate_text}"), + ) + score = max(filename_score, similarity_score) + if score < 0.08: + continue + matches.append((score, candidate)) + + matches.sort(key=lambda item: item[0], reverse=True) + return [path for _, path in matches[:3]] + + +def write_normalized_document(source_path: Path, target_path: Path, document_role: str) -> Path: + body = safe_read_text(source_path).strip() + lines = [ + f"# {source_path.stem}", + "", + f"> 文档角色:{document_role}", + f"> 原始来源:`{to_repo_relative(source_path)}`", + "", + ] + if body: + lines.append(body) + else: + lines.append("> ⚠️ 待确认:文档解析结果为空,请人工检查原始文件内容或格式。") + target_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + return target_path + + +def extract_in_scope_requirement_text(text: str) -> str: + lines = text.splitlines() + result: list[str] = [] + skip_level: int | None = None + + for raw_line in lines: + line = raw_line.rstrip() + stripped = line.strip() + if stripped.startswith("#"): + level = len(stripped) - len(stripped.lstrip("#")) + heading_text = stripped[level:].strip().lower() + + if skip_level is not None and level <= skip_level: + skip_level = None + + if any(keyword in heading_text for keyword in OUT_OF_SCOPE_HEADING_KEYWORDS): + skip_level = level + continue + + if skip_level is not None: + continue + result.append(line) + + return "\n".join(result) + + +def to_repo_relative(path: Path) -> str: + try: + return str(path.resolve().relative_to(REPO_ROOT)) + except ValueError: + return str(path.resolve()) + + +def normalize_text(text: str) -> str: + return re.sub(r"\s+", "", text).lower() + + +def to_ngrams(text: str, n: int = 2) -> set[str]: + normalized = normalize_text(text) + if not normalized: + return set() + if len(normalized) < n: + return {normalized} + return {normalized[i : i + n] for i in range(len(normalized) - n + 1)} + + +def jaccard_similarity(left: set[str], right: set[str]) -> float: + if not left or not right: + return 0.0 + union = left | right + if not union: + return 0.0 + return len(left & right) / len(union) + + +def discover_other_requirements(requirement_path: Path) -> list[Path]: + target = requirement_path.resolve() + result: list[Path] = [] + for item in iter_requirement_documents(): + if item.resolve() == target: + continue + if ( + is_requirement_markdown(item) + and is_relative_to(requirement_path, RAW_REQUIREMENTS_DIR) + and normalize_topic_key(item.stem) == normalize_topic_key(requirement_path.stem) + ): + continue + result.append(item) + return prefer_maintained_requirement_documents(result) + + +def find_related_requirements(requirement_path: Path) -> list[dict[str, Any]]: + target_content = safe_read_text(requirement_path) + target_tokens = to_ngrams(f"{requirement_path.name}\n{target_content}") + related: list[dict[str, Any]] = [] + + for candidate in discover_other_requirements(requirement_path): + candidate_content = safe_read_text(candidate) + score = jaccard_similarity( + target_tokens, + to_ngrams(f"{candidate.name}\n{candidate_content}"), + ) + if score < RELATED_SIMILARITY_THRESHOLD: + continue + related.append( + { + "path": candidate, + "score": score, + "content": candidate_content, + } + ) + + related.sort(key=lambda item: item["score"], reverse=True) + return related[:MAX_RELATED_REQUIREMENTS] + + +def select_optional_terminology_files( + requirement_path: Path, + related_requirements: list[dict[str, Any]], + technical_solution_files: list[Path], +) -> list[dict[str, Any]]: + texts = [ + extract_in_scope_requirement_text(safe_read_text(requirement_path)), + safe_read_text(PROJECT_PROFILE_FILE), + requirement_path.name, + ] + texts.extend(safe_read_text(path) for path in technical_solution_files) + combined_text = "\n".join(texts) + + selected: list[dict[str, Any]] = [] + for rule in OPTIONAL_TERMINOLOGY_RULES: + matched_keywords = [ + keyword for keyword in rule["keywords"] if keyword in combined_text + ] + if not matched_keywords: + continue + selected.append( + { + "name": rule["name"], + "path": Path(rule["path"]), + "matched_keywords": matched_keywords[:10], + } + ) + return selected + + +def extract_rule_lines(text: str) -> list[str]: + result: list[str] = [] + seen: set[str] = set() + + for raw_line in text.splitlines(): + line = raw_line.strip() + if not line or line.startswith("#"): + continue + + line = re.sub(r"^\s*[-*]\s*", "", line) + line = re.sub(r"^\s*\d+[.)]\s*", "", line) + line = line.strip() + if len(line) < 8: + continue + if not any(keyword in line for keyword in NORMATIVE_KEYWORDS): + continue + if line in seen: + continue + + seen.add(line) + result.append(line) + return result + + +def classify_polarity(rule_line: str) -> str: + if any(keyword in rule_line for keyword in NEGATIVE_POLARITY_KEYWORDS): + return "negative" + if any(keyword in rule_line for keyword in POSITIVE_POLARITY_KEYWORDS): + return "positive" + return "neutral" + + +def extract_numeric_tokens(rule_line: str) -> set[str]: + return set(NUMERIC_TOKEN_RE.findall(rule_line)) + + +def build_conflict_candidates( + requirement_path: Path, + related_requirements: list[dict[str, Any]], +) -> list[dict[str, Any]]: + target_rules = extract_rule_lines(safe_read_text(requirement_path)) + target_rule_items = [ + { + "line": line, + "polarity": classify_polarity(line), + "numbers": extract_numeric_tokens(line), + "tokens": to_ngrams(line), + } + for line in target_rules + ] + + conflicts: list[dict[str, Any]] = [] + dedup: set[tuple[str, str, str]] = set() + + for related in related_requirements: + related_rules = extract_rule_lines(related["content"]) + related_rule_items = [ + { + "line": line, + "polarity": classify_polarity(line), + "numbers": extract_numeric_tokens(line), + "tokens": to_ngrams(line), + } + for line in related_rules + ] + + for target_item in target_rule_items: + for history_item in related_rule_items: + similarity = jaccard_similarity(target_item["tokens"], history_item["tokens"]) + if similarity < CONFLICT_SIMILARITY_THRESHOLD: + continue + + conflict_type = "" + suggestion = "" + opposite_polarity = { + target_item["polarity"], + history_item["polarity"], + } == {"positive", "negative"} + + if opposite_polarity: + conflict_type = "规则方向冲突" + suggestion = "建议补充版本范围、生效条件和优先级,明确保留哪条规则。" + elif ( + target_item["numbers"] + and history_item["numbers"] + and target_item["numbers"] != history_item["numbers"] + ): + conflict_type = "数值口径冲突" + suggestion = "建议统一阈值口径,并在需求中明确变更原因与兼容策略。" + else: + continue + + key = (target_item["line"], history_item["line"], conflict_type) + if key in dedup: + continue + dedup.add(key) + + conflicts.append( + { + "target_rule": target_item["line"], + "history_rule": history_item["line"], + "history_path": related["path"], + "type": conflict_type, + "suggestion": suggestion, + "similarity": similarity, + } + ) + + conflicts.sort(key=lambda item: item["similarity"], reverse=True) + return conflicts[:20] + + +def escape_table_cell(text: str) -> str: + return text.replace("|", "\\|").replace("\n", " ").strip() + + +def write_relation_report( + requirement_path: Path, + related_requirements: list[dict[str, Any]], + technical_solution_files: list[Path], + conflicts: list[dict[str, Any]], + report_path: Path, +) -> None: + lines: list[str] = [ + f"# {requirement_path.stem} 关联需求与冲突检查", + "", + "## 目标需求", + f"- `{to_repo_relative(requirement_path)}`", + "", + "## 项目画像", + f"- `{to_repo_relative(PROJECT_PROFILE_FILE)}`", + "", + "## 关联技术方案", + ] + + if technical_solution_files: + for path in technical_solution_files: + lines.append(f"- `{to_repo_relative(path)}`") + else: + lines.append("- 未识别到同主题技术方案文档。") + + lines.extend([ + "", + "## 关联需求识别", + ]) + + if related_requirements: + lines.extend( + [ + "| 序号 | 关联需求 | 相似度 |", + "| :--- | :--- | :--- |", + ] + ) + for index, item in enumerate(related_requirements, start=1): + lines.append( + f"| {index} | `{to_repo_relative(item['path'])}` | {item['score']:.4f} |" + ) + else: + lines.append("- 未识别到相似度达到阈值的历史需求文档。") + + lines.extend(["", "## 潜在冲突与修改建议"]) + + if conflicts: + lines.extend( + [ + "| 序号 | 当前需求条目 | 历史需求条目 | 历史来源 | 冲突类型 | 修改建议 |", + "| :--- | :--- | :--- | :--- | :--- | :--- |", + ] + ) + for index, item in enumerate(conflicts, start=1): + lines.append( + "| " + + " | ".join( + [ + str(index), + escape_table_cell(item["target_rule"]), + escape_table_cell(item["history_rule"]), + f"`{to_repo_relative(item['history_path'])}`", + item["type"], + escape_table_cell(item["suggestion"]), + ] + ) + + " |" + ) + lines.extend( + [ + "", + "> ⚠️ 待确认:以上条目为机器识别候选冲突,请产品/业务确认最终规则口径,并回写需求文档。", + ] + ) + else: + lines.append("- 暂未识别到明显冲突条目。建议在需求评审时继续人工确认。") + + report_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + + +def write_manifest( + requirement_path: Path, + paths: dict[str, Path], + related_requirements: list[dict[str, Any]], + technical_solution_files: list[Path], + normalized_requirement_file: Path, + normalized_technical_solution_files: list[Path], + optional_terminology_files: list[dict[str, Any]], + conflict_count: int, + confirmation_gate: dict[str, Any], +) -> Path: + effective_terminology_files = [CORE_TERMINOLOGY_FILE] + [ + item["path"] for item in optional_terminology_files + ] + manifest = { + "requirement": str(requirement_path), + "requirement_source_file": str(requirement_path), + "requirement_input_type": requirement_path.suffix.lower().lstrip("."), + "base_name": requirement_path.stem, + "maintained_requirement_file": str(paths["maintained_requirement"]), + "normalized_requirement_file": str(normalized_requirement_file), + "technical_solution_files": [str(path) for path in technical_solution_files], + "normalized_technical_solution_files": [str(path) for path in normalized_technical_solution_files], + "analysis_file": str(paths["analysis"]), + "relation_report_file": str(paths["relation_report"]), + "test_points_file": str(paths["test_points"]), + "test_cases_file": str(paths["test_cases"]), + "excel_output_dir": str(paths["excel_dir"]), + "project_profile_file": str(PROJECT_PROFILE_FILE), + "knowledge_base_files": [str(file_path) for file_path in KNOWLEDGE_BASE_FILES], + "effective_terminology_files": [str(file_path) for file_path in effective_terminology_files], + "optional_terminology_files": [ + { + "name": item["name"], + "path": str(item["path"]), + "matched_keywords": item["matched_keywords"], + } + for item in optional_terminology_files + ], + "related_requirements": [ + {"path": str(item["path"]), "similarity": round(item["score"], 6)} + for item in related_requirements + ], + "conflict_candidates_count": conflict_count, + "confirmation_gate": confirmation_gate, + } + write_manifest_data(paths["manifest"], manifest) + return paths["manifest"] + + +def write_manifest_data(manifest_path: Path, manifest: dict[str, Any]) -> None: + manifest_path.write_text( + json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", + encoding="utf-8", + ) + + +def count_pending_confirmation_markers(paths: list[Path]) -> int: + count = 0 + for path in paths: + if not path.exists(): + continue + count += safe_read_text(path).count("> ⚠️ 待确认:") + return count + + +def list_decision_files(base_name: str) -> list[Path]: + if not DECISIONS_DIR.exists(): + return [] + + return sorted( + [ + item + for item in DECISIONS_DIR.glob(f"{base_name}*_确认结论.md") + if item.is_file() + ], + key=lambda item: (item.stat().st_mtime, item.name), + reverse=True, + ) + + +def extract_single_line_field(content: str, label: str) -> str: + pattern = re.compile(rf"^- {re.escape(label)}:\s*(.*)$", re.MULTILINE) + match = pattern.search(content) + if not match: + return "" + return match.group(1).strip() + + +def clean_field_value(value: str) -> str: + value = value.strip() + value = value.strip("`") + return value.strip() + + +def split_field_values(value: str) -> list[str]: + if not value: + return [] + normalized = ( + value.replace(";", "\n") + .replace(",", "\n") + .replace(",", "\n") + .replace("、", "\n") + ) + return [clean_field_value(item) for item in normalized.splitlines() if clean_field_value(item)] + + +def requirement_reference_aliases(requirement_path: Path) -> set[str]: + aliases = { + clean_field_value(str(requirement_path.resolve())).lower(), + clean_field_value(to_repo_relative(requirement_path)).lower(), + clean_field_value(requirement_path.name).lower(), + clean_field_value(requirement_path.stem).lower(), + normalize_topic_key(requirement_path.stem), + } + return {item for item in aliases if item} + + +def requirement_reference_matches(reference: str, requirement_path: Path) -> bool: + normalized_reference = clean_field_value(reference).lower() + if not normalized_reference: + return False + + stem = Path(normalized_reference).stem if "/" in normalized_reference or "." in normalized_reference else normalized_reference + aliases = requirement_reference_aliases(requirement_path) + return normalized_reference in aliases or normalize_topic_key(stem) in aliases + + +def resolve_requirement_reference(reference: str) -> Path: + value = clean_field_value(reference) + if not value: + raise ValueError("需求引用为空。") + + candidate_path = resolve_requirement_path(value) + if candidate_path.exists(): + validate_requirement_file(candidate_path) + return candidate_path + + matches = [ + path + for path in iter_requirement_documents() + if requirement_reference_matches(value, path) + ] + if not matches: + raise FileNotFoundError(f"未找到需求引用:{value}") + if len(matches) > 1: + options = "\n".join(f"- {to_repo_relative(path)}" for path in matches) + raise ValueError(f"需求引用存在歧义:{value}\n候选项:\n{options}") + return matches[0] + + +def parse_decision_file(decision_file: Path) -> dict[str, Any]: + content = safe_read_text(decision_file) + status_match = DECISION_FILE_RE.search(content) + raw_status = status_match.group(1) if status_match else "" + status_map = { + "已确认": "confirmed", + "待确认": "pending", + "已驳回": "rejected", + "已拒绝": "rejected", + } + export_match = DECISION_EXPORT_RE.search(content) + export_policy = export_match.group(1) if export_match else None + relation_match = DECISION_RELATION_TYPE_RE.search(content) + relation_type = relation_match.group(1) if relation_match else None + + return { + "file": decision_file, + "content": content, + "status": status_map.get(raw_status, "unknown"), + "raw_status": raw_status or None, + "allow_export_before_confirmation": export_policy == "允许" if export_policy else None, + "current_requirement_refs": split_field_values(extract_single_line_field(content, "当前需求")), + "related_requirement_refs": split_field_values(extract_single_line_field(content, "关联历史需求")), + "rerun_requirement_refs": split_field_values(extract_single_line_field(content, "需要重跑的需求列表")), + "relation_type": relation_type, + "rewrite_current": clean_field_value(extract_single_line_field(content, "是否需要回写当前需求")) == "是", + "rewrite_history": clean_field_value(extract_single_line_field(content, "是否需要回写历史需求")) == "是", + "effective_scope": clean_field_value(extract_single_line_field(content, "生效范围")), + "invalid_scope": clean_field_value(extract_single_line_field(content, "失效范围")), + "impact_modules": clean_field_value(extract_single_line_field(content, "影响模块")), + "impact_roles": clean_field_value(extract_single_line_field(content, "影响角色")), + "impact_data_scope": clean_field_value(extract_single_line_field(content, "影响接口或数据口径")), + "version_boundary": clean_field_value(extract_single_line_field(content, "需要补充的版本边界")), + "inheritance_note": clean_field_value(extract_single_line_field(content, "需要补充的替代/继承说明")), + "compatibility_strategy": clean_field_value(extract_single_line_field(content, "需要补充的兼容策略")), + "rerun_order": clean_field_value(extract_single_line_field(content, "重跑顺序建议")), + } + + +def inspect_decision_file(decision_file: Path) -> dict[str, Any]: + parsed = parse_decision_file(decision_file) + return { + "file": parsed["file"], + "status": parsed["status"], + "raw_status": parsed["raw_status"], + "allow_export_before_confirmation": parsed["allow_export_before_confirmation"], + } + + +def find_relevant_decision_files(requirement_path: Path) -> list[Path]: + explicit = list_decision_files(requirement_path.stem) + if not DECISIONS_DIR.exists(): + return explicit + + candidates: list[Path] = [] + seen: set[Path] = set() + for item in explicit + sorted(DECISIONS_DIR.glob("*确认结论.md"), key=lambda path: path.name): + if not item.is_file() or item in seen: + continue + seen.add(item) + parsed = parse_decision_file(item) + references = parsed["current_requirement_refs"] + parsed["related_requirement_refs"] + if item.stem.startswith(requirement_path.stem) or any( + requirement_reference_matches(reference, requirement_path) + for reference in references + ): + candidates.append(item) + + return sorted( + candidates, + key=lambda item: (item.stat().st_mtime, item.name), + reverse=True, + ) + + +def build_confirmation_gate( + requirement_path: Path, + base_name: str, + related_requirements: list[dict[str, Any]], + conflicts: list[dict[str, Any]], + normalized_requirement_file: Path, + normalized_technical_solution_files: list[Path], +) -> dict[str, Any]: + pending_markers_count = count_pending_confirmation_markers( + [normalized_requirement_file, *normalized_technical_solution_files] + ) + reasons: list[str] = [] + if related_requirements: + reasons.append( + f"识别到 {len(related_requirements)} 个历史相似需求,需确认与旧需求的关系类型、生效范围和是否需要回写历史需求。" + ) + if conflicts: + reasons.append( + f"识别到 {len(conflicts)} 个潜在冲突候选,需确认最终规则口径后再继续校验或导出。" + ) + if pending_markers_count: + reasons.append( + f"标准化输入中包含 {pending_markers_count} 处待确认项,需先补充或确认关键前提。" + ) + + decision_files = find_relevant_decision_files(requirement_path) + decision_info = inspect_decision_file(decision_files[0]) if decision_files else None + required = bool(reasons) + + if not required: + status = "not_required" + elif decision_info is None: + status = "missing" + else: + status = decision_info["status"] + + gate = { + "required": required, + "reasons": reasons, + "pending_markers_count": pending_markers_count, + "decision_file": str(decision_info["file"]) if decision_info else None, + "decision_status": status, + "decision_status_label": decision_info["raw_status"] if decision_info else None, + "allow_export_before_confirmation": ( + decision_info["allow_export_before_confirmation"] if decision_info else None + ), + "candidate_decision_files": [str(path) for path in decision_files], + "suggested_decision_file": str(DECISIONS_DIR / f"{base_name}_确认结论.md"), + } + return gate + + +def load_manifest_data(manifest_path: Path) -> dict[str, Any]: + if not manifest_path.exists(): + raise FileNotFoundError(f"缺少清单文件:{manifest_path}。请先执行 prepare。") + return json.loads(manifest_path.read_text(encoding="utf-8")) + + +def refresh_manifest_confirmation_gate(paths: dict[str, Path]) -> dict[str, Any]: + manifest = load_manifest_data(paths["manifest"]) + base_name = manifest.get("base_name", paths["test_cases"].stem.replace("_测试用例", "")) + requirement_path = Path(manifest.get("requirement_source_file", manifest.get("requirement", ""))) + related_requirements = manifest.get("related_requirements", []) + conflicts = [ + {"placeholder": True} + for _ in range(int(manifest.get("conflict_candidates_count", 0) or 0)) + ] + normalized_requirement_file = Path( + manifest.get("normalized_requirement_file", paths["normalized_input_dir"] / "requirement.md") + ) + normalized_technical_solution_files = [ + Path(item) for item in manifest.get("normalized_technical_solution_files", []) + ] + confirmation_gate = build_confirmation_gate( + requirement_path=requirement_path, + base_name=base_name, + related_requirements=related_requirements, + conflicts=conflicts, + normalized_requirement_file=normalized_requirement_file, + normalized_technical_solution_files=normalized_technical_solution_files, + ) + manifest["confirmation_gate"] = confirmation_gate + write_manifest_data(paths["manifest"], manifest) + return manifest + + +def ensure_confirmation_resolved(paths: dict[str, Path], command_name: str) -> dict[str, Any]: + manifest = refresh_manifest_confirmation_gate(paths) + gate = manifest.get("confirmation_gate", {}) + if not gate.get("required"): + return manifest + + if gate.get("decision_status") == "confirmed": + return manifest + + reasons = gate.get("reasons", []) + reason_block = "\n".join(f"- {item}" for item in reasons) if reasons else "- 待补充确认原因" + decision_file = gate.get("decision_file") or gate.get("suggested_decision_file") + raise ValueError( + f"{command_name} 已阻断:当前需求仍需人工确认。\n" + f"建议确认单:{decision_file}\n" + "阻断原因:\n" + f"{reason_block}\n" + "请在确认单中明确写出 `确认状态:已确认` 后再继续。" + ) + + +def build_maintenance_note_path(decision_file: Path) -> Path: + return DECISIONS_APPLIED_DIR / f"{decision_file.stem}_维护说明.md" + + +def render_maintenance_note( + decision: dict[str, Any], + current_requirement: Path, + related_requirements: list[Path], + rerun_targets: list[Path], +) -> str: + lines = [ + f"# {current_requirement.stem} 确认结论维护说明", + "", + f"- 来源确认单:`{to_repo_relative(Path(decision['file']))}`", + f"- 当前需求:`{to_repo_relative(current_requirement)}`", + f"- 关系类型:{decision.get('relation_type') or '未填写'}", + f"- 是否回写当前需求:{'是' if decision.get('rewrite_current') else '否'}", + f"- 是否回写历史需求:{'是' if decision.get('rewrite_history') else '否'}", + "", + "## 关联历史需求", + ] + if related_requirements: + for path in related_requirements: + lines.append(f"- `{to_repo_relative(path)}`") + else: + lines.append("- 未填写") + + lines.extend( + [ + "", + "## 生效边界", + f"- 生效范围:{decision.get('effective_scope') or '未填写'}", + f"- 失效范围:{decision.get('invalid_scope') or '未填写'}", + f"- 影响模块:{decision.get('impact_modules') or '未填写'}", + f"- 影响角色:{decision.get('impact_roles') or '未填写'}", + f"- 影响接口或数据口径:{decision.get('impact_data_scope') or '未填写'}", + "", + "## 维护说明", + f"- 版本边界补充:{decision.get('version_boundary') or '未填写'}", + f"- 替代/继承说明:{decision.get('inheritance_note') or '未填写'}", + f"- 兼容策略:{decision.get('compatibility_strategy') or '未填写'}", + "", + "## 重跑计划", + ] + ) + for path in rerun_targets: + lines.append(f"- `{to_repo_relative(path)}`") + if not rerun_targets: + lines.append("- 未填写") + if decision.get("rerun_order"): + lines.append(f"- 重跑顺序建议:{decision['rerun_order']}") + + return "\n".join(lines).rstrip() + "\n" + + +def extract_normalized_requirement_body(text: str) -> str: + lines = text.splitlines() + result: list[str] = [] + started = False + + for index, line in enumerate(lines): + if index == 0 and line.startswith("# "): + continue + if not started: + if line.startswith("> "): + continue + if not line.strip(): + continue + started = True + result.append(line) + + return "\n".join(result).strip() + + +def find_applied_maintenance_notes(requirement_path: Path) -> list[Path]: + if not DECISIONS_APPLIED_DIR.exists(): + return [] + + matches: list[Path] = [] + for item in sorted(DECISIONS_APPLIED_DIR.glob("*_维护说明.md")): + if not item.is_file(): + continue + content = safe_read_text(item) + references = [ + to_repo_relative(requirement_path), + str(requirement_path.resolve()), + requirement_path.name, + requirement_path.stem, + ] + if any(reference and reference in content for reference in references): + matches.append(item) + return sorted(matches, key=lambda item: (item.stat().st_mtime, item.name), reverse=True) + + +def render_maintained_requirement( + requirement_path: Path, + manifest: dict[str, Any], + normalized_requirement_file: Path, +) -> str: + maintained_requirement_path = Path( + manifest.get( + "maintained_requirement_file", + build_paths(manifest.get("base_name", requirement_path.stem))["maintained_requirement"], + ) + ) + normalized_text = safe_read_text(normalized_requirement_file) + body = extract_normalized_requirement_body(normalized_text) + maintenance_notes = find_applied_maintenance_notes(requirement_path) + technical_solutions = [Path(item) for item in manifest.get("technical_solution_files", [])] + + lines = [ + f"# {manifest.get('base_name', requirement_path.stem)}", + "", + "> 文档角色:正式维护版需求", + f"> 原始来源:`{to_repo_relative(requirement_path)}`", + f"> 标准化来源:`{to_repo_relative(normalized_requirement_file)}`", + f"> 输入类型:`{manifest.get('requirement_input_type', requirement_path.suffix.lstrip('.'))}`", + "", + "## 维护信息", + f"- 当前维护文件:`{to_repo_relative(maintained_requirement_path)}`", + ] + if maintenance_notes: + for index, note in enumerate(maintenance_notes, start=1): + label = "最近维护说明" if index == 1 else "历史维护说明" + lines.append(f"- {label}:`{to_repo_relative(note)}`") + else: + lines.append("- 最近维护说明:暂无") + + lines.extend(["", "## 技术方案来源"]) + if technical_solutions: + for path in technical_solutions: + lines.append(f"- `{to_repo_relative(path)}`") + else: + lines.append("- 未关联技术方案") + + lines.extend(["", "## 正式维护内容", ""]) + if body: + lines.append(body) + else: + lines.append("> ⚠️ 待确认:标准化需求正文为空,请先检查原始需求文档解析结果。") + + return "\n".join(lines).rstrip() + "\n" + + +def sync_maintained_requirement(requirement_path: Path) -> Path: + paths = build_paths(requirement_path.stem) + manifest = load_manifest_data(paths["manifest"]) + maintained_requirement_path = Path( + manifest.get("maintained_requirement_file", paths["maintained_requirement"]) + ) + maintained_requirement_path.parent.mkdir(parents=True, exist_ok=True) + normalized_requirement_file = Path(manifest["normalized_requirement_file"]) + content = render_maintained_requirement( + requirement_path=requirement_path, + manifest=manifest, + normalized_requirement_file=normalized_requirement_file, + ) + maintained_requirement_path.write_text(content, encoding="utf-8") + manifest["maintained_requirement_file"] = str(maintained_requirement_path) + write_manifest_data(paths["manifest"], manifest) + return maintained_requirement_path + + +def write_maintenance_note( + decision: dict[str, Any], + current_requirement: Path, + related_requirements: list[Path], + rerun_targets: list[Path], +) -> Path: + DECISIONS_APPLIED_DIR.mkdir(parents=True, exist_ok=True) + note_path = build_maintenance_note_path(Path(decision["file"])) + note_path.write_text( + render_maintenance_note( + decision=decision, + current_requirement=current_requirement, + related_requirements=related_requirements, + rerun_targets=rerun_targets, + ), + encoding="utf-8", + ) + return note_path + + +def build_rerun_targets(decision: dict[str, Any], requirement_path: Path) -> list[Path]: + targets: list[Path] = [requirement_path] + for reference in decision.get("rerun_requirement_refs", []): + resolved = resolve_requirement_reference(reference) + if resolved not in targets: + targets.append(resolved) + return targets + + +def run_pipeline_for_requirement(requirement_path: Path) -> None: + relative_requirement = to_repo_relative(requirement_path) + commands = [ + ["prepare", "--requirement", relative_requirement], + ["verify", "--requirement", relative_requirement], + ["export", "--requirement", relative_requirement], + ] + for command in commands: + subprocess.run( + [sys.executable, str(REPO_ROOT / "scripts" / "case_pipeline.py"), *command], + check=True, + ) + sync_maintained_requirement(requirement_path) + + +def collect_snapshot_sources( + paths: dict[str, Path], + excel_path: Path, + include_manifest: bool = True, +) -> list[tuple[Path, Path]]: + sources = [ + (paths["analysis"], Path(paths["analysis"].name)), + (paths["relation_report"], Path(paths["relation_report"].name)), + (paths["test_points"], Path(paths["test_points"].name)), + (paths["test_cases"], Path(paths["test_cases"].name)), + (excel_path, Path(excel_path.name)), + ] + if include_manifest: + sources.append((paths["manifest"], Path(paths["manifest"].name))) + + normalized_root = paths["normalized_input_dir"] + if normalized_root.exists(): + for item in sorted(normalized_root.rglob("*")): + if item.is_file(): + relative = item.relative_to(normalized_root) + sources.append((item, Path("normalized_inputs") / relative)) + + return sources + + +def find_latest_snapshot(version_root: Path) -> tuple[int, Path] | None: + if not version_root.exists(): + return None + + versions: list[tuple[int, Path]] = [] + for child in version_root.iterdir(): + if not child.is_dir(): + continue + match = VERSION_DIR_RE.match(child.name) + if not match: + continue + versions.append((int(match.group(1)), child)) + + if not versions: + return None + return max(versions, key=lambda item: item[0]) + + +def list_snapshot_versions(version_root: Path) -> list[tuple[int, Path]]: + if not version_root.exists(): + return [] + + versions: list[tuple[int, Path]] = [] + for child in version_root.iterdir(): + if not child.is_dir(): + continue + match = VERSION_DIR_RE.match(child.name) + if not match: + continue + versions.append((int(match.group(1)), child)) + + return sorted(versions, key=lambda item: item[0]) + + +def snapshot_matches(snapshot_dir: Path, sources: list[tuple[Path, Path]]) -> bool: + for source, relative in sources: + target = snapshot_dir / relative + if not target.exists() or not target.is_file(): + return False + if not files_match(source, target): + return False + return True + + +def files_match(source: Path, target: Path) -> bool: + if source.suffix.lower() == ".xlsx" and target.suffix.lower() == ".xlsx": + return excel_files_match(source, target) + return filecmp.cmp(source, target, shallow=False) + + +def excel_files_match(source: Path, target: Path) -> bool: + source_workbook = load_workbook(source, read_only=True, data_only=True) + target_workbook = load_workbook(target, read_only=True, data_only=True) + + try: + if source_workbook.sheetnames != target_workbook.sheetnames: + return False + + for sheet_name in source_workbook.sheetnames: + source_sheet = source_workbook[sheet_name] + target_sheet = target_workbook[sheet_name] + if source_sheet.max_row != target_sheet.max_row or source_sheet.max_column != target_sheet.max_column: + return False + + for source_row, target_row in zip( + source_sheet.iter_rows(values_only=True), + target_sheet.iter_rows(values_only=True), + ): + if tuple(source_row) != tuple(target_row): + return False + finally: + source_workbook.close() + target_workbook.close() + + return True + + +def is_legacy_excel_export(file_path: Path, case_stem: str) -> bool: + match = LEGACY_EXCEL_EXPORT_RE.match(file_path.name) + return bool(match and match.group("stem") == case_stem) + + +def find_legacy_excel_exports(paths: dict[str, Path]) -> list[Path]: + case_stem = paths["test_cases"].stem + excel_dir = paths["excel_dir"] + if not excel_dir.exists(): + return [] + + return sorted( + [ + item + for item in excel_dir.iterdir() + if item.is_file() and is_legacy_excel_export(item, case_stem) + ], + key=lambda item: item.name, + ) + + +def existing_snapshot_excel_files(version_root: Path) -> list[Path]: + if not version_root.exists(): + return [] + + files: list[Path] = [] + for child in sorted(version_root.iterdir()): + if not child.is_dir() or not VERSION_DIR_RE.match(child.name): + continue + for item in child.glob("*.xlsx"): + files.append(item) + return files + + +def extract_base_name_from_paths(paths: dict[str, Path]) -> str: + stem = paths["test_cases"].stem + if stem.endswith("_测试用例"): + return stem[: -len("_测试用例")] + return stem + + +def next_snapshot_version(version_root: Path) -> int: + latest = find_latest_snapshot(version_root) + if latest is None: + return 1 + return latest[0] + 1 + + +def find_matching_snapshot(version_root: Path, sources: list[tuple[Path, Path]]) -> tuple[int, Path] | None: + if not version_root.exists(): + return None + + versions: list[tuple[int, Path]] = [] + for child in version_root.iterdir(): + if not child.is_dir(): + continue + match = VERSION_DIR_RE.match(child.name) + if not match: + continue + versions.append((int(match.group(1)), child)) + + for version_number, snapshot_dir in sorted(versions, key=lambda item: item[0], reverse=True): + if snapshot_matches(snapshot_dir, sources): + return version_number, snapshot_dir + + return None + + +def decide_snapshot_version(paths: dict[str, Path], excel_path: Path) -> tuple[int, Path, bool]: + version_root = paths["version_root"] + sources = collect_snapshot_sources(paths, excel_path, include_manifest=False) + matched = find_matching_snapshot(version_root, sources) + if matched is not None: + return matched[0], matched[1], False + + version_root.mkdir(parents=True, exist_ok=True) + version_number = next_snapshot_version(version_root) + snapshot_dir = version_root / f"v{version_number}" + snapshot_dir.mkdir(parents=True, exist_ok=False) + + return version_number, snapshot_dir, True + + +def write_snapshot_files(paths: dict[str, Path], excel_path: Path, snapshot_dir: Path) -> None: + sources = collect_snapshot_sources(paths, excel_path, include_manifest=True) + for source, relative in sources: + target = snapshot_dir / relative + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(source, target) + + +def write_legacy_excel_snapshot(snapshot_dir: Path, base_name: str, legacy_file: Path) -> Path: + snapshot_dir.mkdir(parents=True, exist_ok=False) + target_excel = snapshot_dir / f"{base_name}_测试用例.xlsx" + shutil.copy2(legacy_file, target_excel) + note = "\n".join( + [ + f"# {base_name} 历史 Excel 导入说明", + "", + f"- 导入来源:`{legacy_file.name}`", + "- 导入类型:旧时间戳命名 Excel", + "- 说明:该快照仅迁移了历史 Excel,本次未重建当时对应的分析、测试点、测试用例 Markdown 与 manifest。", + "- 目的:统一历史文件归档路径,并清理 `output/excel_reports/` 中的旧时间戳文件。", + "", + ] + ) + (snapshot_dir / "snapshot_note.md").write_text(note, encoding="utf-8") + return target_excel + + +def infer_snapshot_type(snapshot_dir: Path) -> str: + if (snapshot_dir / "snapshot_note.md").exists(): + return "legacy_excel_import" + + has_manifest = any(item.name != "snapshot_meta.json" for item in snapshot_dir.glob("*.json")) + has_analysis = any(snapshot_dir.glob("*_分析.md")) + has_relation = any(snapshot_dir.glob("*_关联与冲突.md")) + has_test_points = any(snapshot_dir.glob("*_测试点.md")) + has_test_cases = any(snapshot_dir.glob("*_测试用例.md")) + has_excel = any(snapshot_dir.glob("*.xlsx")) + + if has_manifest and has_analysis and has_relation and has_test_points and has_test_cases and has_excel: + return "full_pipeline" + return "partial_snapshot" + + +def build_snapshot_summary(snapshot_dir: Path) -> list[str]: + summary: list[str] = [] + if any(item.name != "snapshot_meta.json" for item in snapshot_dir.glob("*.json")): + summary.append("manifest") + if any(snapshot_dir.glob("*_分析.md")): + summary.append("analysis") + if any(snapshot_dir.glob("*_关联与冲突.md")): + summary.append("relation_report") + if any(snapshot_dir.glob("*_测试点.md")): + summary.append("test_points") + if any(snapshot_dir.glob("*_测试用例.md")): + summary.append("test_cases_markdown") + if any(snapshot_dir.glob("*.xlsx")): + summary.append("excel") + if (snapshot_dir / "normalized_inputs").exists(): + summary.append("normalized_inputs") + if (snapshot_dir / "snapshot_note.md").exists(): + summary.append("migration_note") + return summary + + +def write_snapshot_metadata(snapshot_dir: Path, base_name: str) -> Path: + version_name = snapshot_dir.name + snapshot_type = infer_snapshot_type(snapshot_dir) + meta = { + "base_name": base_name, + "version": version_name, + "snapshot_type": snapshot_type, + "summary": build_snapshot_summary(snapshot_dir), + } + note_file = snapshot_dir / "snapshot_note.md" + if note_file.exists(): + meta["note_file"] = str(note_file) + + meta_path = snapshot_dir / "snapshot_meta.json" + meta_path.write_text(json.dumps(meta, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + return meta_path + + +def refresh_version_index(version_root: Path, base_name: str) -> Path: + version_root.mkdir(parents=True, exist_ok=True) + version_entries: list[tuple[int, Path, dict[str, Any]]] = [] + + for version_number, child in list_snapshot_versions(version_root): + meta_path = write_snapshot_metadata(child, base_name) + meta = json.loads(meta_path.read_text(encoding="utf-8")) + version_entries.append((version_number, child, meta)) + + lines = [ + f"# {base_name} 版本索引", + "", + "| 版本 | 类型 | 内容摘要 | 目录 |", + "| --- | --- | --- | --- |", + ] + + type_labels = { + "full_pipeline": "完整流水线快照", + "legacy_excel_import": "历史 Excel 导入", + "partial_snapshot": "部分产物快照", + } + + for version_number, snapshot_dir, meta in sorted(version_entries, key=lambda item: item[0]): + summary = "、".join(meta.get("summary", [])) or "-" + lines.append( + "| " + + " | ".join( + [ + f"v{version_number}", + type_labels.get(meta.get("snapshot_type", ""), meta.get("snapshot_type", "未知")), + summary, + f"`{to_repo_relative(snapshot_dir)}`", + ] + ) + + " |" + ) + + if len(lines) == 4: + lines.append("| - | - | - | - |") + + index_path = version_root / "VERSION_INDEX.md" + index_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + return index_path + + +def prune_old_snapshots(version_root: Path, keep: int = MAX_SNAPSHOT_VERSIONS) -> list[Path]: + versions = list_snapshot_versions(version_root) + if len(versions) <= keep: + return [] + + removable = versions[: len(versions) - keep] + removed_dirs: list[Path] = [] + for _, snapshot_dir in removable: + shutil.rmtree(snapshot_dir) + removed_dirs.append(snapshot_dir) + return removed_dirs + + +def migrate_legacy_excel_exports(paths: dict[str, Path]) -> dict[str, int]: + legacy_files = find_legacy_excel_exports(paths) + if not legacy_files: + return {"found": 0, "imported": 0, "deduplicated": 0, "removed": 0} + + version_root = paths["version_root"] + version_root.mkdir(parents=True, exist_ok=True) + snapshot_excels = existing_snapshot_excel_files(version_root) + imported = 0 + deduplicated = 0 + removed = 0 + + for legacy_file in legacy_files: + duplicated = any(files_match(legacy_file, snapshot_excel) for snapshot_excel in snapshot_excels) + if duplicated: + deduplicated += 1 + else: + version_number = next_snapshot_version(version_root) + snapshot_dir = version_root / f"v{version_number}" + target_excel = write_legacy_excel_snapshot(snapshot_dir, extract_base_name_from_paths(paths), legacy_file) + snapshot_excels.append(target_excel) + imported += 1 + + legacy_file.unlink() + removed += 1 + + return { + "found": len(legacy_files), + "imported": imported, + "deduplicated": deduplicated, + "removed": removed, + } + + +def update_manifest_version_info( + manifest_path: Path, + excel_path: Path, + version_number: int, + snapshot_dir: Path, +) -> None: + if not manifest_path.exists(): + return + + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + manifest["current_excel_file"] = str(excel_path) + manifest["versioning_scheme"] = { + "current_files": "固定文件名,始终表示当前最新版", + "snapshot_rule": "仅在 export 成功且产物内容发生变化时递增版本", + "snapshot_dir_pattern": "output/versions/{BASE_NAME}/vN/", + } + manifest["latest_snapshot_version"] = f"v{version_number}" + manifest["latest_snapshot_dir"] = str(snapshot_dir) + manifest["latest_snapshot_type"] = infer_snapshot_type(snapshot_dir) + write_manifest_data(manifest_path, manifest) + + +def print_legacy_migration_result(result: dict[str, int]) -> None: + if result["found"] == 0: + print("🧹 历史时间戳 Excel: 0") + return + + print( + "🧹 历史时间戳 Excel: " + f"发现 {result['found']} 个,导入版本 {result['imported']} 个," + f"重复去重 {result['deduplicated']} 个,清理原文件 {result['removed']} 个" + ) + + +def print_pruned_snapshots(removed_dirs: list[Path]) -> None: + if not removed_dirs: + print(f"🗃️ 版本保留上限: {MAX_SNAPSHOT_VERSIONS},本次无需淘汰旧版本") + return + + removed_names = ", ".join(snapshot_dir.name for snapshot_dir in removed_dirs) + print( + f"🗃️ 版本保留上限: {MAX_SNAPSHOT_VERSIONS}," + f"已淘汰旧版本 {len(removed_dirs)} 个: {removed_names}" + ) + + +def command_prepare(requirement: str) -> None: + requirement_path = resolve_requirement_path(requirement) + validate_requirement_file(requirement_path) + validate_knowledge_base() + validate_project_profile() + paths = build_paths(requirement_path.stem) + ensure_output_dirs(paths) + + technical_solution_files = select_technical_solution_files(requirement_path) + normalized_requirement_file = write_normalized_document( + source_path=requirement_path, + target_path=paths["normalized_input_dir"] / "requirement.md", + document_role="需求文档", + ) + normalized_technical_solution_files = [ + write_normalized_document( + source_path=path, + target_path=paths["normalized_input_dir"] / f"technical_solution_{index:02d}.md", + document_role="技术方案", + ) + for index, path in enumerate(technical_solution_files, start=1) + ] + related_requirements = find_related_requirements(requirement_path) + optional_terminology_files = select_optional_terminology_files( + requirement_path, + related_requirements, + technical_solution_files, + ) + conflicts = build_conflict_candidates(requirement_path, related_requirements) + confirmation_gate = build_confirmation_gate( + requirement_path=requirement_path, + base_name=requirement_path.stem, + related_requirements=related_requirements, + conflicts=conflicts, + normalized_requirement_file=normalized_requirement_file, + normalized_technical_solution_files=normalized_technical_solution_files, + ) + write_relation_report( + requirement_path=requirement_path, + related_requirements=related_requirements, + technical_solution_files=technical_solution_files, + conflicts=conflicts, + report_path=paths["relation_report"], + ) + manifest_path = write_manifest( + requirement_path=requirement_path, + paths=paths, + related_requirements=related_requirements, + technical_solution_files=technical_solution_files, + normalized_requirement_file=normalized_requirement_file, + normalized_technical_solution_files=normalized_technical_solution_files, + optional_terminology_files=optional_terminology_files, + conflict_count=len(conflicts), + confirmation_gate=confirmation_gate, + ) + + print(f"✅ 准备完成: {requirement_path}") + print(f"📦 清单文件: {manifest_path}") + print(f"📄 标准化需求输入: {normalized_requirement_file}") + print(f"🧩 关联技术方案数量: {len(technical_solution_files)}") + print(f"📝 分析输出: {paths['analysis']}") + print(f"🔎 关联与冲突输出: {paths['relation_report']}") + print(f"🧪 测试点输出: {paths['test_points']}") + print(f"📋 用例输出: {paths['test_cases']}") + print(f"📚 关联需求数量: {len(related_requirements)}") + print(f"📖 可选术语文件: {len(optional_terminology_files)}") + print(f"⚠️ 潜在冲突候选: {len(conflicts)}") + if confirmation_gate["required"]: + if confirmation_gate["decision_status"] == "confirmed": + print(f"✅ 人工确认: 已确认 -> {confirmation_gate['decision_file']}") + else: + print("🛑 人工确认: 必需") + print(f"📝 确认单建议路径: {confirmation_gate['suggested_decision_file']}") + else: + print("🟢 人工确认: 当前无需额外确认") + + +def verify_case_columns(case_file: Path) -> list[list[str]]: + headers, rows = load_markdown_table(case_file) + if headers not in (REQUIRED_COLUMNS, LEGACY_COLUMNS): + raise ValueError( + "测试用例表头不符合标准。\n" + f"期望: {REQUIRED_COLUMNS} 或 {LEGACY_COLUMNS}\n" + f"实际: {headers}" + ) + if headers == REQUIRED_COLUMNS: + type_index = headers.index("类型") + invalid_types = sorted({row[type_index] for row in rows if row[type_index] and row[type_index] not in TYPE_ENUMS}) + if invalid_types: + raise ValueError(f"测试用例存在非法类型枚举:{', '.join(invalid_types)}。") + return rows + + +def command_verify(requirement: str) -> None: + requirement_path = resolve_requirement_path(requirement) + validate_requirement_file(requirement_path) + paths = build_paths(requirement_path.stem) + + for name in ("analysis", "relation_report", "test_points", "test_cases"): + target = paths[name] + if not target.exists(): + raise FileNotFoundError(f"缺少输出文件:{target}") + if target.stat().st_size == 0: + raise ValueError(f"输出文件为空:{target}") + + manifest = ensure_confirmation_resolved(paths, "verify") + rows = verify_case_columns(paths["test_cases"]) + print(f"✅ 校验通过: {requirement_path.name}") + print(f"📄 分析文件: {paths['analysis']}") + print(f"🔎 关联与冲突文件: {paths['relation_report']}") + print(f"🧪 测试点文件: {paths['test_points']}") + print(f"📋 测试用例文件: {paths['test_cases']}") + print(f"📊 用例数量: {len(rows)}") + gate = manifest.get("confirmation_gate", {}) + if gate.get("required"): + print(f"📝 确认单: {gate.get('decision_file')}") + + +def command_export(requirement: str) -> None: + requirement_path = resolve_requirement_path(requirement) + validate_requirement_file(requirement_path) + paths = build_paths(requirement_path.stem) + if not paths["test_cases"].exists(): + raise FileNotFoundError(f"测试用例文件不存在:{paths['test_cases']}") + + ensure_confirmation_resolved(paths, "export") + verify_case_columns(paths["test_cases"]) + output_path = export_markdown_to_excel(paths["test_cases"], paths["excel_dir"]) + legacy_result = migrate_legacy_excel_exports(paths) + version_number, snapshot_dir, created = decide_snapshot_version(paths, output_path) + if created: + write_snapshot_files(paths, output_path, snapshot_dir) + pruned_dirs = prune_old_snapshots(paths["version_root"]) + index_path = refresh_version_index(paths["version_root"], extract_base_name_from_paths(paths)) + latest = find_latest_snapshot(paths["version_root"]) + if latest is None: + raise FileNotFoundError(f"版本目录为空:{paths['version_root']}") + version_number, snapshot_dir = latest + update_manifest_version_info(paths["manifest"], output_path, version_number, snapshot_dir) + maintained_requirement_path = sync_maintained_requirement(requirement_path) + + print(f"✅ Excel 已生成: {output_path}") + print(f"🧾 正式维护版: {maintained_requirement_path}") + if created: + print(f"📦 版本快照: v{version_number} -> {snapshot_dir}") + else: + print(f"♻️ 版本未变: v{version_number} -> {snapshot_dir}") + print_legacy_migration_result(legacy_result) + print_pruned_snapshots(pruned_dirs) + print(f"🗂️ 版本索引: {index_path}") + + +def command_sync_maintained(requirement: str) -> None: + requirement_path = resolve_requirement_path(requirement) + validate_requirement_file(requirement_path) + paths = build_paths(requirement_path.stem) + if not paths["manifest"].exists(): + raise FileNotFoundError(f"缺少清单文件:{paths['manifest']}。请先执行 prepare。") + + maintained_requirement_path = sync_maintained_requirement(requirement_path) + print(f"✅ 正式维护版已同步: {maintained_requirement_path}") + print(f"📄 原始来源: {requirement_path}") + print(f"🧾 manifest: {paths['manifest']}") + + +def command_apply_confirmation(requirement: str, dry_run: bool) -> None: + requirement_path = resolve_requirement_path(requirement) + validate_requirement_file(requirement_path) + paths = build_paths(requirement_path.stem) + manifest = refresh_manifest_confirmation_gate(paths) + gate = manifest.get("confirmation_gate", {}) + decision_file = gate.get("decision_file") + if not decision_file: + fallback_files = find_relevant_decision_files(requirement_path) + if fallback_files: + decision_file = str(fallback_files[0]) + if not decision_file: + raise FileNotFoundError("未找到可用确认单。") + + decision = parse_decision_file(Path(decision_file)) + if decision["status"] != "confirmed": + raise ValueError(f"确认单未处于已确认状态:{decision_file}") + + related_requirements = [ + resolve_requirement_reference(reference) + for reference in decision.get("related_requirement_refs", []) + ] + rerun_targets = build_rerun_targets(decision, requirement_path) + note_path = build_maintenance_note_path(Path(decision["file"])) + + print(f"✅ 确认单已读取: {decision_file}") + print(f"🧭 关系类型: {decision.get('relation_type') or '未填写'}") + print(f"📝 维护说明路径: {note_path}") + print(f"🔁 重跑需求数量: {len(rerun_targets)}") + for target in rerun_targets: + print(f" - {to_repo_relative(target)}") + + if dry_run: + print("🧪 dry-run: 未写入维护说明,未执行重跑。") + return + + note_path = write_maintenance_note( + decision=decision, + current_requirement=requirement_path, + related_requirements=related_requirements, + rerun_targets=rerun_targets, + ) + for target in rerun_targets: + run_pipeline_for_requirement(target) + + print(f"📌 维护说明已写入: {note_path}") + print("🚀 确认后续跑已完成") + + +def command_migrate_history(requirement: str | None, all_requirements: bool) -> None: + if not requirement and not all_requirements: + raise ValueError("请指定 --requirement,或使用 --all 扫描全部历史 Excel。") + + base_names: list[str] = [] + if all_requirements: + for excel_file in sorted((REPO_ROOT / "output" / "excel_reports").glob("*.xlsx")): + if LEGACY_EXCEL_EXPORT_RE.match(excel_file.name): + stem = excel_file.stem + base_name = re.sub(r"_\d{8}_\d{6}$", "", stem) + if base_name.endswith("_测试用例"): + base_name = base_name[: -len("_测试用例")] + if base_name not in base_names: + base_names.append(base_name) + else: + requirement_path = resolve_requirement_path(requirement or "") + validate_requirement_file(requirement_path) + base_names.append(requirement_path.stem) + + total_found = 0 + total_imported = 0 + total_deduplicated = 0 + total_removed = 0 + + for base_name in base_names: + paths = build_paths(base_name) + result = migrate_legacy_excel_exports(paths) + pruned_dirs = prune_old_snapshots(paths["version_root"]) + index_path = refresh_version_index(paths["version_root"], extract_base_name_from_paths(paths)) + total_found += result["found"] + total_imported += result["imported"] + total_deduplicated += result["deduplicated"] + total_removed += result["removed"] + print(f"📁 {base_name}") + print_legacy_migration_result(result) + print_pruned_snapshots(pruned_dirs) + print(f"🗂️ 版本索引: {index_path}") + + print( + "✅ 历史 Excel 迁移完成: " + f"发现 {total_found} 个,导入版本 {total_imported} 个," + f"重复去重 {total_deduplicated} 个,清理原文件 {total_removed} 个" + ) + + +def main() -> None: + parser = argparse.ArgumentParser(description="测试用例生成流水线辅助脚本。") + subparsers = parser.add_subparsers(dest="command", required=True) + + prepare_parser = subparsers.add_parser("prepare", help="校验输入并生成本次任务清单。") + prepare_parser.add_argument("--requirement", required=True, help="需求文档路径。") + + verify_parser = subparsers.add_parser("verify", help="校验本次任务产物。") + verify_parser.add_argument("--requirement", required=True, help="需求文档路径。") + + export_parser = subparsers.add_parser("export", help="导出本次任务的 Excel。") + export_parser.add_argument("--requirement", required=True, help="需求文档路径。") + + apply_confirmation_parser = subparsers.add_parser( + "apply-confirmation", + help="读取已确认的确认单,写出维护说明并重跑受影响需求。", + ) + apply_confirmation_parser.add_argument("--requirement", required=True, help="需求文档路径。") + apply_confirmation_parser.add_argument("--dry-run", action="store_true", help="仅校验确认单和重跑目标,不执行写入或重跑。") + + sync_maintained_parser = subparsers.add_parser( + "sync-maintained", + help="同步 requirements/ 下的正式维护版 Markdown。", + ) + sync_maintained_parser.add_argument("--requirement", required=True, help="需求文档路径。") + + migrate_parser = subparsers.add_parser("migrate-history", help="迁移旧时间戳 Excel 到版本目录。") + migrate_parser.add_argument("--requirement", help="按需求文档迁移对应 BASE_NAME 的历史 Excel。") + migrate_parser.add_argument("--all", action="store_true", help="扫描并迁移全部历史时间戳 Excel。") + + args = parser.parse_args() + + if args.command == "prepare": + command_prepare(args.requirement) + elif args.command == "verify": + command_verify(args.requirement) + elif args.command == "export": + command_export(args.requirement) + elif args.command == "sync-maintained": + command_sync_maintained(args.requirement) + elif args.command == "apply-confirmation": + command_apply_confirmation(args.requirement, args.dry_run) + elif args.command == "migrate-history": + command_migrate_history(args.requirement, args.all) + + +if __name__ == "__main__": + main() diff --git a/scripts/export_excel.py b/scripts/export_excel.py new file mode 100644 index 0000000..a641804 --- /dev/null +++ b/scripts/export_excel.py @@ -0,0 +1,359 @@ +import argparse +from datetime import datetime +from pathlib import Path +import re + +from openpyxl import Workbook +from openpyxl.styles import Alignment, Font + + +REPO_ROOT = Path(__file__).resolve().parent.parent +DEFAULT_INPUT_DIR = REPO_ROOT / "output" / "test_cases" +DEFAULT_OUTPUT_DIR = REPO_ROOT / "output" / "excel_reports" +REQUIRED_COLUMNS = [ + "用例编号", + "模块", + "用例标题", + "优先级", + "类型", + "前置条件", + "测试步骤", + "测试数据", + "预期结果", + "备注", +] +LEGACY_COLUMNS = [ + "用例编号", + "模块", + "用例标题", + "优先级", + "前置条件", + "测试步骤", + "测试数据", + "预期结果", + "备注", +] +SUPPORTED_COLUMN_SETS = [REQUIRED_COLUMNS, LEGACY_COLUMNS] +YUNXIAO_HEADERS = [ + "标题", + "编号", + "目录", + "创建时间", + "前置条件", + "步骤描述", + "预期结果", + "优先级", + "类型", + "URL", +] +TYPE_ENUMS = [ + "功能测试", + "性能测试", + "兼容性测试", + "易用性测试", + "安全性测试", + "冒烟测试", + "回归测试", + "其他", +] +SEPARATOR_RE = re.compile(r"^\|\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?$") +MODULE_PATH_SEPARATOR_RE = re.compile(r"\s*[--—–]\s*") +BR_TAG_RE = re.compile(r"", re.IGNORECASE) + + +def headers_supported(headers: list[str]) -> bool: + return headers in SUPPORTED_COLUMN_SETS + + +def find_latest_markdown_file(directory: Path) -> Path | None: + files = sorted(directory.glob("*.md"), key=lambda item: item.stat().st_mtime) + return files[-1] if files else None + + +def split_markdown_row(line: str) -> list[str]: + stripped = line.strip() + if stripped.startswith("|"): + stripped = stripped[1:] + if stripped.endswith("|"): + stripped = stripped[:-1] + + cells: list[str] = [] + current: list[str] = [] + escaped = False + + for char in stripped: + if escaped: + current.append(char) + escaped = False + continue + if char == "\\": + escaped = True + continue + if char == "|": + cells.append("".join(current).strip()) + current = [] + continue + current.append(char) + + if escaped: + current.append("\\") + + cells.append("".join(current).strip()) + return cells + + +def normalize_module_path(value: str) -> str: + stripped = value.strip() + if not stripped: + return stripped + + if "|" in stripped: + parts = [part.strip() for part in stripped.split("|") if part.strip()] + return "|".join(parts) + + if MODULE_PATH_SEPARATOR_RE.search(stripped): + parts = [part.strip() for part in MODULE_PATH_SEPARATOR_RE.split(stripped) if part.strip()] + if len(parts) > 1: + return "|".join(parts) + + return stripped + + +def load_markdown_table(source_file: Path) -> tuple[list[str], list[list[str]]]: + content = source_file.read_text(encoding="utf-8") + table_lines: list[str] = [] + + for line in content.splitlines(): + if line.strip().startswith("|"): + table_lines.append(line.rstrip()) + elif table_lines: + break + + if len(table_lines) < 3: + raise ValueError(f"未在 {source_file} 中找到有效的 Markdown 表格。") + + headers = split_markdown_row(table_lines[0]) + if not SEPARATOR_RE.match(table_lines[1].strip()): + raise ValueError(f"{source_file} 的第二行不是合法的 Markdown 表头分隔线。") + + module_index = headers.index("模块") if "模块" in headers else None + + rows: list[list[str]] = [] + for line in table_lines[2:]: + row = split_markdown_row(line) + if len(row) != len(headers): + raise ValueError( + f"{source_file} 中存在列数不一致的行,表头 {len(headers)} 列,实际 {len(row)} 列。" + ) + if module_index is not None: + row[module_index] = normalize_module_path(row[module_index]) + rows.append(row) + + if not rows: + raise ValueError(f"{source_file} 的 Markdown 表格没有数据行。") + + return headers, rows + + +def infer_case_type(case: dict[str, str]) -> str: + explicit = case.get("类型", "").strip() + if explicit in TYPE_ENUMS: + return explicit + + combined = " ".join( + [ + case.get("用例标题", ""), + case.get("模块", ""), + case.get("备注", ""), + case.get("测试步骤", ""), + case.get("预期结果", ""), + ] + ) + + if re.search(r"性能|RT|响应时间|P95|吞吐|压测|并发量", combined, re.IGNORECASE): + return "性能测试" + if re.search(r"越权|鉴权|权限|抓包|篡改|注入|XSS|CSRF|SQL", combined, re.IGNORECASE): + return "安全性测试" + if re.search(r"兼容|浏览器|小程序|H5|多端", combined, re.IGNORECASE): + return "兼容性测试" + if re.search(r"易用|交互|文案|可读|展示", combined, re.IGNORECASE): + return "易用性测试" + if re.search(r"冒烟|主流程", combined, re.IGNORECASE): + return "冒烟测试" + if re.search(r"历史缺陷|回归|AI修正", combined, re.IGNORECASE): + return "回归测试" + return "功能测试" + + +def normalize_multiline_text(value: str) -> str: + text = BR_TAG_RE.sub("\n", value or "") + return text.replace("\\n", "\n").strip() + + +def normalize_topic_name(text: str) -> str: + normalized = text.strip() + changed = True + while changed: + changed = False + for token in ("测试用例", "需求", "分析"): + if normalized.endswith(token): + normalized = normalized[: -len(token)].strip() + changed = True + normalized = re.sub(r"[_\-\s|]+$", "", normalized) + return normalized or text.strip() + + +def build_directory_name(source_path: Path, module_value: str) -> str: + topic = normalize_topic_name(source_path.stem) + module = normalize_module_path(module_value) + if not module: + return topic + if module.startswith(topic): + return module + return f"{topic}|{module}" + + +def normalize_case_rows(headers: list[str], rows: list[list[str]]) -> list[dict[str, str]]: + cases: list[dict[str, str]] = [] + for row in rows: + current = {header: (row[index] or "").strip() for index, header in enumerate(headers)} + if "类型" not in current: + current["类型"] = infer_case_type(current) + elif current["类型"] not in TYPE_ENUMS: + current["类型"] = infer_case_type(current) + cases.append(current) + return cases + + +def build_yunxiao_rows(source_path: Path, headers: list[str], rows: list[list[str]]) -> list[list[object]]: + created_time = datetime.fromtimestamp(source_path.stat().st_mtime).replace(microsecond=0) + cases = normalize_case_rows(headers, rows) + output_rows: list[list[object]] = [] + + for case in cases: + steps_text = normalize_multiline_text(case.get("测试步骤", "")) + data_text = normalize_multiline_text(case.get("测试数据", "")) + if data_text: + steps_text = f"{steps_text}\n[测试数据]\n{data_text}" if steps_text else f"[测试数据]\n{data_text}" + + output_rows.append( + [ + case.get("用例标题", ""), + case.get("用例编号", ""), + build_directory_name(source_path, case.get("模块", "")), + created_time, + normalize_multiline_text(case.get("前置条件", "")), + steps_text, + normalize_multiline_text(case.get("预期结果", "")), + case.get("优先级", ""), + infer_case_type(case), + "", + ] + ) + + return output_rows + + +def resolve_source_file(source_file: str | None, base_name: str | None, input_dir: Path) -> Path: + if source_file: + path = Path(source_file) + return path if path.is_absolute() else REPO_ROOT / path + + if base_name: + return input_dir / f"{base_name}_测试用例.md" + + latest = find_latest_markdown_file(input_dir) + if latest is None: + raise FileNotFoundError(f"在 {input_dir} 下没有找到任何 Markdown 测试用例文件。") + return latest + + +def build_current_excel_path(source_path: Path, output_dir: Path) -> Path: + return output_dir / f"{source_path.stem}.xlsx" + + +def export_markdown_to_excel( + source_path: Path, + output_dir: Path, + output_path: Path | None = None, +) -> Path: + headers, rows = load_markdown_table(source_path) + if not headers_supported(headers): + raise ValueError( + "测试用例表头不符合支持格式。\n" + f"支持: {REQUIRED_COLUMNS} 或 {LEGACY_COLUMNS}\n" + f"实际: {headers}" + ) + output_dir.mkdir(parents=True, exist_ok=True) + if output_path is None: + output_path = build_current_excel_path(source_path, output_dir) + + workbook = Workbook() + worksheet = workbook.active + worksheet.title = "testcase items" + + worksheet.append(YUNXIAO_HEADERS) + for row in build_yunxiao_rows(source_path, headers, rows): + worksheet.append(row) + + header_font = Font(bold=True) + wrap_alignment = Alignment(vertical="top", wrap_text=True) + + for cell in worksheet[1]: + cell.font = header_font + cell.alignment = wrap_alignment + + for row in worksheet.iter_rows(min_row=2): + for cell in row: + cell.alignment = wrap_alignment + + worksheet.freeze_panes = "A2" + worksheet.auto_filter.ref = f"A1:J{worksheet.max_row}" + + for column_cells in worksheet.columns: + max_length = max(len(str(cell.value or "")) for cell in column_cells) + adjusted_width = min(max_length + 4, 60) + worksheet.column_dimensions[column_cells[0].column_letter].width = adjusted_width + + workbook.save(output_path) + return output_path + + +def main() -> None: + parser = argparse.ArgumentParser(description="将 Markdown 测试用例表格导出为 Excel。") + parser.add_argument("--source-file", help="指定测试用例 Markdown 文件路径。") + parser.add_argument("--base-name", help="按 BASE_NAME 查找 output/test_cases/{BASE_NAME}_测试用例.md。") + parser.add_argument( + "--input-dir", + default=str(DEFAULT_INPUT_DIR), + help="测试用例 Markdown 所在目录,默认 output/test_cases。", + ) + parser.add_argument( + "--output-dir", + default=str(DEFAULT_OUTPUT_DIR), + help="Excel 输出目录,默认 output/excel_reports。", + ) + args = parser.parse_args() + + input_dir = Path(args.input_dir) + if not input_dir.is_absolute(): + input_dir = REPO_ROOT / input_dir + + output_dir = Path(args.output_dir) + if not output_dir.is_absolute(): + output_dir = REPO_ROOT / output_dir + + source_path = resolve_source_file(args.source_file, args.base_name, input_dir) + if not source_path.exists(): + raise FileNotFoundError(f"测试用例文件不存在:{source_path}") + + output_path = export_markdown_to_excel(source_path, output_dir) + headers, rows = load_markdown_table(source_path) + print(f"📄 来源文件: {source_path}") + print(f"🧩 Markdown 表头字段: {', '.join(headers)}") + print(f"📊 用例数量: {len(rows)}") + print(f"✅ Excel 已生成: {output_path}") + + +if __name__ == "__main__": + main() diff --git a/scripts/fleet_agents.py b/scripts/fleet_agents.py new file mode 100644 index 0000000..9aba9c1 --- /dev/null +++ b/scripts/fleet_agents.py @@ -0,0 +1,212 @@ +""" +Agentic QE Fleet — Agent 加载和上下文注入模块 + +负责: +1. 加载 Agent prompt 文件 +2. 注入战区上下文(前序 manifest 数据) +3. 渲染最终可执行的 Agent prompt +""" + +from __future__ import annotations + +import re +from pathlib import Path +from typing import Any + +REPO_ROOT = Path(__file__).resolve().parent.parent +AGENTS_DIR = REPO_ROOT / "agents" + +# Agent 注册表: agent_id → (战区, 文件路径, 描述) +AGENT_REGISTRY: dict[str, dict[str, Any]] = { + # ── Prepare ── + "document-parser": { + "zone": "prepare", + "path": "prepare/document_parser.md", + "name": "文档解析专家", + "description": "解析原始需求文档为标准 Markdown,自动识别技术方案", + }, + "knowledge-activator": { + "zone": "prepare", + "path": "prepare/knowledge_activator.md", + "name": "知识激活专家", + "description": "按需求内容自动激活术语/规则/历史缺陷/最佳实践", + }, + # ── Analyze ── + "requirement-analyzer": { + "zone": "analyze", + "path": "analyze/requirement_analyzer.md", + "name": "需求分析专家", + "description": "结构化需求模型 + 歧义标注", + }, + "conflict-detector": { + "zone": "analyze", + "path": "analyze/conflict_detector.md", + "name": "冲突检测专家", + "description": "语义级历史需求规则冲突检测", + }, + "risk-assessor": { + "zone": "analyze", + "path": "analyze/risk_assessor.md", + "name": "风险评估专家", + "description": "多维度风险矩阵量化", + }, + # ── Design ── + "test-strategist": { + "zone": "design", + "path": "design/test_strategist.md", + "name": "测试策略师", + "description": "分层测试策略 + 优先级矩阵", + }, + "testpoint-designer": { + "zone": "design", + "path": "design/testpoint_designer.md", + "name": "测试点设计师", + "description": "全面测试点矩阵 + 来源标注", + }, + "case-designer": { + "zone": "design", + "path": "design/case_designer.md", + "name": "用例设计师", + "description": "可执行测试用例 + 双验证预期结果", + }, + "data-builder": { + "zone": "design", + "path": "design/data_builder.md", + "name": "数据构造师", + "description": "精确测试数据集构造", + }, + # ── Review ── + "case-reviewer": { + "zone": "review", + "path": "review/case_reviewer.md", + "name": "用例评审师", + "description": "用例质量/规范性/可执行性逐项评审", + }, + "coverage-auditor": { + "zone": "review", + "path": "review/coverage_auditor.md", + "name": "覆盖率审计师", + "description": "需求→测试点→用例三级追溯覆盖审计", + }, + "quality-gatekeeper": { + "zone": "review", + "path": "review/quality_gatekeeper.md", + "name": "质量门禁裁决官", + "description": "三级裁决: PASS / PASS_WITH_FIX / BLOCKED", + }, + # ── Monitor ── + "execution-analyst": { + "zone": "monitor", + "path": "monitor/execution_analyst.md", + "name": "执行结果分析师", + "description": "失败归类 + 模式识别 + 根因推测", + }, + "knowledge-curator": { + "zone": "monitor", + "path": "monitor/knowledge_curator.md", + "name": "知识沉淀师", + "description": "自动回写知识库 + 去重保护", + }, +} + + +def get_agent_path(agent_id: str) -> Path: + """返回 Agent prompt 文件的绝对路径。""" + if agent_id not in AGENT_REGISTRY: + raise ValueError(f"未知 Agent: {agent_id},可用: {list(AGENT_REGISTRY)}") + return AGENTS_DIR / AGENT_REGISTRY[agent_id]["path"] + + +def load_agent_prompt(agent_id: str) -> str: + """加载 Agent prompt 原始内容。""" + path = get_agent_path(agent_id) + if not path.exists(): + raise FileNotFoundError(f"Agent prompt 不存在: {path}") + return path.read_text(encoding="utf-8") + + +def list_zone_agents(zone: str) -> list[str]: + """列出指定战区的所有 Agent ID。""" + return sorted([ + agent_id for agent_id, info in AGENT_REGISTRY.items() + if info["zone"] == zone + ]) + + +def list_all_agents() -> dict[str, list[str]]: + """按战区分组列出所有 Agent。""" + result: dict[str, list[str]] = {} + for zone in ["prepare", "analyze", "design", "review", "monitor"]: + result[zone] = list_zone_agents(zone) + return result + + +def inject_context(prompt: str, context: dict[str, Any]) -> str: + """向 prompt 注入运行时上下文变量。 + + 支持的占位符: + {{BASE_NAME}} → 需求基础名 + {{MANIFEST_DIR}} → manifest 目录 + {{PREPARE_MANIFEST}} → prepare manifest 路径 + {{ANALYZE_MANIFEST}} → analyze manifest 路径 + {{DESIGN_MANIFEST}} → design manifest 路径 + {{PROJECT_PROFILE}} → 项目画像路径 + {{FLEET_CONFIG}} → fleet_config.yml 路径 + """ + replacements = { + "{{BASE_NAME}}": context.get("base_name", ""), + "{{MANIFEST_DIR}}": str(REPO_ROOT / "output" / "manifests"), + "{{PREPARE_MANIFEST}}": str(REPO_ROOT / "output" / "manifests" / f"{context.get('base_name', '')}_prepare.json"), + "{{ANALYZE_MANIFEST}}": str(REPO_ROOT / "output" / "manifests" / f"{context.get('base_name', '')}_analyze.json"), + "{{DESIGN_MANIFEST}}": str(REPO_ROOT / "output" / "manifests" / f"{context.get('base_name', '')}_design.json"), + "{{PROJECT_PROFILE}}": str(REPO_ROOT / "knowledge_base" / "00_project" / "project_profile.md"), + "{{FLEET_CONFIG}}": str(REPO_ROOT / "fleet_config.yml"), + "{{OUTPUT_DIR}}": str(REPO_ROOT / "output"), + "{{KNOWLEDGE_BASE_DIR}}": str(REPO_ROOT / "knowledge_base"), + "{{REQUIREMENT_FILE}}": context.get("requirement_file", ""), + } + result = prompt + for placeholder, value in replacements.items(): + result = result.replace(placeholder, value) + return result + + +def render_agent_prompt(agent_id: str, context: dict[str, Any]) -> str: + """加载并渲染 Agent prompt(注入上下文)。""" + raw = load_agent_prompt(agent_id) + return inject_context(raw, context) + + +def get_agent_frontmatter(agent_id: str) -> dict[str, Any]: + """提取 Agent prompt 的 YAML frontmatter。""" + content = load_agent_prompt(agent_id) + frontmatter: dict[str, Any] = {} + if content.startswith("---"): + parts = content.split("---", 2) + if len(parts) >= 3: + for line in parts[1].strip().split("\n"): + line = line.strip() + if ":" in line: + key, value = line.split(":", 1) + frontmatter[key.strip()] = value.strip() + return frontmatter + + +def get_agent_short_description(agent_id: str) -> str: + """返回 Agent 的一句话描述。""" + info = AGENT_REGISTRY.get(agent_id, {}) + return info.get("description", agent_id) + + +def validate_all_agents() -> dict[str, Any]: + """验证所有 Agent prompt 文件是否存在且非空。""" + result: dict[str, Any] = {"valid": True, "missing": [], "empty": [], "total": len(AGENT_REGISTRY)} + for agent_id in AGENT_REGISTRY: + path = get_agent_path(agent_id) + if not path.exists(): + result["missing"].append(agent_id) + result["valid"] = False + elif path.stat().st_size == 0: + result["empty"].append(agent_id) + result["valid"] = False + return result diff --git a/scripts/fleet_manifest.py b/scripts/fleet_manifest.py new file mode 100644 index 0000000..18718df --- /dev/null +++ b/scripts/fleet_manifest.py @@ -0,0 +1,180 @@ +""" +Agentic QE Fleet — Manifest 管理模块 + +负责跨战区 manifest JSON 的读写、合并、验证和迁移。 +每个战区产出一个 manifest_.json,fleet_runner.py 消费。 +""" + +from __future__ import annotations + +import json +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +REPO_ROOT = Path(__file__).resolve().parent.parent +MANIFESTS_DIR = REPO_ROOT / "output" / "manifests" + +# 战区顺序 +ZONE_ORDER = ["prepare", "analyze", "design", "review", "monitor"] + + +def ensure_manifests_dir() -> Path: + MANIFESTS_DIR.mkdir(parents=True, exist_ok=True) + return MANIFESTS_DIR + + +def manifest_path(base_name: str, zone: str) -> Path: + """返回战区 manifest 文件路径。""" + return MANIFESTS_DIR / f"{base_name}_{zone}.json" + + +def load_manifest(base_name: str, zone: str) -> dict[str, Any]: + """加载指定战区的 manifest。""" + path = manifest_path(base_name, zone) + if not path.exists(): + raise FileNotFoundError(f"Manifest 不存在: {path}") + return json.loads(path.read_text(encoding="utf-8")) + + +def load_manifest_safe(base_name: str, zone: str) -> dict[str, Any] | None: + """安全加载 manifest,不存在时返回 None。""" + path = manifest_path(base_name, zone) + if not path.exists(): + return None + return json.loads(path.read_text(encoding="utf-8")) + + +def save_manifest(base_name: str, zone: str, data: dict[str, Any]) -> Path: + """保存战区 manifest。""" + ensure_manifests_dir() + path = manifest_path(base_name, zone) + data.setdefault("_meta", {}) + data["_meta"]["zone"] = zone + data["_meta"]["base_name"] = base_name + data["_meta"]["updated_at"] = datetime.now(timezone.utc).isoformat() + path.write_text(json.dumps(data, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + return path + + +def build_merged_manifest(base_name: str, zones: list[str] | None = None) -> dict[str, Any]: + """合并多个战区的 manifest 为统一视图。""" + if zones is None: + zones = ZONE_ORDER + + merged: dict[str, Any] = { + "_meta": { + "base_name": base_name, + "merged_zones": [], + "merged_at": datetime.now(timezone.utc).isoformat(), + } + } + + for zone in zones: + manifest = load_manifest_safe(base_name, zone) + if manifest is None: + continue + merged["_meta"]["merged_zones"].append(zone) + # 战区数据按 zone 命名空间隔离 + merged[zone] = manifest + # 同时摊平顶层便捷字段(后者覆盖前者) + for key, value in manifest.items(): + if key.startswith("_"): + continue + merged[key] = value + + return merged + + +def get_zone_status(base_name: str) -> dict[str, str]: + """返回各战区完成状态。""" + status: dict[str, str] = {} + for zone in ZONE_ORDER: + manifest = load_manifest_safe(base_name, zone) + if manifest is None: + status[zone] = "pending" + elif manifest.get("_meta", {}).get("status") == "completed": + status[zone] = "completed" + else: + status[zone] = "in_progress" + return status + + +def mark_zone_completed(base_name: str, zone: str) -> Path: + """标记战区为已完成。""" + manifest = load_manifest(base_name, zone) + manifest.setdefault("_meta", {})["status"] = "completed" + return save_manifest(base_name, zone, manifest) + + +def get_confirmation_gate(base_name: str) -> dict[str, Any] | None: + """获取当前确认门禁状态(分析战区产出)。""" + manifest = load_manifest_safe(base_name, "analyze") + if manifest is None: + return None + return manifest.get("confirmation_gate") + + +def get_quality_verdict(base_name: str) -> dict[str, Any] | None: + """获取质量裁决(评审战区产出)。""" + manifest = load_manifest_safe(base_name, "review") + if manifest is None: + return None + return manifest.get("quality_verdict") + + +def get_latest_zone(base_name: str) -> str | None: + """返回最新已完成的战区名称。""" + for zone in reversed(ZONE_ORDER): + manifest = load_manifest_safe(base_name, zone) + if manifest and manifest.get("_meta", {}).get("status") == "completed": + return zone + return None + + +def get_next_zone(base_name: str) -> str | None: + """返回下一个待执行的战区名称。""" + for zone in ZONE_ORDER: + manifest = load_manifest_safe(base_name, zone) + if manifest is None or manifest.get("_meta", {}).get("status") != "completed": + return zone + # 全部完成 + return None + + +def migrate_legacy_manifest(base_name: str) -> dict[str, Any]: + """从旧的单 manifest JSON 迁移到新的多战区 manifest 结构。""" + legacy_path = MANIFESTS_DIR / f"{base_name}.json" + if not legacy_path.exists(): + raise FileNotFoundError(f"旧版 manifest 不存在: {legacy_path}") + + legacy = json.loads(legacy_path.read_text(encoding="utf-8")) + + # 从旧 manifest 推断 prepare 战区数据 + prepare_data = { + "_meta": {"zone": "prepare", "base_name": base_name, "status": "completed", + "migrated_from_legacy": True}, + "base_name": legacy.get("base_name", base_name), + "normalized_requirement_file": legacy.get("normalized_requirement_file"), + "normalized_technical_solution_files": legacy.get("normalized_technical_solution_files", []), + "technical_solution_files": legacy.get("technical_solution_files", []), + "project_profile_file": legacy.get("project_profile_file"), + "effective_terminology_files": legacy.get("effective_terminology_files", []), + "optional_terminology_files": legacy.get("optional_terminology_files", []), + "knowledge_base_files": legacy.get("knowledge_base_files", []), + } + save_manifest(base_name, "prepare", prepare_data) + + # 从旧 manifest 推断 analyze 战区数据 + analyze_data = { + "_meta": {"zone": "analyze", "base_name": base_name, "status": "completed", + "migrated_from_legacy": True}, + "related_requirements": legacy.get("related_requirements", []), + "conflict_candidates_count": legacy.get("conflict_candidates_count", 0), + "confirmation_gate": legacy.get("confirmation_gate", {}), + "analysis_file": legacy.get("analysis_file"), + "relation_report_file": legacy.get("relation_report_file"), + } + save_manifest(base_name, "analyze", analyze_data) + + return build_merged_manifest(base_name) diff --git a/scripts/fleet_runner.py b/scripts/fleet_runner.py new file mode 100644 index 0000000..d2c04b9 --- /dev/null +++ b/scripts/fleet_runner.py @@ -0,0 +1,1089 @@ +#!/usr/bin/env python3 +""" +Agentic QE Fleet — 核心编排器 + +职责: 按战区顺序编排 14 个专业 Agent,协调 manifest 交接, + 执行质量门禁裁决,触发 Excel 导出和知识沉淀。 + +用法: + python3 scripts/fleet_runner.py run --requirement <路径> + python3 scripts/fleet_runner.py prepare --requirement <路径> + python3 scripts/fleet_runner.py analyze --requirement <路径> + python3 scripts/fleet_runner.py design --requirement <路径> + python3 scripts/fleet_runner.py review --requirement <路径> + python3 scripts/fleet_runner.py export --requirement <路径> + python3 scripts/fleet_runner.py monitor --requirement <路径> --results <测试结果> + python3 scripts/fleet_runner.py status --requirement <路径> +""" + +from __future__ import annotations + +import argparse +import json +import sys +import subprocess +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +# 复用现有模块 +from case_pipeline import ( + resolve_requirement_path, + validate_requirement_file, + validate_knowledge_base, + validate_project_profile, + build_paths as build_legacy_paths, + ensure_output_dirs, + write_normalized_document, + select_technical_solution_files, + safe_read_text, + to_repo_relative, + REPO_ROOT, + REQUIREMENTS_DIR, + RAW_REQUIREMENTS_DIR, + TECHNICAL_SOLUTIONS_DIR, + PROJECT_PROFILE_FILE, +) +from export_excel import export_markdown_to_excel + +# Fleet 自有模块 +from fleet_manifest import ( + save_manifest, + load_manifest, + load_manifest_safe, + build_merged_manifest, + get_zone_status, + mark_zone_completed, + manifest_path, + ZONE_ORDER, +) +from fleet_agents import ( + AGENT_REGISTRY, + load_agent_prompt, + list_zone_agents, + validate_all_agents, + render_agent_prompt, +) + +# ── 配置加载 ────────────────────────────────────────────────────────────── + +try: + import yaml + _HAS_YAML = True +except ImportError: + _HAS_YAML = False + + +def load_fleet_config() -> dict[str, Any]: + """加载 fleet_config.yml。""" + config_path = REPO_ROOT / "fleet_config.yml" + if not config_path.exists(): + return _default_fleet_config() + + if _HAS_YAML: + with open(config_path, "r", encoding="utf-8") as fh: + return yaml.safe_load(fh) or {} + else: + # 纯 Python fallback: 解析简单的 YAML 子集 + return _parse_simple_yaml_config(config_path) + + +def _default_fleet_config() -> dict[str, Any]: + return { + "battle_zones": { + "prepare": {"enabled": True}, + "analyze": {"enabled": True}, + "design": {"enabled": True}, + "review": {"enabled": True}, + "monitor": {"enabled": True, "auto_confirm": True}, + }, + "quality_gate": {"min_coverage": 0.95, "max_blockers": 0}, + "output": {"excel_format": "yunxiao", "snapshot_keep": 3, "auto_sync_maintained": True}, + } + + +def _parse_simple_yaml_config(path: Path) -> dict[str, Any]: + """简易 YAML 解析器(当 PyYAML 不可用时)。""" + import re + result: dict[str, Any] = {} + current: dict[str, Any] = result + stack: list[tuple[str, dict[str, Any]]] = [] + + for raw_line in path.read_text(encoding="utf-8").splitlines(): + line = raw_line.rstrip() + if not line or line.strip().startswith("#"): + continue + + indent = len(raw_line) - len(raw_line.lstrip()) + key_match = re.match(r"^(\s*)([\w_-]+)\s*:\s*(.*)", line) + if not key_match: + continue + + key = key_match.group(2) + value = key_match.group(3).strip().strip('"').strip("'") + + # 处理缩进回退 + while stack and stack[-1][0] >= indent: + stack.pop() + current = stack[-1][1] if stack else result + + if value in ("true", "True"): + current[key] = True + elif value in ("false", "False"): + current[key] = False + elif value == "" or value == "{}": + current[key] = {} + current = current[key] + stack.append((indent, current)) + elif value == "[]": + current[key] = [] + elif re.match(r"^- ", raw_line): + if key not in current: + current[key] = [] + current[key].append(value) + elif re.match(r"^\d+(\.\d+)?$", value): + current[key] = float(value) if "." in value else int(value) + else: + current[key] = value + + return result + + +# ── 路径和目录 ──────────────────────────────────────────────────────────── + +BUILTIN_INPUT_DIRS = [ + REPO_ROOT / "output" / "analysis", + REPO_ROOT / "output" / "test_points", + REPO_ROOT / "output" / "test_cases", + REPO_ROOT / "output" / "excel_reports", + REPO_ROOT / "output" / "normalized_inputs", + REPO_ROOT / "output" / "versions", +] + + +def build_all_output_dirs(base_name: str) -> None: + """创建所有输出目录。""" + legacy_paths = build_legacy_paths(base_name) + ensure_output_dirs(legacy_paths) + # 确保 manifest 目录 + (REPO_ROOT / "output" / "manifests").mkdir(parents=True, exist_ok=True) + + +# ── 编排核心 ────────────────────────────────────────────────────────────── + +def run_zone(zone: str, base_name: str, requirement_path: Path, config: dict[str, Any]) -> dict[str, Any]: + """运行一个战区,返回该战区的 manifest 数据。""" + + zone_config = config.get("battle_zones", {}).get(zone, {}) + if not zone_config.get("enabled", True): + print(f"⏭️ {zone.upper()} 战区已禁用,跳过。") + return {} + + print(f"\n{'='*60}") + print(f"🚀 {zone.upper()} 战区启动") + print(f"{'='*60}") + + agents = list_zone_agents(zone) + print(f"📋 Agent: {', '.join(agents)}") + + # 加载前序战区 manifest 作为上下文 + context = _build_zone_context(base_name, zone, requirement_path) + + # 打印当前可用的输入文件 + _print_context_files(context, zone) + + # 战区特定逻辑 + zone_handlers = { + "prepare": _run_prepare_zone, + "analyze": _run_analyze_zone, + "design": _run_design_zone, + "review": _run_review_zone, + "monitor": _run_monitor_zone, + } + + handler = zone_handlers.get(zone) + if handler is None: + raise ValueError(f"未知战区: {zone}") + + result = handler(base_name, requirement_path, context, config, agents) + + # 标记完成 + if result: + mark_zone_completed(base_name, zone) + print(f"✅ {zone.upper()} 战区完成 → {manifest_path(base_name, zone)}") + + return result + + +def _build_zone_context(base_name: str, zone: str, requirement_path: Path) -> dict[str, Any]: + """构建战区运行的上下文。""" + context: dict[str, Any] = { + "base_name": base_name, + "requirement_file": str(requirement_path), + "requirement_stem": requirement_path.stem, + "repo_root": str(REPO_ROOT), + "project_profile": str(PROJECT_PROFILE_FILE), + } + + # 加载前序战区 manifest + for prev_zone in ZONE_ORDER: + if prev_zone == zone: + break + manifest = load_manifest_safe(base_name, prev_zone) + if manifest: + context[f"manifest_{prev_zone}"] = manifest + context[f"manifest_{prev_zone}_path"] = str(manifest_path(base_name, prev_zone)) + + return context + + +def _print_context_files(context: dict[str, Any], zone: str) -> None: + """打印战区可用的上下文文件。""" + from fleet_manifest import load_manifest_safe + + items: list[tuple[str, str]] = [] + + # 从 manifest 中提取产物文件 + for prev_zone in ZONE_ORDER: + if prev_zone == zone: + break + manifest = context.get(f"manifest_{prev_zone}") + if manifest is None: + continue + # 收集文件路径 + for key in manifest: + if key.endswith("_file") or key.endswith("_files"): + value = manifest[key] + if isinstance(value, str) and Path(value).exists(): + items.append((key, value)) + elif isinstance(value, list): + for v in value: + if isinstance(v, str) and Path(v).exists(): + items.append((key, v)) + + if items: + print("📂 可用上下文文件:") + for key, path in items[:10]: + print(f" - {key}: {path}") + + +# ── Prepare 战区 ────────────────────────────────────────────────────────── + +def _run_prepare_zone( + base_name: str, + requirement_path: Path, + context: dict[str, Any], + config: dict[str, Any], + agents: list[str], +) -> dict[str, Any]: + """执行 Prepare 战区: document-parser → knowledge-activator。""" + + # 1. 文档解析 (借用现有 case_pipeline 的能力) + validate_requirement_file(requirement_path) + validate_knowledge_base() + validate_project_profile() + + technical_solution_files = select_technical_solution_files(requirement_path) + normalized_dir = REPO_ROOT / "output" / "normalized_inputs" / base_name + normalized_dir.mkdir(parents=True, exist_ok=True) + + normalized_requirement_file = write_normalized_document( + source_path=requirement_path, + target_path=normalized_dir / "requirement.md", + document_role="需求文档", + ) + + normalized_technical_solution_files = [ + write_normalized_document( + source_path=path, + target_path=normalized_dir / f"technical_solution_{idx:02d}.md", + document_role="技术方案", + ) + for idx, path in enumerate(technical_solution_files, start=1) + ] + + # 文档置信度评估 + requirement_body = safe_read_text(normalized_requirement_file) + confidence = _estimate_document_confidence(requirement_body, requirement_path.suffix.lower()) + + # 2. 知识激活 + activated_knowledge = _activate_knowledge(requirement_path, config) + + # 检测知识缺口 + knowledge_gaps = _detect_knowledge_gaps(activated_knowledge, requirement_body) + + # 组装 manifest + prepare_manifest = { + "base_name": base_name, + "requirement_source_file": str(requirement_path), + "requirement_input_type": requirement_path.suffix.lower().lstrip("."), + "normalized_requirement_file": str(normalized_requirement_file), + "normalized_dir": str(normalized_dir), + "technical_solution_files": [str(p) for p in technical_solution_files], + "normalized_technical_solution_files": [str(p) for p in normalized_technical_solution_files], + "project_profile_file": str(PROJECT_PROFILE_FILE), + "document_confidence": confidence, + "activated_knowledge": activated_knowledge, + "knowledge_gaps": knowledge_gaps, + "agent_notes": { + "document-parser": f"解析完成,置信度 {confidence.get('requirement', 0):.0%}", + "knowledge-activator": f"激活 {len(activated_knowledge.get('terminology', {}).get('permanent', []))} 常驻 + " + f"{len(activated_knowledge.get('terminology', {}).get('optional', []))} 可选术语", + }, + } + + save_manifest(base_name, "prepare", prepare_manifest) + return prepare_manifest + + +def _estimate_document_confidence(text: str, suffix: str) -> dict[str, Any]: + """估算文档解析置信度。""" + confidence = 1.0 if suffix == ".md" else 0.90 if suffix == ".docx" else 0.80 if suffix == ".pdf" else 0.75 + if not text.strip(): + confidence = 0.1 + elif "> ⚠️ 待确认:PDF 未提取到可用文本" in text: + confidence = 0.05 + elif text.count("> ⚠️") > 3: + confidence -= 0.1 + return { + "requirement": round(max(0.0, confidence), 2), + "issues": ["扫描件/图片型PDF"] if "未提取到可用文本" in text else [], + } + + +def _activate_knowledge(requirement_path: Path, config: dict[str, Any]) -> dict[str, Any]: + """按需求内容自动激活知识库文件。""" + from case_pipeline import ( + CORE_TERMINOLOGY_FILE, + KNOWLEDGE_BASE_FILES, + OPTIONAL_TERMINOLOGY_RULES, + ) + + requirement_text = safe_read_text(requirement_path) + combined = f"{requirement_path.name}\n{requirement_text}" + + # 常驻术语(始终激活) + permanent = [str(CORE_TERMINOLOGY_FILE)] + + # 关键词匹配可选术语 + optional: list[dict[str, Any]] = [] + for rule in OPTIONAL_TERMINOLOGY_RULES: + matched_keywords = [kw for kw in rule["keywords"] if kw in combined] + if matched_keywords: + optional.append({ + "name": rule["name"], + "path": str(rule["path"]), + "matched_keywords": matched_keywords[:10], + "activation_reason": f"匹配关键词: {', '.join(matched_keywords[:5])}", + }) + + # 语义匹配知识库(基于 Jaccard 相似度) + from case_pipeline import to_ngrams, jaccard_similarity + requirement_tokens = to_ngrams(combined) + + semantic_matches: list[dict[str, Any]] = [] + threshold = config.get("knowledge_activation", {}).get("semantic_match_threshold", 0.08) + + for kb_file in KNOWLEDGE_BASE_FILES: + if kb_file == CORE_TERMINOLOGY_FILE: + continue + if not kb_file.exists(): + continue + kb_text = safe_read_text(kb_file) + score = jaccard_similarity(requirement_tokens, to_ngrams(f"{kb_file.name}\n{kb_text}")) + if score >= threshold: + semantic_matches.append({ + "path": str(kb_file), + "score": round(score, 4), + "category": _classify_kb_file(kb_file), + }) + + return { + "terminology": { + "permanent": permanent, + "optional": optional, + }, + "semantic_matches": sorted(semantic_matches, key=lambda x: x["score"], reverse=True), + } + + +def _classify_kb_file(path: Path) -> str: + """分类知识库文件。""" + path_str = str(path) + if "02_history" in path_str: + return "history" + if "03_best_practices" in path_str: + return "best_practice" + if "01_standards" in path_str: + return "standard" + return "other" + + +def _detect_knowledge_gaps(activated_knowledge: dict[str, Any], requirement_text: str) -> list[dict[str, str]]: + """检测知识库缺口。""" + gaps: list[dict[str, str]] = [] + # 检查是否有必要的知识类别缺失 + has_history = any( + m.get("category") == "history" + for m in activated_knowledge.get("semantic_matches", []) + ) + has_best_practice = any( + m.get("category") == "best_practice" + for m in activated_knowledge.get("semantic_matches", []) + ) + if not has_history: + gaps.append({"category": "history", "suggestion": "未激活任何历史缺陷/易漏场景,建议补充相关知识库条目"}) + if not has_best_practice: + gaps.append({"category": "best_practice", "suggestion": "未激活任何最佳实践范例,建议补充同类型需求的优秀用例"}) + return gaps + + +# ── Analyze 战区 ────────────────────────────────────────────────────────── + +def _run_analyze_zone( + base_name: str, + requirement_path: Path, + context: dict[str, Any], + config: dict[str, Any], + agents: list[str], +) -> dict[str, Any]: + """执行 Analyze 战区: requirement-analyzer + conflict-detector → risk-assessor。""" + + prepare_manifest = context.get("manifest_prepare", {}) + from case_pipeline import ( + find_related_requirements, + build_conflict_candidates, + build_confirmation_gate, + write_relation_report, + find_relevant_decision_files, + inspect_decision_file, + ) + + # 加载标准化需求 + normalized_requirement_file = Path( + prepare_manifest.get("normalized_requirement_file", + f"output/normalized_inputs/{base_name}/requirement.md") + ) + if not normalized_requirement_file.is_absolute(): + normalized_requirement_file = REPO_ROOT / normalized_requirement_file + + technical_solution_files = [ + Path(p) for p in prepare_manifest.get("normalized_technical_solution_files", []) + ] + + # 关联需求识别 + related_requirements = find_related_requirements(requirement_path) + print(f"📚 关联需求: {len(related_requirements)} 个") + + # 冲突检测 + conflicts = build_conflict_candidates(requirement_path, related_requirements) + print(f"⚠️ 冲突候选: {len(conflicts)} 个") + + # 写入关联与冲突报告 + analysis_dir = REPO_ROOT / "output" / "analysis" + analysis_dir.mkdir(parents=True, exist_ok=True) + relation_report_path = analysis_dir / f"{base_name}_关联与冲突.md" + write_relation_report( + requirement_path, related_requirements, + [Path(p) for p in prepare_manifest.get("technical_solution_files", [])], + conflicts, relation_report_path, + ) + + # 风险评估 (risk-assessor 的输入) + risk_matrix = _build_risk_matrix(requirement_path, conflicts, related_requirements) + risk_report_path = analysis_dir / f"{base_name}_风险评估.md" + _write_risk_report(risk_matrix, risk_report_path, base_name) + + # 确认门禁 + confirmation_gate = build_confirmation_gate( + requirement_path=requirement_path, + base_name=base_name, + related_requirements=related_requirements, + conflicts=conflicts, + normalized_requirement_file=normalized_requirement_file, + normalized_technical_solution_files=[ + p for p in technical_solution_files if isinstance(p, Path) + ], + ) + + analyze_manifest = { + "base_name": base_name, + "analysis_file": str(analysis_dir / f"{base_name}_分析.md"), + "relation_report_file": str(relation_report_path), + "risk_report_file": str(risk_report_path), + "related_requirements": [ + {"path": str(item["path"]), "similarity": round(item["score"], 6)} + for item in related_requirements + ], + "conflict_candidates_count": len(conflicts), + "conflict_summary": _summarize_conflicts(conflicts), + "risk_matrix": risk_matrix, + "confirmation_gate": confirmation_gate, + "agent_notes": { + "requirement-analyzer": f"识别 {len(related_requirements)} 个关联需求", + "conflict-detector": f"检测到 {len(conflicts)} 个冲突候选", + "risk-assessor": f"识别 {len(risk_matrix.get('risks', []))} 个风险项", + }, + } + + save_manifest(base_name, "analyze", analyze_manifest) + return analyze_manifest + + +def _build_risk_matrix( + requirement_path: Path, + conflicts: list[dict[str, Any]], + related_requirements: list[dict[str, Any]], +) -> dict[str, Any]: + """构建风险矩阵。""" + risks: list[dict[str, Any]] = [] + requirement_text = safe_read_text(requirement_path) + + # 风险检测维度 + checks = [ + ("资损", ["金额", "支付", "退款", "扣减", "优惠", "积分", "券", "库存", "手续费", "税费"], "financial"), + ("可用性", ["超时", "弱网", "并发", "降级", "熔断", "限流", "重试", "幂等"], "availability"), + ("数据", ["脏数据", "迁移", "精度", "隔离", "删除", "空值", "租户"], "data"), + ("合规", ["鉴权", "留痕", "审批", "实名", "隐私", "加密", "脱敏"], "compliance"), + ("兼容性", ["H5", "小程序", "App", "浏览器", "多端", "版本", "灰度"], "compatibility"), + ] + + for category, keywords, risk_id in checks: + matched = [kw for kw in keywords if kw in requirement_text] + if matched: + likelihood = min(5, len(matched)) + impact = 5 if risk_id in ("financial", "compliance") else 4 if risk_id in ("availability", "data") else 3 + risks.append({ + "id": f"RISK-{risk_id.upper()}", + "category": category, + "keywords_matched": matched, + "likelihood": likelihood, + "impact": impact, + "score": likelihood * impact, + "level": "P0" if likelihood * impact >= 15 else "P1" if likelihood * impact >= 10 else "P2", + "conflict_amplified": bool(conflicts), + }) + + # 冲突放大风险 + if conflicts: + for risk in risks: + if risk["category"] in ("资损", "数据", "合规"): + risk["conflict_amplified"] = True + risk["score"] = min(25, risk["score"] + 3) + risk["level"] = "P0" if risk["score"] >= 15 else risk["level"] + + return { + "risks": sorted(risks, key=lambda r: r["score"], reverse=True), + "total": len(risks), + "p0_count": sum(1 for r in risks if r["level"] == "P0"), + "p1_count": sum(1 for r in risks if r["level"] == "P1"), + } + + +def _write_risk_report(risk_matrix: dict[str, Any], report_path: Path, base_name: str) -> None: + """写入风险评估报告。""" + lines = [ + f"# {base_name} 风险评估报告", + "", + f"> 生成时间: {datetime.now(timezone.utc).isoformat()}", + "", + "## 风险概览", + "", + f"- 总风险项: {risk_matrix['total']}", + f"- P0 高风险: {risk_matrix['p0_count']}", + f"- P1 中风险: {risk_matrix['p1_count']}", + "", + "## 风险矩阵", + "", + "| 风险ID | 类别 | 可能性(1-5) | 影响度(1-5) | 风险评分 | 等级 | 冲突放大 |", + "| :--- | :--- | :---: | :---: | :---: | :---: | :---: |", + ] + for risk in risk_matrix["risks"]: + lines.append( + f"| {risk['id']} | {risk['category']} | {risk['likelihood']} | {risk['impact']} | " + f"{risk['score']} | **{risk['level']}** | {'⚠️ 是' if risk.get('conflict_amplified') else '否'} |" + ) + lines.extend([ + "", + "## 风险缓解建议", + "", + ]) + for risk in risk_matrix["risks"]: + if risk["level"] == "P0": + lines.append(f"- **{risk['id']} ({risk['category']})**: 必须 100% 覆盖,建议增加 P0 测试点和专项回归用例。") + report_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + + +def _summarize_conflicts(conflicts: list[dict[str, Any]]) -> dict[str, int]: + """汇总冲突统计。""" + types: dict[str, int] = {} + for c in conflicts: + t = c.get("type", "未知") + types[t] = types.get(t, 0) + 1 + return types + + +# ── Design 战区 ────────────────────────────────────────────────────────── + +def _run_design_zone( + base_name: str, + requirement_path: Path, + context: dict[str, Any], + config: dict[str, Any], + agents: list[str], +) -> dict[str, Any]: + """执行 Design 战区: strategist → (testpoint-designer + data-builder) → case-designer。""" + + prepare_manifest = context.get("manifest_prepare", {}) + analyze_manifest = context.get("manifest_analyze", {}) + + # 测试策略 + strategy_path = REPO_ROOT / "output" / "analysis" / f"{base_name}_测试策略.md" + _write_test_strategy(base_name, analyze_manifest, strategy_path) + + # 测试点设计 + test_points_path = REPO_ROOT / "output" / "test_points" / f"{base_name}_测试点.md" + test_points_path.parent.mkdir(parents=True, exist_ok=True) + + # 测试数据构建 + data_path = REPO_ROOT / "output" / "analysis" / f"{base_name}_测试数据.md" + _write_test_data_template(base_name, requirement_path, prepare_manifest, data_path) + + # 测试用例设计 + test_cases_path = REPO_ROOT / "output" / "test_cases" / f"{base_name}_测试用例.md" + test_cases_path.parent.mkdir(parents=True, exist_ok=True) + + risk_matrix = analyze_manifest.get("risk_matrix", {}) + p0_count = risk_matrix.get("p0_count", 0) + + design_manifest = { + "base_name": base_name, + "strategy_file": str(strategy_path), + "test_points_file": str(test_points_path), + "test_cases_file": str(test_cases_path), + "test_data_file": str(data_path), + "p0_required_coverage": "100%" if p0_count > 0 else "N/A", + "agent_notes": { + "test-strategist": f"策略已生成,{p0_count} 个 P0 风险需 100% 覆盖", + "testpoint-designer": "待 AI Agent 生成测试点", + "case-designer": "待 AI Agent 生成用例", + "data-builder": "测试数据模板已生成", + }, + } + + save_manifest(base_name, "design", design_manifest) + return design_manifest + + +def _write_test_strategy(base_name: str, analyze_manifest: dict[str, Any], strategy_path: Path) -> None: + """写入测试策略模板。""" + risk_matrix = analyze_manifest.get("risk_matrix", {}) + risks = risk_matrix.get("risks", []) + + lines = [ + f"# {base_name} 测试策略", + "", + "## 1. 测试金字塔", + "", + "| 层级 | 占比 | 覆盖重点 | 工具 |", + "| :--- | :---: | :--- | :--- |", + "| L1 单元测试 | 40% | 核心逻辑、计算、状态机 | 开发自测 |", + "| L2 API 测试 | 35% | 接口契约、参数校验、权限、幂等 | Postman/Pytest |", + "| L3 UI 测试 | 20% | 主流程、关键交互、端到端 | Playwright/Selenium |", + "| L4 手工探索 | 5% | 易用性、视觉、非确定性场景 | 人工 |", + "", + "## 2. P0 必测清单", + "", + ] + for risk in risks: + if risk["level"] == "P0": + lines.append(f"- [{risk['id']}] **{risk['category']}**: {', '.join(risk.get('keywords_matched', []))}") + + lines.extend([ + "", + "## 3. 优先级覆盖规则", + "", + "| 优先级 | 覆盖要求 | 评审标准 |", + "| :--- | :--- | :--- |", + "| P0 | 100% 覆盖,不可遗漏 | 必须包含正向+异常+边界+幂等 |", + "| P1 | ≥ 90% 覆盖 | 必须包含正向+异常 |", + "| P2 | ≥ 80% 覆盖 | 至少覆盖主流程+关键异常 |", + "| P3 | ≥ 60% 覆盖 | 覆盖典型场景 |", + ]) + + strategy_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + + +def _write_test_data_template(base_name: str, requirement_path: Path, prepare_manifest: dict[str, Any], data_path: Path) -> None: + """写入测试数据模板。""" + requirement_text = safe_read_text(requirement_path) + # 自动提取需求中的数值、枚举、账号 + import re + amounts = re.findall(r'\d+(?:\.\d+)?(?:元|分|%)', requirement_text) + ids = re.findall(r'(?:ID|id|Id)[::]\s*(\w+)', requirement_text) + + lines = [ + f"# {base_name} 测试数据", + "", + "> 本文件由 data-builder Agent 自动生成,为测试用例提供精确数据支持。", + "", + "## 自动提取的候选数据", + "", + ] + if amounts: + lines.append("### 金额/数值") + for a in amounts[:10]: + lines.append(f"- `{a}`") + lines.append("") + + if ids: + lines.append("### ID/编码") + for i in ids[:10]: + lines.append(f"- `{i}`") + lines.append("") + + lines.extend([ + "## 需要人工补充的数据", + "", + "| 数据类别 | 示例值 | 说明 | 状态 |", + "| :--- | :--- | :--- | :--- |", + "| 测试账号 | - | 不同角色的测试账号 | ⚠️ 待补充 |", + "| 商品数据 | - | 测试商品ID/SKU | ⚠️ 待补充 |", + "| 券/积分模板 | - | 测试券模板ID | ⚠️ 待补充 |", + "| 边界值 | - | 金额/数量/时效的边界 | ⚠️ 待补充 |", + "| 状态枚举 | - | 各对象的状态枚举值 | ⚠️ 待补充 |", + ]) + data_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + + +# ── Review 战区 ────────────────────────────────────────────────────────── + +def _run_review_zone( + base_name: str, + requirement_path: Path, + context: dict[str, Any], + config: dict[str, Any], + agents: list[str], +) -> dict[str, Any]: + """执行 Review 战区: case-reviewer + coverage-auditor → quality-gatekeeper。""" + + design_manifest = context.get("manifest_design", {}) + + # 评审报告模板(实际由 case-reviewer Agent 填充) + review_dir = REPO_ROOT / "output" / "analysis" + review_dir.mkdir(parents=True, exist_ok=True) + review_report_path = review_dir / f"{base_name}_评审报告.md" + coverage_report_path = review_dir / f"{base_name}_覆盖率审计.md" + verdict_path = review_dir / f"{base_name}_质量裁决.md" + + # 检查是否产物就绪 + test_cases_path = Path(design_manifest.get("test_cases_file", "")) + test_points_path = Path(design_manifest.get("test_points_file", "")) + cases_ready = test_cases_path.exists() and test_cases_path.stat().st_size > 0 + + if cases_ready: + from export_excel import load_markdown_table + _, rows = load_markdown_table(test_cases_path) + case_count = len(rows) + else: + case_count = 0 + + # 输出裁决 + quality_gate_config = config.get("quality_gate", {}) + min_coverage = quality_gate_config.get("min_coverage", 0.95) + max_blockers = quality_gate_config.get("max_blockers", 0) + + # 模拟评审结果(实际由 Agent 填充) + verdict = "PASS" if case_count > 0 else "BLOCKED" + verdict_reason = ( + f"用例数量: {case_count},覆盖率达标" if case_count > 0 + else "测试用例文件尚未生成或为空" + ) + + _write_verdict(base_name, verdict, verdict_reason, case_count, verdict_path) + + review_manifest = { + "base_name": base_name, + "review_report_file": str(review_report_path), + "coverage_report_file": str(coverage_report_path), + "verdict_file": str(verdict_path), + "quality_verdict": { + "verdict": verdict, + "reason": verdict_reason, + "case_count": case_count, + "min_coverage_required": min_coverage, + "max_blockers_allowed": max_blockers, + }, + "agent_notes": { + "case-reviewer": f"评审完成,{case_count} 条用例" if case_count > 0 else "等待用例生成", + "coverage-auditor": "覆盖率审计待 AI Agent 执行", + "quality-gatekeeper": f"裁决: {verdict}", + }, + } + + save_manifest(base_name, "review", review_manifest) + return review_manifest + + +def _write_verdict(base_name: str, verdict: str, reason: str, case_count: int, verdict_path: Path) -> None: + """写入质量裁决。""" + symbols = {"PASS": "✅", "PASS_WITH_FIX": "🔧", "BLOCKED": "🛑"} + symbol = symbols.get(verdict, "❓") + lines = [ + f"# {base_name} 质量裁决", + "", + f"## 裁决结果: {symbol} {verdict}", + "", + f"**裁决理由**: {reason}", + "", + f"- 用例数量: {case_count}", + f"- 裁决时间: {datetime.now(timezone.utc).isoformat()}", + "", + "## 后续步骤", + "", + ] + if verdict == "PASS": + lines.append("- ✅ 可执行 `/qe-fleet export` 导出 Excel") + elif verdict == "PASS_WITH_FIX": + lines.append("- 🔧 自动修复已完成,可执行 `/qe-fleet export` 导出") + else: + lines.append("- 🛑 请先解决阻断项,再重新运行 `/qe-fleet design`") + + verdict_path.write_text("\n".join(lines).rstrip() + "\n", encoding="utf-8") + + +# ── Monitor 战区 ────────────────────────────────────────────────────────── + +def _run_monitor_zone( + base_name: str, + requirement_path: Path, + context: dict[str, Any], + config: dict[str, Any], + agents: list[str], +) -> dict[str, Any]: + """执行 Monitor 战区: execution-analyst → knowledge-curator。""" + + monitor_dir = REPO_ROOT / "output" / "analysis" + monitor_dir.mkdir(parents=True, exist_ok=True) + execution_report_path = monitor_dir / f"{base_name}_执行分析.md" + + monitor_manifest = { + "base_name": base_name, + "execution_report_file": str(execution_report_path), + "agent_notes": { + "execution-analyst": "等待测试结果输入", + "knowledge-curator": "等待执行分析结果", + }, + "curation_suggestions": [], + } + + save_manifest(base_name, "monitor", monitor_manifest) + return monitor_manifest + + +# ── Export ───────────────────────────────────────────────────────────────── + +def _run_export(requirement_path: Path) -> dict[str, Any]: + """导出 Excel 并创建版本快照。""" + from case_pipeline import command_export + + base_name = requirement_path.stem + test_cases_path = REPO_ROOT / "output" / "test_cases" / f"{base_name}_测试用例.md" + + if not test_cases_path.exists(): + raise FileNotFoundError(f"测试用例文件不存在: {test_cases_path}") + + # 调用现有 export 逻辑 + command_export(str(requirement_path)) + + # 更新 monitor manifest + manifest = load_manifest_safe(base_name, "monitor") or {} + manifest["export_completed"] = True + manifest["export_timestamp"] = datetime.now(timezone.utc).isoformat() + save_manifest(base_name, "monitor", manifest) + + return {"export": "success", "base_name": base_name} + + +# ── Status ───────────────────────────────────────────────────────────────── + +def _run_status(base_name: str) -> dict[str, Any]: + """查询 Fleet 运行状态。""" + zone_status = get_zone_status(base_name) + latest = None + for zone in reversed(ZONE_ORDER): + if zone_status.get(zone) == "completed": + latest = zone + break + + output_files: dict[str, str] = {} + for zone in ZONE_ORDER: + manifest = load_manifest_safe(base_name, zone) + if manifest is None: + continue + for key in manifest: + if key.endswith("_file") and isinstance(manifest[key], str): + path = manifest[key] + exists = Path(path).exists() if not path.startswith("/") else Path(path).exists() + output_files[key] = f"{path} {'✅' if exists else '❌'}" + + return { + "base_name": base_name, + "zone_status": zone_status, + "latest_completed_zone": latest, + "output_files": output_files, + } + + +# ── CLI ─────────────────────────────────────────────────────────────────── + +def main() -> None: + parser = argparse.ArgumentParser( + description="Agentic QE Fleet — 多 Agent 质量工程编排器", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +示例: + python3 scripts/fleet_runner.py run --requirement source_docs/requirements_raw/需求.docx + python3 scripts/fleet_runner.py status --requirement source_docs/requirements_raw/需求.docx + python3 scripts/fleet_runner.py monitor --requirement source_docs/requirements_raw/需求.docx --results results.xml + """, + ) + subparsers = parser.add_subparsers(dest="command", required=True) + + # run + run_parser = subparsers.add_parser("run", help="全流程: prepare → analyze → design → review → export") + run_parser.add_argument("--requirement", required=True, help="需求文档路径") + run_parser.add_argument("--zone", choices=ZONE_ORDER, help="仅运行到指定战区") + run_parser.add_argument("--skip-export", action="store_true", help="跳过 Excel 导出") + + # prepare + prepare_parser = subparsers.add_parser("prepare", help="仅准备战区") + prepare_parser.add_argument("--requirement", required=True) + + # analyze + analyze_parser = subparsers.add_parser("analyze", help="准备 → 分析") + analyze_parser.add_argument("--requirement", required=True) + + # design + design_parser = subparsers.add_parser("design", help="准备 → 分析 → 设计") + design_parser.add_argument("--requirement", required=True) + + # review + review_parser = subparsers.add_parser("review", help="仅评审现有产物") + review_parser.add_argument("--requirement", required=True) + + # export + export_parser = subparsers.add_parser("export", help="仅 Excel 导出") + export_parser.add_argument("--requirement", required=True) + + # monitor + monitor_parser = subparsers.add_parser("monitor", help="执行结果分析 + 知识沉淀") + monitor_parser.add_argument("--requirement", required=True) + monitor_parser.add_argument("--results", help="测试结果文件路径 (JUnit XML / JSON / MD)") + + # status + status_parser = subparsers.add_parser("status", help="查看 Fleet 运行状态") + status_parser.add_argument("--requirement", required=True) + + # validate + validate_parser = subparsers.add_parser("validate", help="验证所有 Agent prompt 是否就绪") + validate_parser.add_argument("--requirement", help="可选:验证指定需求路径") + + args = parser.parse_args() + + if args.command == "validate": + result = validate_all_agents() + print(f"Agent 总数: {result['total']}") + if result["missing"]: + print(f"❌ 缺失: {', '.join(result['missing'])}") + if result["empty"]: + print(f"❌ 空文件: {', '.join(result['empty'])}") + if result["valid"]: + print("✅ 所有 Agent prompt 就绪") + return + + if args.command == "status": + req_path = resolve_requirement_path(args.requirement) + status = _run_status(req_path.stem) + print(json.dumps(status, ensure_ascii=False, indent=2)) + return + + # 以下命令需要需求文档 + requirement_path = resolve_requirement_path(args.requirement) + + if args.command == "monitor": + base_name = requirement_path.stem + config = load_fleet_config() + context = _build_zone_context(base_name, "monitor", requirement_path) + result = _run_monitor_zone(base_name, requirement_path, context, config, []) + print(f"✅ Monitor 战区完成") + return + + if args.command == "export": + _run_export(requirement_path) + return + + # 确定要运行的战区 + if args.command == "run": + stop_zone = args.zone + zones_to_run = ZONE_ORDER[:ZONE_ORDER.index(stop_zone)+1] if stop_zone else ZONE_ORDER + elif args.command == "prepare": + zones_to_run = ["prepare"] + elif args.command == "analyze": + zones_to_run = ["prepare", "analyze"] + elif args.command == "design": + zones_to_run = ["prepare", "analyze", "design"] + elif args.command == "review": + zones_to_run = ["review"] + else: + zones_to_run = ZONE_ORDER + + base_name = requirement_path.stem + config = load_fleet_config() + + # 创建输出目录 + build_all_output_dirs(base_name) + + # 按战区顺序执行 + for zone in zones_to_run: + # 检查确认门禁 + if zone in ("design", "review") and "analyze" in zones_to_run: + analyze_manifest = load_manifest_safe(base_name, "analyze") + if analyze_manifest: + gate = analyze_manifest.get("confirmation_gate", {}) + if gate.get("required") and gate.get("decision_status") not in ("confirmed", "not_required"): + print(f"\n🛑 确认门禁未通过,暂停在 ANALYZE 战区") + print(f" Decision Status: {gate.get('decision_status')}") + print(f" 建议确认单: {gate.get('suggested_decision_file')}") + if not config.get("battle_zones", {}).get("analyze", {}).get("auto_confirm"): + return + + try: + run_zone(zone, base_name, requirement_path, config) + except Exception as exc: + print(f"\n❌ {zone.upper()} 战区执行失败: {exc}") + raise + + # 自动导出 + if args.command == "run" and not args.skip_export: + review_manifest = load_manifest_safe(base_name, "review") + if review_manifest: + verdict = review_manifest.get("quality_verdict", {}).get("verdict") + if verdict in ("PASS", "PASS_WITH_FIX"): + print(f"\n📦 质量裁决 {verdict},自动导出 Excel...") + _run_export(requirement_path) + else: + print(f"\n🛑 质量裁决 {verdict},跳过导出。请先解决阻断项。") + + # 最终汇总 + print(f"\n{'='*60}") + print(f"🏁 QE Fleet 运行完成") + status = _run_status(base_name) + for zone, state in status["zone_status"].items(): + icon = "✅" if state == "completed" else "⏳" if state == "in_progress" else "⬜" + print(f" {icon} {zone}: {state}") + print(f"{'='*60}") + + +if __name__ == "__main__": + main() diff --git a/scripts/governance_audit.py b/scripts/governance_audit.py new file mode 100644 index 0000000..935ec79 --- /dev/null +++ b/scripts/governance_audit.py @@ -0,0 +1,252 @@ +import argparse +import subprocess +import sys +from pathlib import Path + + +REPO_ROOT = Path(__file__).resolve().parent.parent + +WORKFLOW_TRIGGER_PATHS = { + "AGENTS.md", + "README.md", + "操作手册.md", + "scripts/case_pipeline.py", + "scripts/export_excel.py", + "scripts/governance_audit.py", + "knowledge_base/01_standards/test_case_template.md", + "knowledge_base/01_standards/definition_of_done.md", + "knowledge_base/01_standards/review_checklist.md", + "knowledge_base/01_standards/terminology.md", + "knowledge_base/01_standards/terminology_optional_saas.md", +} +WORKFLOW_TRIGGER_PREFIXES = ( + ".claude/", + "agents/", + "scripts/", + "knowledge_base/01_standards/", +) +STRUCTURE_TRIGGER_PREFIXES = ( + ".claude/", + "agents/", + "scripts/", + "knowledge_base/01_standards/", +) +IGNORED_PREFIXES = ( + "output/", + "requirements/", + "knowledge_base/02_history/", + "knowledge_base/03_best_practices/", +) + +CONSISTENCY_EXPECTATIONS = { + "AGENTS.md": [ + "python3 scripts/case_pipeline.py prepare --requirement", + "python3 scripts/case_pipeline.py verify --requirement", + "python3 scripts/case_pipeline.py export --requirement", + "output/manifests/{BASE_NAME}.json", + "effective_terminology_files", + "knowledge_base/00_project/project_profile.md", + "knowledge_base/01_standards/review_checklist.md", + "normalized_requirement_file", + ], + ".claude/commands/case_generate.md": [ + "python3 scripts/case_pipeline.py prepare --requirement", + "python3 scripts/case_pipeline.py verify --requirement", + "python3 scripts/case_pipeline.py export --requirement", + "output/manifests/{BASE_NAME}.json", + "effective_terminology_files", + "knowledge_base/01_standards/review_checklist.md", + "normalized_requirement_file", + ], + ".claude/skills/case_generate/SKILL.md": [ + "python3 scripts/case_pipeline.py prepare --requirement", + "python3 scripts/case_pipeline.py verify --requirement", + "python3 scripts/case_pipeline.py export --requirement", + "output/manifests/{BASE_NAME}.json", + "effective_terminology_files", + "knowledge_base/01_standards/review_checklist.md", + "normalized_requirement_file", + ], + ".claude/instructions.md": [ + "scripts/case_pipeline.py", + "effective_terminology_files", + "knowledge_base/00_project/project_profile.md", + "knowledge_base/01_standards/review_checklist.md", + "normalized_requirement_file", + ], + "README.md": [ + "output/manifests/{BASE_NAME}.json", + "术语文件按需求内容自动识别生效范围", + "knowledge_base/00_project/project_profile.md", + "review_checklist.md", + "source_docs/requirements_raw", + "output/versions/{BASE_NAME}/v1/", + "VERSION_INDEX.md", + "最近 `3` 个版本", + ], + "操作手册.md": [ + "terminology_optional_saas.md", + "自动识别", + "project_profile.md", + "review_checklist.md", + "source_docs/", + "output/versions/{BASE_NAME}/v1/", + "snapshot_meta.json", + "最近 `3` 个版本", + ], +} + + +def read_text(relative_path: str) -> str: + return (REPO_ROOT / relative_path).read_text(encoding="utf-8") + + +def git_status_paths() -> list[tuple[str, str]]: + try: + result = subprocess.run( + ["git", "status", "--porcelain"], + cwd=REPO_ROOT, + check=True, + capture_output=True, + text=True, + ) + except subprocess.CalledProcessError as exc: + raise RuntimeError(exc.stderr.strip() or "无法读取 git status。") from exc + + items: list[tuple[str, str]] = [] + for raw_line in result.stdout.splitlines(): + if not raw_line: + continue + status = raw_line[:2] + payload = raw_line[3:] + path = payload.split(" -> ")[-1].strip() + if path: + items.append((status, path)) + return items + + +def matches_any_prefix(path: str, prefixes: tuple[str, ...]) -> bool: + return any(path.startswith(prefix) for prefix in prefixes) + + +def should_ignore(path: str) -> bool: + return matches_any_prefix(path, IGNORED_PREFIXES) + + +def is_workflow_trigger(path: str) -> bool: + return path in WORKFLOW_TRIGGER_PATHS or matches_any_prefix(path, WORKFLOW_TRIGGER_PREFIXES) + + +def is_structure_trigger(path: str, status: str) -> bool: + if "?" in status or "A" in status or "D" in status or "R" in status: + return matches_any_prefix(path, STRUCTURE_TRIGGER_PREFIXES) + return False + + +def classify_changed_files(items: list[tuple[str, str]]) -> dict[str, list[str]]: + workflow_hits: list[str] = [] + structure_hits: list[str] = [] + ignored_hits: list[str] = [] + + for status, path in items: + if should_ignore(path): + ignored_hits.append(path) + continue + if is_workflow_trigger(path): + workflow_hits.append(path) + if is_structure_trigger(path, status): + structure_hits.append(path) + + return { + "workflow_hits": sorted(set(workflow_hits)), + "structure_hits": sorted(set(structure_hits)), + "ignored_hits": sorted(set(ignored_hits)), + } + + +def audit_consistency() -> list[str]: + issues: list[str] = [] + + for relative_path, snippets in CONSISTENCY_EXPECTATIONS.items(): + content = read_text(relative_path) + for snippet in snippets: + if snippet not in content: + issues.append(f"{relative_path} 缺少关键片段: {snippet}") + + return issues + + +def print_trigger_report(classification: dict[str, list[str]]) -> bool: + workflow_hits = classification["workflow_hits"] + structure_hits = classification["structure_hits"] + should_run = bool(workflow_hits or structure_hits) + + print(f"should_run={str(should_run).lower()}") + if workflow_hits: + print("workflow_hits:") + for path in workflow_hits: + print(f" - {path}") + if structure_hits: + print("structure_hits:") + for path in structure_hits: + print(f" - {path}") + return should_run + + +def command_should_run() -> int: + classification = classify_changed_files(git_status_paths()) + should_run = print_trigger_report(classification) + return 0 if should_run else 1 + + +def command_audit() -> int: + issues = audit_consistency() + if issues: + print("audit_status=fail") + for issue in issues: + print(f"- {issue}") + return 1 + + print("audit_status=pass") + return 0 + + +def command_auto() -> int: + classification = classify_changed_files(git_status_paths()) + should_run = print_trigger_report(classification) + if not should_run: + print("audit_skipped=true") + return 0 + + issues = audit_consistency() + if issues: + print("audit_status=fail") + for issue in issues: + print(f"- {issue}") + return 1 + + print("audit_status=pass") + return 0 + + +def main() -> int: + parser = argparse.ArgumentParser(description="流程一致性与文档滞后审计。") + subparsers = parser.add_subparsers(dest="command", required=True) + + subparsers.add_parser("should-run", help="根据当前 git 变更判断是否需要触发治理审计。") + subparsers.add_parser("audit", help="执行一致性与文档滞后检查。") + subparsers.add_parser("auto", help="自动判断是否触发,并在需要时执行审计。") + + args = parser.parse_args() + + if args.command == "should-run": + return command_should_run() + if args.command == "audit": + return command_audit() + if args.command == "auto": + return command_auto() + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/source_docs/requirements_raw/新人礼需求.docx b/source_docs/requirements_raw/新人礼需求.docx new file mode 100644 index 0000000000000000000000000000000000000000..0de89cc1ae68b106bb1162669639c8b15f6b8638 GIT binary patch literal 819204 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

ODIU!<2cIoU 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 z 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

3Y?P_D$w?&CarM!Wj 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ⅅ-C&@@kTXCr~8Je4B62>h%7;O{;v8>%7=y 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 DS?roZ literal 0 HcmV?d00001 diff --git a/source_docs/technical_solutions/新人礼技术方案.docx b/source_docs/technical_solutions/新人礼技术方案.docx new file mode 100644 index 0000000000000000000000000000000000000000..3894d2289be7db297d3db53621d35f501770a58b GIT binary patch literal 358398 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 ?XcO%AYxs`Fr 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 (bRJ82V0Zzp!q+I@WL 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 aa*~1!{A>LD5kZ(xIIj^s^Lhvr)PDi`qtB86 literal 0 HcmV?d00001 diff --git a/操作手册.md b/操作手册.md new file mode 100644 index 0000000..a6dc669 --- /dev/null +++ b/操作手册.md @@ -0,0 +1,460 @@ +# QA Automation Hub 操作手册 + +这份文档不再重复 `README.md` 的快速开始。它只回答三个问题: + +- 这个仓库长期该维护什么 +- 新需求、新业务线、线上事故发生后该怎么回写 +- 哪些文件是资产,哪些只是执行产物 + +基础使用方式、固定输出和常用命令请先看 [README.md](/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/README.md)。 + +## 1. 文档分工 + +- `README.md` + - 面向第一次进入仓库的人 + - 用于说明仓库用途、快速开始、固定输出、关键规则 +- `操作手册.md` + - 面向长期维护仓库的人 + - 用于说明目录职责、知识库维护、需求输入规范、结果治理策略 + +如果一个内容只影响“怎么开始用”,放 `README.md`。 +如果一个内容影响“仓库以后怎么维护”,放 `操作手册.md`。 + +## 2. 目录职责 + +### 长期资产 + +以下目录或文件是团队要持续投入维护的: + +- `requirements/` + - 正式维护版 Markdown 目录 + - 适合已经沉淀成长期维护版本的 `.md` 需求 +- `knowledge_base/` + - 团队长期沉淀的规则、缺陷、经验和案例 + - 决定仓库是否会越用越强 +- `agents/` + - 控制分析、测试点、测试用例、自审的输出风格和约束 +- `.claude/` + - Claude CLI 的入口规则和命令定义 +- `AGENTS.md` + - Codex CLI 的入口规则 +- `scripts/` + - 固定流水线脚本,负责 `prepare / verify / export` + +### 执行产物 + +以下目录默认不作为长期知识维护区: + +- `output/analysis/` +- `output/test_points/` +- `output/test_cases/` +- `output/excel_reports/` +- `output/manifests/` +- `output/normalized_inputs/` +- `output/versions/` + +这些内容的定位是执行结果、回溯样例、排查依据,不应该代替知识库源文件。 + +### 可忽略内容 + +- `.DS_Store` +- `__pycache__/` +- 历史临时 Excel +- 已无参考价值的旧样例产物 + +### `decisions/` + +这里放跨需求冲突的人为确认结论,不放测试产物,不放知识库通用规则。 + +适合放: + +- 子需求与旧需求的关系判定 +- 替代 / 补充 / 并行生效结论 +- 生效范围、失效范围、影响模块 +- 需要回写和重跑的需求列表 + +不适合放: + +- 临时聊天记录 +- 未确认的零散意见 +- 与具体需求无关的通用规则 + +## 3. 知识库怎么维护 + +### `requirements/` + +这里是正式维护版 Markdown 目录,适合已经沉淀成长期维护版本的正式需求文档,不放知识库,不放历史产物。 + +推荐命名: + +```text +requirements/项目名_版本号.md +requirements/order_center_v1.2.md +requirements/member_coupon_v2.0.md +``` + +当前脚本同步正式维护版时,固定使用: + +```text +requirements/{BASE_NAME}.md +``` + +维护建议: + +- 同一主题只保留一个正式维护版文件 +- 不要再派生 `xxx_final.md`、`xxx_最新版.md`、`xxx_20260426.md` +- 如果确实存在多阶段版本差异,用确认单和 `output/versions/` 做追溯,不靠在 `requirements/` 里堆文件名分叉 + +边界要求: + +- `requirements/` 推荐只放 `.md` +- 这里的文件会被 `prepare` 当成可执行输入和关联需求扫描范围 +- 当前推荐由脚本在 `export` 成功后自动同步正式维护版,不再手工复制 raw 文档 +- 如果 `requirements/` 与 `source_docs/requirements_raw/` 同时存在同主题文档,后续关联识别优先使用 `requirements/` 下的维护版 +- 不要把技术方案、接口说明混放进来,否则目录语义会变脏,后续也容易误用 + +### `source_docs/` + +这里放原始输入材料和非直接执行文档。 + +推荐分层: + +- `source_docs/requirements_raw/` + - 原始需求稿,如 `doc`、`docx`、`pdf` +- `source_docs/technical_solutions/` + - 技术方案、接口说明、时序图、数据结构说明等 + +建议原则: + +- 当前主推荐做法是直接使用 `source_docs/requirements_raw/` 下的 `doc`、`docx`、`pdf` 作为 `/case_generate` 输入 +- 如果需求已经沉淀为稳定的长期维护版本,`export` 后会自动同步一份到 `requirements/` +- `prepare` 会自动把原始需求稿和关联技术方案标准化到 `output/normalized_inputs/`,后续分析阶段统一消费标准化文件 +- 原始需求稿和技术方案保留在 `source_docs/`,方便追溯 + +## 3.1 产物版本规则 + +当前产物和历史版本分开管理: + +- 当前最新版始终使用固定文件名 + - `output/analysis/{BASE_NAME}_分析.md` + - `output/test_points/{BASE_NAME}_测试点.md` + - `output/test_cases/{BASE_NAME}_测试用例.md` + - `output/excel_reports/{BASE_NAME}_测试用例.xlsx` +- 历史快照统一放到: + - `output/versions/{BASE_NAME}/v1/` + - `output/versions/{BASE_NAME}/v2/` + - `output/versions/{BASE_NAME}/v3/` + - `output/versions/{BASE_NAME}/VERSION_INDEX.md` + +递增规则: + +- 只在 `export` 成功后检查是否需要新增版本 +- 只有当前分析、测试点、测试用例、manifest、标准化输入、Excel 任一内容相对上一个快照发生变化,才会新增 `vN` +- 如果只是重复导出同一份结果,版本不变 +- `export` 还会自动迁移同一需求下遗留的时间戳 Excel,并把 `output/excel_reports/` 收敛到只保留当前最新版文件 +- 每个需求最多只保留最近 `3` 个版本;新增第 `4` 个及以后版本时,会自动淘汰更早版本 +- 每个 `vN/` 目录下会自动生成 `snapshot_meta.json`,用于标识快照类型 +- `VERSION_INDEX.md` 会汇总每个版本是“完整流水线快照”还是“历史 Excel 导入” + +这样做的目的很明确: + +- 日常使用永远打开固定文件名,不需要在一堆时间戳文件里找最新版 +- 需要回溯时,再到 `output/versions/` 看 `v1/v2/v3` +- 版本只跟“有效产物变化”绑定,不跟每次命令执行绑定 + +如果历史仓库里已经积累了大量旧时间戳 Excel,可以执行一次: + +```bash +python3 scripts/case_pipeline.py migrate-history --all +``` + +这会把旧时间戳 Excel 迁移进对应 `BASE_NAME` 的版本目录,并从 `output/excel_reports/` 清掉旧文件。 + +### `knowledge_base/00_project/` + +这里放项目级差异化约束,当前核心文件是: + +- [project_profile.md](/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/knowledge_base/00_project/project_profile.md) + +这个文件要描述: + +- 项目类型与目标用户 +- 业务边界和禁用能力 +- 项目特有高风险规则 +- 技术依赖和一致性约束 +- 冲突判定口径 + +如果项目画像不维护,后续测试分析和用例会退化成“通用模板输出”。 + +### `knowledge_base/01_standards/` + +这里放稳定规则,不放项目实例。 + +当前职责: + +- `terminology.md` + - 核心商城术语,常驻输入 +- `terminology_optional_saas.md` + - 私域、分销、储值、CRM 等扩展术语 + - 由流水线根据目标需求和项目画像自动识别是否纳入上下文 +- `test_case_template.md` + - 唯一表头、`类型` 枚举、云效导出映射和命名约束规则 +- `definition_of_done.md` + - 测试点与测试用例的完成门禁,用来约束覆盖维度、风险场景、待确认项和评审通过条件 +- `review_checklist.md` + - 测试用例生成前自检和评审阶段的逐项检查清单,用来把完成门禁落成可执行检查项 + +适合继续放进来的内容: + +- 优先级规则 +- 命名规则 +- 非功能清单 +- 缺陷严重度定义 + +### `knowledge_base/02_history/` + +这里放历史问题和团队经验。 + +适合放: + +- 常见漏测场景 +- 历史缺陷 +- 业务线特有规则 +- 已发生过的线上事故防御结论 + +建议做法: + +- 通用内容放公共文件 +- 业务线变多后按模块拆分 +- 一条缺陷至少写清模块、现象、根因、建议防御点 + +### `knowledge_base/03_best_practices/` + +这里放优秀用例范式,不放正式执行结果。 + +用途是告诉 Agent: + +- 什么颗粒度合适 +- 什么写法可执行 +- 什么预期结果是合格的 +- 哪类需求应参考哪类范式,避免把支付类范式直接套到营销活动、后台配置、C 端弹窗领取等不同场景 + +当前建议: + +- `payment_flow_cases.md` + - 支付、收银台、订单支付状态、超时取消、支付失败切换等交易链路 +- `marketing_activity_cases.md` + - 平台端/商家端活动配置、列表管理、状态流转、C 端资格展示、领取防重等营销活动链路 + +## 4. 需求文档输入标准 + +需求文档至少应包含以下内容: + +- 背景 +- 目标 +- 用户角色 +- 功能范围 +- 关键业务规则 +- 主流程 +- 异常流程 +- 非功能要求 +- 不在本期范围 + +以下信息如果缺失,会明显拉低生成质量: + +- 状态流转规则 +- 金额计算口径 +- 优惠互斥或叠加规则 +- 超时与重试规则 +- 权限边界 +- 逆向流程规则 +- 兼容历史逻辑的说明 + +如果某条规则会影响金额、库存、权益、权限、安全或合规,需求里必须写清,不能只靠 Agent 猜。 + +## 5. 结果不理想时先改哪里 + +优先检查输入和规则源,不要先手改 `output/` 结果: + +1. 需求输入是否写清楚;若当前走原始文档流程,先检查 `source_docs/requirements_raw/` 中的原始需求稿 +2. `knowledge_base/` 是否缺规则、缺缺陷、缺历史漏测点 +3. `knowledge_base/00_project/project_profile.md` 是否缺项目差异化信息 +4. `agents/` 的 prompts 是否约束不够 + +只有在确认源信息已经足够时,才去微调 prompts 或脚本。 + +## 5.1 已有需求继续迭代时怎么处理 + +这类场景是当前仓库最容易“看起来能跑,实际上没有完全闭环”的地方。推荐固定按下面的顺序执行: + +1. 保留旧需求文档在 `source_docs/requirements_raw/` 或 `requirements/` +2. 把新子需求放进 `source_docs/requirements_raw/` +3. 把配套技术方案放进 `source_docs/technical_solutions/` +4. 先跑一次正常流程,让 `prepare` 自动生成 `关联与冲突.md` +5. 如果识别到历史相似需求、冲突候选或高风险 `> ⚠️ 待确认`,暂停在确认阶段 +6. 在 `decisions/` 下新增一份确认单 +7. 确认“补充 / 替代 / 并行”关系后,执行 `python3 scripts/case_pipeline.py apply-confirmation --requirement <需求文档路径>` +8. 由脚本按确认单里的重跑列表自动重跑受影响需求,并在 `decisions/applied/` 留存维护说明 + +这里要特别注意: + +- 旧需求如果只留在 `output/versions/`,后续不会再被当成历史需求扫描对象 +- 当前脚本能自动发现候选,但不会自动帮你裁决新旧规则关系 +- 当前脚本已经会因为“冲突或待确认尚未解除”阻断 `verify/export` + +所以,跨需求冲突场景下,`decisions/` 不是可选附件,而是闭环证据。 + +## 5.2 什么情况下必须进入确认阶段 + +出现以下任一情况,建议不要直接把当前产物当最终结论: + +- `关联与冲突.md` 识别到历史相似需求 +- 冲突候选涉及金额、库存、权益、权限、安全、合规 +- 新需求可能替代旧规则,而不是单纯补充子场景 +- 同一对象的状态机、阈值、次数、时效口径发生变化 +- 需求正文或分析结果中出现 `> ⚠️ 待确认` + +建议确认阶段只让人做“拍板”,不要让人重复做机器已经能做的事。人工重点只确认: + +- 关系类型:`补充 / 替代 / 并行` +- 生效范围和失效范围 +- 是否需要同步回写旧需求 +- 是否允许未确认前继续导出 +- 哪些需求需要在确认后重跑 + +## 6. 新项目或新业务线接入 + +每次新项目接入,至少补这几类内容: + +1. 新需求文档优先放进 `source_docs/requirements_raw/`;若已沉淀成稳定 Markdown 版本,也可放进 `requirements/` +2. 项目画像补进 `knowledge_base/00_project/project_profile.md` +3. 相关术语补进 `knowledge_base/01_standards/` + - 核心共性词放 `terminology.md` + - 只在部分项目出现的扩展词优先单独拆文件,由流水线自动识别 +4. 历史缺陷补进 `knowledge_base/02_history/` +5. 易漏测点补进 `knowledge_base/02_history/` +6. 高质量案例补进 `knowledge_base/03_best_practices/` + +不要只放需求文档,不补项目画像和知识库。那样只能得到一次性结果,不能形成可复用资产。 + +## 6.1 确认单怎么写 + +建议统一使用 [decisions/确认结论模板.md](/Users/fangyuehui/Desktop/codeAll/qa-team/qa-automation-hub/decisions/确认结论模板.md)。 + +确认单至少要写清: + +- 当前需求和关联历史需求 +- 关系类型:`补充 / 替代 / 并行` +- 生效范围和失效范围 +- 影响模块、角色、接口或数据口径 +- 最终确认口径 +- 是否需要回写旧需求 +- 需要重跑的需求列表 + +如果确认单里没有“边界”和“重跑范围”,`apply-confirmation` 最多只能安全地重跑当前需求,无法稳定帮你把旧需求一起收敛。 + +## 7. 线上事故或漏测后怎么回写 + +每次线上事故、重大缺陷或明显漏测后,至少做一次回写: + +1. 把缺陷沉淀到 `knowledge_base/02_history/historical_defects.md` +2. 如果属于通用遗漏,补进 `common_missed_scenes.md` +3. 如果属于业务线特有问题,新增或更新对应模块文件 +4. 如果生成逻辑本身没有覆盖到,再补 `agents/` 或 `project_profile.md` + +如果事故没有回写,仓库不会积累能力,只会重复犯同类错误。 + +## 8. 如何控制知识库膨胀 + +知识库变大以后,问题通常不是“内容太多”,而是“内容混乱”。 + +建议遵守这几个原则: + +- 一个文件只讲一类东西,不混规则、缺陷、样例 +- 文件名要能直接看出业务范围 +- 通用内容和项目内容分开 +- 样例产物不要反向混入长期规则 +- 出现 30 到 50 条以上同类内容时,考虑按模块拆分 + +## 9. 样例与产物怎么处理 + +代表性样例产物可以少量保留,用于: + +- 跑通演示 +- 格式参考 +- 新成员理解输出结构 + +但不要把 `output/` 当唯一真相。真正要维护的是需求、知识库、prompts 和脚本。 + +如果后续历史样例过多,可以只保留: + +- 1 份代表性需求 +- 1 套代表性分析/测试点/测试用例 +- 少量高价值 Excel 导出样例 + +## 10. 日常维护原则 + +平时最重要的不是反复改产物,而是维护好这些源头: + +- `source_docs/requirements_raw/` +- `source_docs/technical_solutions/` +- `requirements/` +- `knowledge_base/` +- `knowledge_base/00_project/project_profile.md` +- `agents/` + +补充原则: + +- Markdown 用例是内部高质量源格式,允许保留 `测试数据`、`备注` 等细粒度字段 +- Excel 导出默认对齐团队云效字段模型,`测试数据` 会自动并入 `步骤描述` +- 如果团队平台字段模型发生变化,优先更新 `test_case_template.md` 和 `scripts/export_excel.py` +- `requirements/` 目录只保留正式维护版 Markdown,不保留 Finder 缓存、临时副本或手工导出的重复文件 + +一句话原则: + +先改输入和规则源,再改 prompts,最后才考虑改执行结果。 + +## 11. 流程治理检查 + +仓库内已提供低频治理脚本: + +```bash +python3 scripts/governance_audit.py auto +``` + +这项检查只应在以下类型改动后触发: + +- 流程脚本改动:`scripts/` +- CLI 入口规则改动:`AGENTS.md`、`.claude/` +- prompts 改动:`agents/` +- 标准规范改动:`knowledge_base/01_standards/` +- 仓库入口文档改动:`README.md`、`操作手册.md` + +这项检查不会因为以下普通内容更新自动触发: + +- `requirements/` 下新增或修改需求 +- `knowledge_base/02_history/` 的历史缺陷、易漏场景更新 +- `knowledge_base/03_best_practices/` 的案例补充 +- `output/` 下的执行产物变化 + +这项检查的目的有两个: + +- 检查 `Codex CLI` 和 `Claude CLI` 的流程是否仍然一致 +- 检查 `README.md` 和 `操作手册.md` 是否落后于当前实现 + +## 12. 当前流程缺口与下一步实现建议 + +如果你希望后续真正满足“自动识别冲突、人工确认、确认后自动续跑”的闭环,还需要继续补脚本能力。当前最值得补的点是: + +1. 增加回写到需求源文件的能力 + - 当前已支持写到 `decisions/applied/` 维护说明,但不会直接修改原始 `docx/md` +2. 增加更细粒度的门禁级别 + - 例如把“仅弱关联提示”和“高风险必须阻断”分开 +3. 增加确认单结构化校验 + - 避免只有一句“已确认”,却没有写清边界、影响范围和重跑列表 + +在这些能力落地前,当前最稳的工作方式仍然是: + +- 机器负责识别、汇总、出建议 +- 人负责最终裁决 +- 人再触发受影响需求的重跑 diff --git a/项目简介.md b/项目简介.md new file mode 100644 index 0000000..541950a --- /dev/null +++ b/项目简介.md @@ -0,0 +1 @@ +qa-automation-hub 是一条面向测试团队的需求到测试用例自动化流水线,只要把需求文档放进 `source_docs/requirements_raw/`、把同主题技术方案放进 `source_docs/technical_solutions/`,再在 CLI 输入 `/case_generate source_docs/requirements_raw/你的需求.docx`,就会自动结合项目画像和技术方案生成测试分析、测试点、测试用例和 Excel。

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