# 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. 增加确认单结构化校验 - 避免只有一句“已确认”,却没有写清边界、影响范围和重跑列表 在这些能力落地前,当前最稳的工作方式仍然是: - 机器负责识别、汇总、出建议 - 人负责最终裁决 - 人再触发受影响需求的重跑