From d214a4621dc06baeb0374af3609b04f54b587cd2 Mon Sep 17 00:00:00 2001 From: stephenzhou-98 Date: Thu, 28 May 2026 15:16:50 +0800 Subject: [PATCH 1/5] #AI commit# feat: consolidate test-code-generator to v4.4, completely delegating E2E testing to frontend-dynamic-tester --- .claude/skills/test-code-generator/SKILL.md | 265 ++++++-------------- .version-lock.json | 17 +- 2 files changed, 89 insertions(+), 193 deletions(-) diff --git a/.claude/skills/test-code-generator/SKILL.md b/.claude/skills/test-code-generator/SKILL.md index 0815c246..d557882f 100644 --- a/.claude/skills/test-code-generator/SKILL.md +++ b/.claude/skills/test-code-generator/SKILL.md @@ -1,11 +1,15 @@ --- name: test-code-generator type: testing -description: 基于Cucumber BDD的自动化测试代码生成专家,支持前端E2E测试、前端单元测试、Claude开发测试和全量回归测试代码生成 -version: 4.3 +description: 基于Cucumber BDD的自动化测试代码生成专家,支持后端单元测试、接口测试、前端单元测试、Claude开发测试 and 全量回归测试代码生成 +version: 4.4 author: DevSyncAgent Team -last_updated: 2026-05-27 +last_updated: 2026-05-28 changelog: + v4.4 - 2026-05-28 + - ❌ 彻底移除前端 E2E Playwright 直接生成、依赖注入及元素定位器映射等冗余逻辑,全面托管至 frontend-dynamic-tester 动态探索与录制流 + - 🆕 新增测试代码与测试用例对应关系存储机制(testCodeMappings 写入 test-status.json) + - 🆕 支持在测试用例文档(_测试用例.md)中回写测试代码的路径映射(**测试代码路径**) v4.3 - 2026-05-27 - 🆕 新增属性感知测试案例文档路径检测(优先读取{功能名}_前端测试案例.md或{功能名}_后端测试案例.md,回退到{功能名}_测试用例.md) - 引用配置:design-doc-rules.json(splitOutputRules) @@ -119,7 +123,6 @@ changelog: | **单元测试** | 为核心方法生成单元测试(含Mock) | | **性能测试** | 生成压力测试和负载测试脚本 | | **全量回归测试** | 基于知识库Feature文件生成全量回归测试代码 | -| **前端E2E测试** | 支持Playwright前端测试代码生成 | | **前端单元测试** 🆕 | 支持Jest/Vitest组件测试代码生成 | | **Claude开发测试** | 检测Claude Agent/Skill/Command开发需求 | | **源代码方法索引** | 扫描src目录构建类/方法索引 | @@ -137,7 +140,7 @@ changelog: > 📝 **属性感知路径检测** 🆕v4.3:当测试案例按功能属性拆分时,优先读取属性独立文档: > - 后端测试代码生成 → 优先 `docs/{branch}/testing/{功能名}_后端测试案例.md`,回退到 `{功能名}_测试用例.md` - > - 前端E2E测试代码生成 → 优先 `docs/{branch}/testing/{功能名}_前端测试案例.md`,回退到 `{功能名}_测试用例.md` + > - 前端 UI 测试(托管) → 优先从 `docs/{branch}/testing/{功能名}_前端测试案例.md`(或 `_测试用例.md`)读取,用于 Step 5.4 自动化路径回写 > - 数据测试代码生成 → 优先 `docs/{branch}/testing/{功能名}_数据测试案例.md`,回退到 `{功能名}_测试用例.md` 3. **项目源代码**(必须):已实现的功能代码 4. **项目上下文**:`project-context.json` @@ -430,35 +433,6 @@ fi ``` -### 0.2.4 Java项目 - 检测并引入Playwright 🆕 - -**检测Playwright依赖**: - -```bash -# 检查是否已存在Playwright依赖 -if grep -q "com.microsoft.playwright" pom.xml 2>/dev/null; then - echo "✅ Playwright依赖已存在" -else - echo "⚠️ Playwright依赖不存在" - - # 如果检测到前端测试需求,自动添加依赖 - if [ "$FRONTEND_NEEDED" = "true" ]; then - echo "📌 检测到前端测试需求,正在自动添加Playwright依赖..." - fi -fi -``` - -**自动引入Playwright依赖**(Maven)🆕: - -```xml - - - com.microsoft.playwright - playwright - 1.40.0 - test - -``` ### 0.3 Python项目 - 检测并引入behave @@ -656,11 +630,11 @@ fi ## 第0.6步:需求属性识别与前端测试检测 🆕 -**目标**:识别需求是否为前端开发属性,决定是否生成前端E2E测试代码 +**目标**:识别需求是否为前端开发属性,以进行相应的测试流程分流 ### Step 0:从需求文档提取 frontend_type(v4.2新增) -**优先级最高**:如果需求文档中指定了 `frontend_type`,则直接按照该类型分流测试路径,跳过后续检测步骤和用户模式选择。 +**优先级最高**:如果需求文档中指定了 `frontend_type`,则直接按照该类型分流测试路径,跳过后续检测步骤 and 用户模式选择。 ```bash # 从需求文档速览表提取"前端开发类型" @@ -673,14 +647,14 @@ fi case "$FRONTEND_TYPE" in "纯前端") - echo "✅ 纯前端开发,跳过单元/集成测试,直接E2E测试" + echo "✅ 纯前端开发,本 Skill 跳过生成,直接托管至 E2E 动态录制流程" → 跳过测试代码生成步骤(Step 1-4) → 跳过用户测试模式选择(第0.6a步) → 直接调用 /skill frontend-dynamic-tester → 结束本Skill执行 ;; "前端+后台web API") - echo "✅ 前端+后台web API开发,先执行后台API单元/集成测试,再E2E测试" + echo "✅ 前端+后台web API开发,本 Skill 生成后台单元/集成测试,前端托管至 E2E 动态录制流程" → 后台web API部分:生成单元/集成测试代码 → 审查 → 执行 → 前端部分:跳过用户测试模式选择 → 直接调用 /skill frontend-dynamic-tester → 结束本Skill执行 @@ -690,7 +664,7 @@ case "$FRONTEND_TYPE" in → 继续执行 Step 1-4 ;; esac -``` +```,StartLine:630,TargetContent: ### 检测逻辑 @@ -773,27 +747,23 @@ fi **触发条件**:`FRONTEND_NEEDED = true` -### 模式选择流程 +### 模式选择与前端 E2E 托管策略 + +**原则**:为了彻底避免 AI 静态推导对复杂前端页面交互(如动态 DOM、SSO 登录、Canvas 渲染)时发生“定位器不准(Flaky Selector)”和“异步时序错位”的问题,本 Skill **移除了直接静态生成前端 Playwright spec.ts 代码的逻辑**。 + +* **后端功能/接口测试**:继续使用当前 Skill 执行静态代码模式,生成单元测试、Mock 配置或 Cucumber 步骤绑定代码。 +* **前端 UI/E2E 交互测试**:**完全托管给 `frontend-dynamic-tester`**。通过“动态跑一次 $\to$ 录制沉淀 Playwright 代码 $\to$ 提交 Git”的方式生成,本 Skill 仅在 Step 5.4 负责读取这些高可用录制脚本并回写对照映射。 ```mermaid graph TD - A[检测到前端功能需求] --> B{需求属性?} - B -->|后端功能| C[静态代码模式] - B -->|前端功能| D[询问用户选择模式] - D --> E{用户选择?} - E -->|静态代码模式| F[继续生成测试代码] - E -->|动态实时模式| G[转交 frontend-dynamic-tester] - F --> H[test-executor 执行] - G --> I[实时 UI 操作验证] + A[检测到功能需求] --> B{需求属性?} + B -->|后端/接口测试| C[静态代码模式 test-code-generator] + B -->|前端 UI/E2E 测试| D[动态录制沉淀模式 frontend-dynamic-tester] + C --> E[生成 JUnit/pytest/Mock 代码] + D --> F[真机浏览器交互录制 & 沉淀 Playwright 代码] + F --> G[在用例文档中回写对照映射] ``` -### 模式对比 - -| 模式 | 执行方式 | 适用场景 | 后续调用 | -|------|---------|---------|---------| -| **静态代码模式** | 生成Playwright代码,编译后执行 | CI/CD、回归测试、版本控制 | test-executor | -| **动态实时模式** | 实时连接浏览器,直接操作UI | 探索性测试、快速验证、调试 | frontend-dynamic-tester | - ### 询问用户选择 **执行方式**:使用 AskUserQuestion 工具 @@ -801,17 +771,17 @@ graph TD ```javascript AskUserQuestion({ questions: [{ - question: "检测到前端功能测试需求。请选择测试执行模式:", - header: "测试模式", + question: "检测到测试用例包含前端 UI / E2E 交互。请选择测试生成模式:", + header: "测试模式分流", multiSelect: false, options: [ { - label: "静态代码模式(推荐)", - description: "生成 Playwright 测试代码,由 test-executor 执行。适合 CI/CD、回归测试、需要版本控制的场景。" + label: "后端逻辑与集成测试生成", + description: "由 test-code-generator 生成后端单元测试、接口 curl 脚本及 BDD Steps 胶水代码。" }, { - label: "动态实时模式", - description: "直接调用 frontend-dynamic-tester 实时操作浏览器。适合探索性测试、快速验证、调试场景。" + label: "动态 UI 录制与沉淀(推荐)", + description: "调用 frontend-dynamic-tester 打开真机浏览器,录制精准的 Playwright 用例资产并自动沉淀。" } ] }] @@ -820,41 +790,23 @@ AskUserQuestion({ ### 用户选择后的处理 -**选择"静态代码模式"**: -- 继续执行当前 SKILL 的后续流程 -- 生成 Playwright 测试代码 -- 最终由 test-executor 执行 +**选择“后端逻辑与集成测试生成”**: +- 继续执行当前 SKILL 的后续流程,生成后端测试文件。 -**选择"动态实时模式"**: -- 输出以下提示信息并终止当前流程: +**选择“动态 UI 录制与沉淀”**: +- 引导用户运行 `frontend-dynamic-tester`,并终止当前 Skill 的前端 UI/E2E 流程: ```markdown -## 🔄 切换到动态实时测试模式 - -您选择了动态实时测试模式,将使用 `frontend-dynamic-tester` skill 执行测试。 - -### 后续步骤 +## 🔄 转交至动态 UI 录制与沉淀流程 -请调用以下命令启动动态测试: +您选择了动态 UI 录制模式,为了确保元素定位的 100% 准确性,请调用 `frontend-dynamic-tester` 进行页面探索与录制: -\`\`\` +``` /skill frontend-dynamic-tester -\`\`\` - -### 需要准备的信息 - -1. **测试环境URL**(从 deployment-config.json 读取或手动提供) -2. **认证方式**(支持 Cookie / 用户名密码 / 无需认证) -3. **Feature文件路径**:`{feature文件路径}` - -### 两种模式对比 +``` -| 特性 | 静态代码模式 | 动态实时模式(当前选择) | -|-----|-------------|----------------------| -| 测试代码 | ✅ 生成并保存 | ❌ 不生成 | -| 版本控制 | ✅ 可纳入Git | ❌ 一次性执行 | -| 执行速度 | 较慢(需编译) | 快速(直接执行) | -| 适用场景 | CI/CD、回归 | 探索、调试 | +### 录制完成后 +录制沉淀出的 `*.spec.ts` 脚本将自动保存至 `src/test/playwright/`。再次运行 `test-code-generator` 时,它将自动在 `_测试用例.md` 中回写该自动化测试代码的物理路径映射。 ``` --- @@ -1276,86 +1228,6 @@ AskUserQuestion({ } ``` -### Playwright定位器映射 - -| 澄清配置字段 | Playwright API | 示例 | -|------------|---------------|------| -| `type=testId` | `getByTestId()` | `page.getByTestId("username")` | -| `type=placeholder` | `getByPlaceholder()` | `page.getByPlaceholder("用户名")` | -| `type=ariaLabel` | `getByLabel()` | `page.getByLabel("用户名")` | -| `type=text` | `getByText()` | `page.getByText("登录")` | -| `type=name` | `locator('[name=]')` | `page.locator('[name="username"]')` | -| `type=selector` | `locator()` | `page.locator("#login-btn")` | - -### 应用澄清配置生成测试代码 - -```bash -# 读取澄清配置并生成Playwright代码 -apply_clarification_config() { - local config_file="$1" - - if [ ! -f "$config_file" ]; then - echo "⚠️ 澄清配置文件不存在,使用默认模板" - return 1 - fi - - # 解析环境配置 - BASE_URL=$(jq -r '.environment.baseUrl' "$config_file") - LOGIN_PATH=$(jq -r '.environment.loginPath' "$config_file") - AUTH_TYPE=$(jq -r '.environment.authType' "$config_file") - - # 解析元素定位配置 - USERNAME_LOCATOR=$(jq -r '.elementLocator.usernameInput.primary' "$config_file") - PASSWORD_LOCATOR=$(jq -r '.elementLocator.passwordInput.primary' "$config_file") - LOGIN_BTN_LOCATOR=$(jq -r '.elementLocator.loginButton.primary' "$config_file") - - # 生成Playwright定位代码 - generate_playwright_locators "$config_file" - - echo "✅ 已应用澄清配置生成测试代码" -} -``` - -### DevTools能力说明 - -澄清问题基于Chrome DevTools能力设计: - -| DevTools能力 | 澄清阶段 | 收集的信息 | -|-------------|---------|-----------| -| **地址栏** | 环境信息 | 基础URL、登录路径 | -| **Elements面板** | 元素定位 | data-testid、placeholder、aria-label等属性 | -| **Recorder面板** | 操作链路 | 完整的点击、输入、导航步骤 | -| **Network面板** | 特殊处理 | 认证方式、API Mock需求 | -| **Console** | 特殊处理 | 验证码绕过、动态加载检测 | - -### 跳过澄清的条件 - -以下情况跳过澄清流程: - -- `FRONTEND_NEEDED=false`(非前端测试) -- 澄清配置文件已存在(避免重复澄清) -- 用户手动提供 `--skip-clarification` 参数 - -### 检测结果输出 - -```markdown -## 测试代码生成澄清结果 🆕v3.9 - -| 检测项 | 结果 | -|-------|-----| -| 前端测试需求 | ✅ 是 | -| 澄清执行状态 | ✅ 完成 | -| 澄清类型 | 前端功能测试 | -| 生成配置文件 | test-clarification-config.json | - -**关键配置摘要**: -- 基础URL: https://data-platform.example.com -- 认证方式: 用户名密码登录 -- 用户名定位: getByPlaceholder('用户名') -- 密码定位: 自动识别 type='password' -- 登录按钮: getByText('登录') -- 动态加载: 等待Loading消失 -``` --- @@ -2096,21 +1968,7 @@ public class CucumberRunnerTest { } ``` -### 2.3 生成前端UI测试步骤类 🆕 - -**触发条件**:`FRONTEND_NEEDED = true` - -**生成路径**:`src/test/java/{package}/cucumber/steps/WebUISteps.java` - -**模板内容**:参考 `.claude/templates/testing/webui-steps.java` - -### 2.3b 生成Playwright E2E测试(Go项目)🆕 - -**触发条件**:`PROJECT_TYPE = "go"` 且 `FRONTEND_NEEDED = true` -**生成路径**:`{FRONTEND_FOUND}/e2e/` - -**模板路径**:`.claude/skills/test-code-generator/templates/playwright/` ### 2.4 生成godog Step Definitions(Go项目)🆕 @@ -2713,6 +2571,36 @@ fi --- +### 5.4 回写测试代码路径映射到测试用例文档 🆕v4.2 + +**目标**:将生成的自动化测试代码路径回写到用例文档 `docs/{branch}/testing/{功能名}_测试用例.md` 中,使得测试用例与测试代码路径形成显式映射。 + +**执行策略**: +1. **解析用例文档**:扫描 `docs/{branch}/testing/{功能名}_测试用例.md`,使用正则或词法匹配定位所有的测试用例标识(如 `### TC001:`、`### TC010:`)。 +2. **构建映射字典**:根据本次生成测试代码时的输出路径,自动构建用例 ID 到文件相对路径的映射: + - 单元测试/Mock测试方法 -> 映射到对应的单元测试文件路径,如 `src/test/java/unit/com/example/controller/UserControllerTest.java` + - BDD 步骤场景 -> 映射到对应的 Step Definitions 和 Runner 文件路径,如 `src/test/java/cucumber/steps/UserLoginSteps.java` + - 接口集成测试场景 -> 映射到对应的 `remote-api-test.sh` 脚本路径 + - 性能测试场景 -> 映射到对应的压测脚本路径 +3. **回写文档内容**: + - 对每一个匹配到的用例小节,在小节末尾(如在“覆盖场景”或“优先级”字段之后)检测是否已存在 `**测试代码路径**` 字段。 + - 若不存在,自动追加 `**测试代码路径**:[文件名](file:///{项目绝对路径}/{相对文件路径})`。 + - 若已存在且路径不一致,进行增量更新或追加,避免覆盖已手动建立的映射。 +4. **输出总结对照表**: + - 在用例文档的末尾,自动追加或更新“## 自动化测试代码对照表”章节,以 Markdown 表格形式汇总展示所有映射关系,便于人工审计与自动化流程读取。 + +**回写格式示例**: +```markdown +### TC001:UserController.create() - 正常创建用户 +... +**优先级**:P0 +**测试类型**:单元测试 +**覆盖场景**:关键路径 - 正常流程 +**测试代码路径**:[UserControllerTest.java](file:///C:/Users/stephenzhou/IdeaProjects/dev-sync-agent/src/test/java/unit/com/example/controller/UserControllerTest.java) +``` + +--- + ## 第5.5步:代码与脚本合法性验证 🆕v3.9 **目标**:验证生成的测试代码和脚本能够成功编译/执行,确保代码和脚本合法性 @@ -3523,7 +3411,16 @@ STATUS_FILE="dev/active/{task-name}/test-status.json" "testCasesGenerated": true, "testCodeGenerated": true, "lastGenerated": "2026-03-10T10:30:00Z", - "generatedAt": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" + "generatedAt": "$(date -u +"%Y-%m-%dT%H:%M:%SZ")", + "testCodeMappings": { + "TC001": [ + "src/test/java/cucumber/steps/BubbleSortSteps.java", + "src/test/java/com/example/service/BubbleSortServiceTest.java" + ], + "TC010": [ + "tests/scripts/remote-api-test.sh" + ] + } } ``` diff --git a/.version-lock.json b/.version-lock.json index d4a4ae4b..dfe8af26 100644 --- a/.version-lock.json +++ b/.version-lock.json @@ -1,7 +1,7 @@ { "schema_version": "3.0", "current_version": "4.6", - "release_date": "2026-05-27", + "release_date": "2026-05-28", "status": "development", "agents": { "requirement": { @@ -239,8 +239,8 @@ "last_modified": "2026-02-08" }, "test-code-generator": { - "version": "4.3", - "last_modified": "2026-05-27" + "version": "4.4", + "last_modified": "2026-05-28" }, "test-code-reviewer": { "version": "1.1", @@ -268,7 +268,7 @@ "other": { "dev-sync-agent-help": { "version": "4.5", - "last_modified": "2026-05-15" + "last_modified": "2026-05-27" }, "git-commit": { "version": "3.6", @@ -308,8 +308,7 @@ "3.9": 2, "4.0": 5, "4.1": 1, - "4.3": 1, - "4.4": 1, + "4.4": 2, "4.5": 1, "4.6": 2 }, @@ -636,7 +635,7 @@ "skill", "other", "test-code-generator", - "4.3" + "4.4" ], [ "skill", @@ -693,14 +692,14 @@ "1.0" ] ], - "total_versions": 22 + "total_versions": 21 }, "metadata": { "total_agents": 32, "total_skills": 25, "total_commands": 6, "total_components": 63, - "total_versions": 22, + "total_versions": 21, "last_release": "4.5", "last_release_date": "2026-05-15" }, -- Gitee From 7ce7db796c9bc4e16b90d4d9c87762fdd71cf6d6 Mon Sep 17 00:00:00 2001 From: stephenzhou-98 Date: Thu, 28 May 2026 15:27:58 +0800 Subject: [PATCH 2/5] #AI commit# chore: truncate changelogs of all skills to keep only the last 5 versions --- .../skills/frontend-dynamic-tester/SKILL.md | 18 ----- .../skills/functional-test-generator/SKILL.md | 32 -------- .claude/skills/test-code-generator/SKILL.md | 76 ------------------- 3 files changed, 126 deletions(-) diff --git a/.claude/skills/frontend-dynamic-tester/SKILL.md b/.claude/skills/frontend-dynamic-tester/SKILL.md index 54ff2b8c..fd1c90f7 100644 --- a/.claude/skills/frontend-dynamic-tester/SKILL.md +++ b/.claude/skills/frontend-dynamic-tester/SKILL.md @@ -17,24 +17,6 @@ changelog: - 🆕 新增 `right_click` 命令:支持 Playwright 原生右键点击,用于触发网页自定义的上下文菜单(Context Menu)。 v4.0 - 2026-04-20 - 🆕 新增 `extract_auth_state` 命令:一键提取当前页面的完整 Cookie、LocalStorage 和 SessionStorage,支持供 LLM 读取并用于后续的会话保持或接口自动化测试。 - v3.9 - 2026-04-16 - - 🆕 新增对 Web SSH 终端 (Canvas渲染引擎) 的全面支持 - - 🆕 增加 `terminal_exec` 命令:模拟物理键盘在终端中打字并回车执行 - - 🆕 增加 `read_terminal` 命令:通过底层 WebSocket 劫持,完美读取终端服务器返回日志 - - 🆕 增加 `keyboard_press` 命令:支持发送特殊按键 (如 Enter, Tab, Control+C 等) - v3.8 - 2026-03-27 - - 🆕 新增 Cookie 认证支持,与 test-code-generator 保持一致 - - 🆕 新增 `inject_cookies`、`export_cookies`、`list_cookies` 命令 - - 🔧 支持 SSO 单点登录场景(通过 Cookie 注入绕过登录页) - - 🔧 支持 JSON 文件和命令行两种 Cookie 传入方式 - v3.7 - 2026-03-26 - - 🆕 增加多标签页(Tabs)自动追踪支持与 `close_tab` 销毁机制 - v3.6 - 2026-03-26 - - 🆕 配置读取源切换至 `.claude/config/deployment-config.json`,统一全局环境配置 - v3.5 - 2026-03-26 - - 🆕 强制前置读取配置规范,实现环境解耦与断点询问机制 - v3.4 - 2026-03-26 - - 🆕 强化 UI-Only 护栏,自动跳过纯后端(数据库/API)验证步骤 --- # 前端动态自动化测试执行 Skill diff --git a/.claude/skills/functional-test-generator/SKILL.md b/.claude/skills/functional-test-generator/SKILL.md index 167c9fdc..3ebab980 100644 --- a/.claude/skills/functional-test-generator/SKILL.md +++ b/.claude/skills/functional-test-generator/SKILL.md @@ -44,38 +44,6 @@ changelog: - 🆕 支持双格式输出(Markdown文档 + Feature文件) - 🔄 同步module-testing-manager v2.2路径变更 - 📁 回归集路径:docs/regression/ → docs/project-knowledge/testing/ - v3.5 - 2026-02-24 - - 🔄 支持前端测试属性传递到automated-test-executor - - 🆕 新增test-status.json的requirementAttribute字段 - - 🆕 新增前端测试用例格式模板 - - 🔄 增强需求属性识别结果的持久化 - - ✅ 确保前端开发属性可被下游组件识别 - v3.4 - 2026-02-08 - - 🆕 新增第0.7步:子需求模式检测与处理 - - 🔄 支持DevOps自动循环中的bug fix子需求 - - 🔄 子需求模式:基于父需求测试用例修改/新增,不重新生成 - - 🔄 从cycle-state.json读取parentRequirementId和subRequirementType - - 🔄 标记子需求专属测试用例为【子需求新增】 - - 🔄 测试代码标记@Tag("sub-requirement") - - 🆕 新增第0.1步:检查测试生成状态,避免在DevOps循环中重复生成 - - 🆕 支持从 test-status.json 读取已生成的测试用例文档和代码路径 - - 🆕 添加循环模式下的跳过逻辑 - v3.3 - 2026-01-28 - - 🆕 新增"下一步建议"章节 - - 引导用户调用 /automated-test-executor 进入第5阶段(测试执行) - - 新增Wemind导入文件生成功能 - - 新增需求属性分类(前端/后端/数据开发) - - 新增代码变更分析能力(git diff分析) - - 新增接口定义解析能力(OpenAPI/Swagger/注解) - - 新增静态代码分析和场景推导 - - 支持单元测试和接口测试分类 - v3.2 - 2026-01-16 - - 转换为Claude Code Skill - v2.21 - 2025-01-12 - - 新增第0.1步:项目测试框架摘要提示(方案3分层展示) - - 主编排器已确认上下文,此处仅显示摘要 - v2.20 - 2025-01-04 - - 新增第0.5步:前置文档ready检测 --- # 测试用例生成Skill diff --git a/.claude/skills/test-code-generator/SKILL.md b/.claude/skills/test-code-generator/SKILL.md index d557882f..3421e45e 100644 --- a/.claude/skills/test-code-generator/SKILL.md +++ b/.claude/skills/test-code-generator/SKILL.md @@ -26,82 +26,6 @@ changelog: - 🆕 新增第2.4b节:TypeScript Cucumber Step Definitions生成 - 🐛 修复项目类型检测逻辑:TypeScript后端项目(NestJS/Express+TS)不再被误分类为web-frontend - 🆕 支持NestJS集成测试Step示例(@nestjs/testing + supertest) - v3.9 - 2026-03-27 - - 🔧 新增前端测试模式选择流程(第0.6a步) - - 🔧 后端功能自动走静态代码模式 - - 🔧 前端功能询问用户选择:静态代码模式 or 动态实时模式 - - 🔧 动态实时模式引导用户使用 frontend-dynamic-tester skill - - 🚀 **重大更新**:重构前端测试澄清流程,实现自动化页面分析 - - 🆕 新增 Playwright 自动页面分析能力(低交互成本) - - 🆕 支持 Cookie/Token/用户名密码 三种认证方式 - - 🆕 AI 自动识别登录表单元素并生成候选定位器 - - 🆕 用户一键确认机制,交互次数从10+降低到1-2次 - - 🔧 定位器基于真实页面元素,而非用户凭记忆回答 - - 🐛 修复澄清环节未实际触发的问题 - - 🐛 **重大修复**:前端子目录扫描逻辑统一应用到所有项目类型(Java/Python/Go) - - 🔧 移除"仅Go项目扫描前端子目录"的限制 - - 🆕 新增Spring Boot项目常见前端目录:src/main/resources/static、src/main/resources/templates - - 🆕 新增Django/Flask项目常见前端目录:templates、static - - 🆕 新增第0.6b步:测试代码生成澄清(内嵌流程) - - 🆕 使用Playwright自动页面分析替代手动澄清 - - 🆕 支持前端功能测试澄清(基于Chrome DevTools能力) - - 🆕 预留后端功能测试澄清入口 - - 🆕 支持多阶段澄清(环境→元素定位→操作链路→特殊处理) - - 🆕 生成test-clarification-config.json配置文件 - - 🔧 澄清配置映射到Playwright定位API - - 🚀 **重大更新**:重构前端测试澄清流程,实现自动化页面分析 - - 🆕 新增 Playwright 自动页面分析能力(低交互成本) - - 🆕 支持 Cookie/Token/用户名密码 三种认证方式 - - 🆕 AI 自动识别登录表单元素并生成候选定位器 - - 🆕 用户一键确认机制,交互次数从10+降低到1-2次 - - 🔧 定位器基于真实页面元素,而非用户凭记忆回答 - - 🐛 修复澄清环节未实际触发的问题 - - 🐛 **重大修复**:前端子目录扫描逻辑统一应用到所有项目类型(Java/Python/Go) - - 🔧 移除"仅Go项目扫描前端子目录"的限制 - - 🆕 新增Spring Boot项目常见前端目录:src/main/resources/static、src/main/resources/templates - - 🆕 新增Django/Flask项目常见前端目录:templates、static - - 🆕 新增第0.6b步:测试代码生成澄清(内嵌流程) - - 🆕 使用Playwright自动页面分析替代手动澄清 - - 🆕 支持前端功能测试澄清(基于Chrome DevTools能力) - - 🆕 预留后端功能测试澄清入口 - - 🆕 支持多阶段澄清(环境→元素定位→操作链路→特殊处理) - - 🆕 生成test-clarification-config.json配置文件 - - 🔧 澄清配置映射到Playwright定位API - v3.8 - 2026-03-19 - - 🆕 新增纯前端项目(React/Vue)单元测试支持 - - 🆕 新增Jest/Vitest测试框架模板 - - 🆕 新增前端组件测试代码生成能力 - - 🔧 扩展项目类型检测,支持纯前端项目识别 - - 🔧 新增前端单元测试生成流程(第2.5步) - - 🆕 新增第0.9步:源代码方法索引构建 - - 🆕 新增方法存在性验证机制(生成时验证类/方法是否存在) - - 🆕 新增第5.5步:代码与脚本合法性验证(block模式) - - 🔧 集成测试脚本、性能测试脚本、跨系统配置的合法性验证 - - 🔧 验证失败时阻断流程,提供详细错误报告和修复建议 - - 🆕 新增第0.8步:跨组件需求检测 - - 🆕 支持INTEGRATE类型需求的跨系统测试 - - 🆕 主动询问用户调用模式、测试范围、外部服务地址 - - 🆕 生成cross-system-config.json配置文件 - v3.7 - 2026-03-10 - - 🆕 新增Claude开发测试支持(Agent/Skill/Command) - - 🆕 新增第0.7步:Claude开发需求检测 - - ✅ 与claude-code-developer联动,支持Claude产物测试 - - ✅ 识别dev_target字段判断是否需要Claude测试 - - 🆕 新增第0.9步:源代码方法索引构建 - - 🆕 新增方法存在性验证机制(生成时验证类/方法是否存在) - - 🆕 新增第5.5步:代码与脚本合法性验证(block模式) - - 🔧 集成测试脚本、性能测试脚本、跨系统配置的合法性验证 - - 🔧 验证失败时阻断流程,提供详细错误报告和修复建议 - v3.6 - 2026-03-10 - - 从 automated-test-executor 拆分,专注于测试代码生成 - - 移除测试执行相关功能,移至 test-executor skill - v3.5 - 2026-02-27 - - 继承自 automated-test-executor v3.5 - - 支持Go项目前端E2E测试 - - 支持Mock单元测试模板 - - 支持代码覆盖率报告 - - 支持性能基线确认与读取 - - 支持全量回归测试 --- # 测试代码生成器 Skill -- Gitee From a44a0fe1cdc768ff87a51b2c9488685bbe4164ad Mon Sep 17 00:00:00 2001 From: stephenzhou-98 Date: Thu, 28 May 2026 18:05:33 +0800 Subject: [PATCH 3/5] #AI commit# feat: extract build and deployment flow into a separate project-deployer skill --- .claude/skills/project-deployer/SKILL.md | 159 +++++++++++++++++++++++ .version-lock.json | 16 ++- 2 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 .claude/skills/project-deployer/SKILL.md diff --git a/.claude/skills/project-deployer/SKILL.md b/.claude/skills/project-deployer/SKILL.md new file mode 100644 index 00000000..6c3cfca2 --- /dev/null +++ b/.claude/skills/project-deployer/SKILL.md @@ -0,0 +1,159 @@ +--- +name: project-deployer +type: deployment +description: 项目编译构建与打包部署专家,提供本地编译校验、规范化Git代码安全提交(#AI commit#前缀)、远端Git仓库推送触发CI/CD自动部署以及健康检查状态确认等全闭环能力。 +version: 1.0 +author: DevSyncAgent Team +last_updated: 2026-05-28 +changelog: + v1.0 - 2026-05-28 + - 🆕 初始版本发布。将编译构建校验、规范化提交保存、Git推送远端以及心跳健康检查与部署确认抽象并封装为独立的专业服务。 +--- + +# 项目编译构建与打包部署 Skill (Project Deployer) + +你是项目编译构建与打包部署专家,专注于确保研发产物在提交前经过严格的本地语法与编译校验,并通过标准化的版本控制流提交并推送到远端,触发云端 CI/CD 自动化流水线,最后进行环境健康度的自动化心跳验证与部署状态确认。 + +## 适用场景 + +- 代码开发完毕后,需要进行提交前的本地编译语法拦截校验。 +- 确保代码提交格式严格符合团队规范(携带 `#AI commit#` 标签前缀)。 +- 推送代码至远端 Git 仓库,触发云端流水线进行自动打包、镜像生成与部署。 +- 对部署完成的测试环境进行自动心跳健康检查,或引导用户手动确认部署就绪。 + +## 核心能力 + +| 能力 | 说明 | +|------|------| +| **本地编译校验** | 智能检测项目技术栈,执行轻量级本地编译拦截校验(支持 Maven/Gradle/Go/Python/Node/TS) | +| **Git 代码安全提交** | 自动过滤缓存及构建产物,规范化格式装配并自动生成 `#AI commit#` 标签提交日志 | +| **远端推送触发部署** | 安全检测当前开发分支,智能推送代码至远端仓库,自动激活云端 CI/CD 构建流水线 | +| **部署状态心跳检查** | 读取部署配置,对远端服务地址进行自动的 API 心跳健康度断言与部署就绪确认 | + +--- + +## 📥 输入说明 + +1. **项目类型检测**:自动分析项目根目录下的配置文件(`pom.xml`, `build.gradle`, `go.mod`, `package.json`, `requirements.txt` 等)。 +2. **部署配置读取**:从 `.claude/config/deployment-config.json` 获取远端部署 baseUrl、心跳路径、超时限制等。 +3. **提交元数据**: + - `STAGE`:所处的研发阶段(如“开发”、“自动部署”)。 + - `TYPE`:当前开发类型(`NEW` / `ENHANCE` / `FIX` / `OPTIMIZE` / `REFACTOR` / `INTEGRATE`)。 + - `NAME`:开发的功能模块名称(如 `user-export-excel`)。 + +--- + +## 🎯 核心执行流程 + +### 阶段 1:本地编译校验与语法拦截 + +为防止在版本库中引入破损代码(Broken Builds),在提交前必须执行当前技术栈的编译检查: + +```bash +# 智能检测技术栈并执行编译检查 +if [ -f "pom.xml" ]; then + echo "☕ 检测到 Java Maven 项目,执行测试编译校验..." + mvn test-compile -q +elif [ -f "build.gradle" ] || [ -f "build.gradle.kts" ]; then + echo "🐘 检测到 Java Gradle 项目,执行测试编译校验..." + ./gradlew testClasses -q +elif [ -f "go.mod" ]; then + echo "🐹 检测到 Go 项目,执行编译校验..." + go build ./... +elif [ -f "package.json" ]; then + echo "🟢 检测到 Node/TS 项目,执行编译/语法校验..." + if grep -q '"build"' package.json; then + npm run build + else + echo "跳过编译步骤,直接检查语法" + fi +elif [ -f "requirements.txt" ]; then + echo "🐍 检测到 Python 项目,执行语法校验..." + python -m compileall -q src/ +fi +``` + +> [!CAUTION] +> **编译失败处理**:如果以上本地编译指令输出错误或退出码非 0,**必须立即终止流程**,将详细编译错误输出给 Agent / 用户,要求修复后再重新运行部署。 + +--- + +### 阶段 2:Git 代码规范化安全提交 + +将所有的本地修改进行智能暂存并提交,生成标准规范的提交日志: + +1. **缓存过滤**:在执行 `git add` 前,检查 `git status`,严格确认并忽略构建临时产物及本地配置。 +2. **日志拼接规范**:提交日志必须严格符合以下格式: + ```text + #AI commit# {STAGE}阶段:{TYPE} - {NAME} + ``` +3. **执行提交**: + ```bash + git add <待提交的源文件与测试文件> + git commit -m "#AI commit# {STAGE}阶段:{TYPE} - {NAME}" + ``` + +--- + +### 阶段 3:远程推送触发 CI/CD 自动部署 + +将代码推送到远端,触发远端流水线打包和部署动作: + +1. **分支自动探测**: + ```bash + # 获取当前 Git 分支名称 + CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) + echo "当前开发分支为: $CURRENT_BRANCH" + ``` +2. **推送至远程**: + ```bash + # 推送到追踪的远程分支 + git push origin $CURRENT_BRANCH + ``` +3. **CI/CD 联动**:推送到远端后,远端的 Webhook 将自动激活持续集成系统(如 Jenkins, GitLab CI, GitHub Actions)执行: + * 源码拉取与全量打包(构建 Jar/War 包或 Docker 镜像) + * 将构建出的应用包自动拉起部署至测试服务器上。 + +--- + +### 阶段 4:部署状态确认与心跳健康度检查 + +在代码成功推送后,需要验证远端服务是否已拉起并正常提供业务服务: + +1. **读取部署参数**:从 `.claude/config/deployment-config.json` 中读取: + - `remoteServer.baseUrl`:测试服务器地址(如 `http://localhost:80`) + - `remoteServer.apiBasePath`:API 根路径 + - `deployment.waitTimeout`:部署最长等待超时时间(秒,默认 600 秒) +2. **心跳自动化验证 (自动健康检查)**: + - 发起心跳请求(检测状态码是否为 200): + ```bash + curl -s -o /dev/null -w "%{http_code}" ${BASE_URL}${API_BASE_PATH}/health + ``` + - 若返回非 200,在超时时间内以 10 秒为周期循环重试,直到服务拉起。 +3. **人工确认兜底**: + - 若未配置自动健康度路径,或者自动心跳在超时后仍未成功,使用 `AskUserQuestion` 提示用户在远端 CI/CD 控制台确认部署完毕: + ```javascript + AskUserQuestion({ + questions: [{ + question: "远端持续集成部署已触发,请确认测试环境服务已完全拉起并可以开始测试验证:", + header: "远端部署确认", + multiSelect: false, + options: ["测试环境部署已完成,继续流程", "部署失败,中断流程进行排查"] + }] + }) + ``` + +--- + +## 📤 输出与返回状态 + +部署完毕后,本 Skill 会更新 `test-status.json`(或在内存中更新状态),返回: +```json +{ + "deployStatus": "success", + "deployedBranch": "{CURRENT_BRANCH}", + "remoteUrl": "{BASE_URL}", + "verifiedAt": "2026-05-28T18:00:00Z" +} +``` +完成后,主控流程可以无缝推进到 **第 6 阶段(测试验证)**。 diff --git a/.version-lock.json b/.version-lock.json index dfe8af26..7ded4999 100644 --- a/.version-lock.json +++ b/.version-lock.json @@ -222,6 +222,10 @@ "version": "2.4", "last_modified": "2026-03-04" }, + "project-deployer": { + "version": "1.0", + "last_modified": "2026-05-28" + }, "req-doc-validator": { "version": "1.0", "last_modified": "2026-02-25" @@ -290,7 +294,7 @@ }, "version_statistics": { "statistics": { - "1.0": 13, + "1.0": 14, "1.1": 7, "1.2": 3, "1.3": 1, @@ -607,6 +611,12 @@ "module-testing-manager", "2.4" ], + [ + "skill", + "other", + "project-deployer", + "1.0" + ], [ "skill", "other", @@ -696,9 +706,9 @@ }, "metadata": { "total_agents": 32, - "total_skills": 25, + "total_skills": 26, "total_commands": 6, - "total_components": 63, + "total_components": 64, "total_versions": 21, "last_release": "4.5", "last_release_date": "2026-05-15" -- Gitee From 3927d960453a5673fcb0c6fa40399148da83e0a3 Mon Sep 17 00:00:00 2001 From: stephenzhou-98 Date: Thu, 28 May 2026 18:06:38 +0800 Subject: [PATCH 4/5] #AI commit# chore: remove all heartbeat check references and define strictly manual deployment confirmation --- .claude/skills/project-deployer/SKILL.md | 65 +++++++++++------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/.claude/skills/project-deployer/SKILL.md b/.claude/skills/project-deployer/SKILL.md index 6c3cfca2..0b9fc993 100644 --- a/.claude/skills/project-deployer/SKILL.md +++ b/.claude/skills/project-deployer/SKILL.md @@ -1,25 +1,25 @@ --- name: project-deployer type: deployment -description: 项目编译构建与打包部署专家,提供本地编译校验、规范化Git代码安全提交(#AI commit#前缀)、远端Git仓库推送触发CI/CD自动部署以及健康检查状态确认等全闭环能力。 +description: 项目编译构建与打包部署专家,提供本地编译校验、规范化Git代码安全提交(#AI commit#前缀)、远端Git仓库推送触发CI/CD自动部署以及部署状态人工确认等闭环能力。 version: 1.0 author: DevSyncAgent Team last_updated: 2026-05-28 changelog: v1.0 - 2026-05-28 - - 🆕 初始版本发布。将编译构建校验、规范化提交保存、Git推送远端以及心跳健康检查与部署确认抽象并封装为独立的专业服务。 + - 🆕 初始版本发布。整合本地编译校验、代码规范化提交(#AI commit#)、Git远端推送触发CI/CD以及部署状态的人工交互确认。 --- # 项目编译构建与打包部署 Skill (Project Deployer) -你是项目编译构建与打包部署专家,专注于确保研发产物在提交前经过严格的本地语法与编译校验,并通过标准化的版本控制流提交并推送到远端,触发云端 CI/CD 自动化流水线,最后进行环境健康度的自动化心跳验证与部署状态确认。 +你是项目编译构建与打包部署专家,专注于确保研发产物在提交前经过严格的本地语法与编译校验,并通过标准化的版本控制流提交并推送到远端,触发云端 CI/CD 自动化流水线,最后进行环境部署状态的人工交互确认。 ## 适用场景 - 代码开发完毕后,需要进行提交前的本地编译语法拦截校验。 - 确保代码提交格式严格符合团队规范(携带 `#AI commit#` 标签前缀)。 - 推送代码至远端 Git 仓库,触发云端流水线进行自动打包、镜像生成与部署。 -- 对部署完成的测试环境进行自动心跳健康检查,或引导用户手动确认部署就绪。 +- 等待远端 CI/CD 部署就绪后,引导用户进行人工部署确认。 ## 核心能力 @@ -28,15 +28,14 @@ changelog: | **本地编译校验** | 智能检测项目技术栈,执行轻量级本地编译拦截校验(支持 Maven/Gradle/Go/Python/Node/TS) | | **Git 代码安全提交** | 自动过滤缓存及构建产物,规范化格式装配并自动生成 `#AI commit#` 标签提交日志 | | **远端推送触发部署** | 安全检测当前开发分支,智能推送代码至远端仓库,自动激活云端 CI/CD 构建流水线 | -| **部署状态心跳检查** | 读取部署配置,对远端服务地址进行自动的 API 心跳健康度断言与部署就绪确认 | +| **部署状态人工确认** | 远端 CI/CD 触发后,通过高可用的交互式问答引导用户手动核对并确认服务完全就绪 | --- ## 📥 输入说明 1. **项目类型检测**:自动分析项目根目录下的配置文件(`pom.xml`, `build.gradle`, `go.mod`, `package.json`, `requirements.txt` 等)。 -2. **部署配置读取**:从 `.claude/config/deployment-config.json` 获取远端部署 baseUrl、心跳路径、超时限制等。 -3. **提交元数据**: +2. **提交元数据**: - `STAGE`:所处的研发阶段(如“开发”、“自动部署”)。 - `TYPE`:当前开发类型(`NEW` / `ENHANCE` / `FIX` / `OPTIMIZE` / `REFACTOR` / `INTEGRATE`)。 - `NAME`:开发的功能模块名称(如 `user-export-excel`)。 @@ -116,44 +115,38 @@ fi --- -### 阶段 4:部署状态确认与心跳健康度检查 - -在代码成功推送后,需要验证远端服务是否已拉起并正常提供业务服务: - -1. **读取部署参数**:从 `.claude/config/deployment-config.json` 中读取: - - `remoteServer.baseUrl`:测试服务器地址(如 `http://localhost:80`) - - `remoteServer.apiBasePath`:API 根路径 - - `deployment.waitTimeout`:部署最长等待超时时间(秒,默认 600 秒) -2. **心跳自动化验证 (自动健康检查)**: - - 发起心跳请求(检测状态码是否为 200): - ```bash - curl -s -o /dev/null -w "%{http_code}" ${BASE_URL}${API_BASE_PATH}/health - ``` - - 若返回非 200,在超时时间内以 10 秒为周期循环重试,直到服务拉起。 -3. **人工确认兜底**: - - 若未配置自动健康度路径,或者自动心跳在超时后仍未成功,使用 `AskUserQuestion` 提示用户在远端 CI/CD 控制台确认部署完毕: - ```javascript - AskUserQuestion({ - questions: [{ - question: "远端持续集成部署已触发,请确认测试环境服务已完全拉起并可以开始测试验证:", - header: "远端部署确认", - multiSelect: false, - options: ["测试环境部署已完成,继续流程", "部署失败,中断流程进行排查"] - }] - }) - ``` +### 阶段 4:远端部署状态人工确认 + +在远程持续集成(CI/CD)打包部署指令成功发出后,测试环境拉起需要一定时间,本阶段**必须完全通过与用户的人工交互来安全确认部署结果**: + +1. **引导用户查看控制台**:提示用户在 Jenkins / GitLab CI 控制台观察流水线执行进度。 +2. **发起交互确认**:调用 `AskUserQuestion` 工具,阻断执行流程,直至用户手动核实并确认测试环境已就绪。 + +```javascript +AskUserQuestion({ + questions: [{ + question: "远程持续集成(CI/CD)流水线已成功触发并自动执行。请在部署完成后,确认测试环境已完全就绪,以便开始下阶段的测试验证:", + header: "测试环境部署确认", + multiSelect: false, + options: [ + "(推荐) 远端部署已成功完成,测试环境已就绪", + "远端部署失败,立即终止流程进行排查" + ] + }] +}) +``` --- ## 📤 输出与返回状态 -部署完毕后,本 Skill 会更新 `test-status.json`(或在内存中更新状态),返回: +用户人工确认成功后,本 Skill 会更新 `test-status.json`(或在内存中更新状态),返回: ```json { "deployStatus": "success", "deployedBranch": "{CURRENT_BRANCH}", - "remoteUrl": "{BASE_URL}", - "verifiedAt": "2026-05-28T18:00:00Z" + "confirmationMode": "manual", + "confirmedAt": "2026-05-28T18:00:00Z" } ``` 完成后,主控流程可以无缝推进到 **第 6 阶段(测试验证)**。 -- Gitee From ea085cba7100d00469e319dabee7f13670d06452 Mon Sep 17 00:00:00 2001 From: stephenzhou-98 Date: Thu, 28 May 2026 18:08:21 +0800 Subject: [PATCH 5/5] #AI commit# feat: integrate project-deployer skill into dev-flow command and req-type-classifier orchestrator --- .../agents/requirement/req-type-classifier.md | 60 ++++++++++--------- .claude/commands/dev-flow.md | 7 +-- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/.claude/agents/requirement/req-type-classifier.md b/.claude/agents/requirement/req-type-classifier.md index 2ac3fa70..740995f5 100644 --- a/.claude/agents/requirement/req-type-classifier.md +++ b/.claude/agents/requirement/req-type-classifier.md @@ -115,8 +115,8 @@ changelog: - 🐛 修复auto-deploy阶段未编译验证直接部署的严重问题 - 🆕 auto-deploy阶段新增编译验证步骤(build-verify) - 🆕 新增DevOps自动循环支持(完整10阶段流程) - - 第4阶段:自动部署(git-commit --auto-deploy触发CI/CD) - - 第5阶段:部署确认(用户手动确认部署完成) + - 第4阶段:自动部署(调用 project-deployer Skill,整合编译校验、Git提交与推送) + - 第5阶段:部署确认(测试环境人工就绪交互式确认) - 第9阶段:循环决策(根据测试结果决定是否继续修复bug) - 🔄 循环时返回第1阶段调用req-fix-bug-analyzer生成bug fix子需求 - 🆕 子需求模式:测试阶段基于父需求测试用例修改/新增 @@ -2586,7 +2586,7 @@ BEFORE 调用下游Agent: | 第2.2阶段 | 设计知识同步(可跳过) | module-design-manager | **BIZ API阶段同步**(版本模式时) | | 第3阶段 | 代码开发 | java/python/go-code-developer / **claude-code-developer** | **Stage3-Hook(B4)**: execute_dev_complete_hook + 输出**模板D** + **BIZ API阶段同步** | | 第3.1阶段 | 代码知识同步(可跳过) | module-code-manager | **BIZ API阶段同步**(版本模式时) | -| 第4-5阶段 | 自动部署+确认(可跳过) | git-commit / git-push | **BIZ API阶段同步**(版本模式时) | +| 第4-5阶段 | 自动部署+确认(可跳过) | project-deployer Skill | **BIZ API阶段同步**(版本模式时) | | 第6阶段 | 测试验证 | functional-test-generator | **Stage6-Hook(B5/B5.5)**: execute_test_case_hook + save_testcase_id + 输出**模板E** + **BIZ API阶段同步** | | 第6.1阶段 | 回归测试同步(可跳过) | module-testing-manager | **BIZ API阶段同步**(版本模式时) | | 第7阶段 | 测试执行 | test-code-generator/reviewer/executor | **Stage7-Hook(B6/B7/B7.5)**: execute_test_execution_hook + load_testcase_id + **BIZ API阶段同步** | @@ -2725,26 +2725,24 @@ END IF ``` ## 第4阶段:自动部署 🚀 🆕 【可跳过】 -**推荐步骤**:编译验证 + `git-commit` + `git-push` +**推荐步骤**:调用 `project-deployer` Skill **输出物**: -- 编译验证通过 -- Git提交记录(包含 `#AI commit#` 标签) -- 代码推送到远程仓库 -- CI/CD自动部署触发 +- 本地编译验证通过 +- 规范化 Git 提交(包含 `#AI commit#` 标签)与推送 +- 云端 CI/CD 自动部署被触发 **预计耗时**:2-10分钟 **前置条件**:开发实现已完成 **说明**: -1. **编译验证**:确保代码可以成功编译(支持Maven/Gradle/Python/Go/Node) -2. **提交代码**:通过 `git-commit` 提交代码 -3. **推送部署**:通过 `git-push` 推送到远程仓库,触发CI/CD自动部署 -4. **编译失败处理**:如果编译失败,中止部署流程,提示用户修复错误后重试 +1. **调用 Skill**:调起 `project-deployer` Skill 进行本地编译校验、代码提交与推送。 +2. **本地编译校验**:确保本地修改可以编译成功以实施安全拦截(支持 Maven/Gradle/Go/Python/Node/TS)。 +3. **推送与触发远端 CI/CD**:自动提交代码并推送分支到远端仓库,自动激活测试环境的云端持续集成部署。 **跳过影响**:跳过后需要手动部署,第5阶段(部署确认)也将跳过 ## 第5阶段:部署确认 ⏸️ 🆕 **交互方式**:用户手动确认 -**输出物**:用户确认状态 +**输出物**:用户人工就绪确认状态 **前置条件**:自动部署已触发 -**说明**:等待用户手动确认部署已完成,然后继续执行测试验证 +**说明**:通过交互式 `AskUserQuestion` 组件等待用户手动确认远端部署完成,然后继续测试验证。 ## 第6阶段:测试验证 🧪 **推荐Agent**:`[对应的测试生成Agent名称]` @@ -2978,10 +2976,10 @@ def ask_user_to_skip_step(step): ### 📊 阶段简介 -本阶段执行以下操作: -1. **编译验证**:确保代码可以成功编译(Maven/Gradle/Python/Go/Node) -2. **Git提交**:通过 `git-commit` 提交代码 -3. **推送部署**:通过 `git-push` 推送到远程仓库,触发CI/CD自动部署 +本阶段调用 `project-deployer` Skill 执行以下操作: +1. **本地编译验证**:确保修改可以正常编译通过以实施安全拦截 +2. **Git规范提交**:自动对修改进行规范拼装生成并提交 +3. **远端推送部署**:自动推送分支至远端以触发持续集成流水线 ### ⏱️ 预计耗时 @@ -2989,9 +2987,9 @@ def ask_user_to_skip_step(step): ### 📦 产出物 -- 编译验证通过 -- Git提交记录 -- CI/CD自动部署触发 +- 本地编译验证通过 +- 包含 `#AI commit#` 标签的 Git 提交与远端分支推送 +- 远端持续集成自动部署被触发 ### ⚠️ 跳过影响 @@ -3886,11 +3884,14 @@ END IF 使用AskUserQuestion询问是否执行 IF 用户选择执行 THEN 20a. 🛡️ 调用 mcp__biz-sync__biz_sync_stage(stage=deployment, progress=65, status=running) - 编译验证 → git-commit → git-push - IF 编译失败 THEN 中止部署,提示用户修复 END IF + 调用 project-deployer Skill: + Skill( + skill: "project-deployer", + args: "--stage 自动部署 --type {需求类型} --name {功能名称}" + ) 20b. 🛡️ 调用 mcp__biz-sync__biz_sync_session(content="自动部署完成", stage=deployment, progress=65) - 第5阶段:部署确认(等待用户手动确认部署完成) + 第5阶段:部署确认(等待持续集成就绪后进行人工交互确认) 20c. 🛡️ 调用 mcp__biz-sync__biz_sync_stage(stage=deployment_confirm, progress=70, status=running) 20d. 🛡️ 调用 mcp__biz-sync__biz_sync_session(content="部署确认完成", stage=deployment_confirm, progress=70) ELSE @@ -4131,11 +4132,14 @@ END IF 使用AskUserQuestion询问是否执行 IF 用户选择执行 THEN 🛡️ 调用 mcp__biz-sync__biz_sync_stage(stage=deployment, progress=65, status=running) - 编译验证 → git-commit → git-push - IF 编译失败 THEN 中止部署,提示用户修复 END IF + 调用 project-deployer Skill: + Skill( + skill: "project-deployer", + args: "--stage 自动部署 --type {需求类型} --name {功能名称}" + ) 🛡️ 调用 mcp__biz-sync__biz_sync_session(content="自动部署完成", stage=deployment, progress=65) - 第5阶段:部署确认(等待用户手动确认部署完成) + 第5阶段:部署确认(等待持续集成就绪后进行人工交互确认) 🛡️ 调用 mcp__biz-sync__biz_sync_stage(stage=deployment_confirm, progress=70, status=running) 🛡️ 调用 mcp__biz-sync__biz_sync_session(content="部署确认完成", stage=deployment_confirm, progress=70) ELSE @@ -4662,7 +4666,7 @@ END IF - 阶段2.2: module-design-manager(可跳过) - 阶段3: [java/python/go]-code-developer - 阶段3.1: module-code-manager(可跳过) -- 阶段4-5: git-commit / git-push(可跳过) +- 阶段4-5: project-deployer Skill(可跳过) - 阶段6: functional-test-generator - 阶段6.1: module-testing-manager(可跳过) - 阶段7: test-code-generator + test-code-reviewer + test-executor diff --git a/.claude/commands/dev-flow.md b/.claude/commands/dev-flow.md index dbfa2dfd..f557e225 100644 --- a/.claude/commands/dev-flow.md +++ b/.claude/commands/dev-flow.md @@ -2683,10 +2683,9 @@ cat dev/completed/ssh-operation-log/context.md 4. **多任务管理**:可以同时处理多个任务,每个任务有独立的工作目录 5. **模板适配**:支持自然语言描述,系统会自动提取信息并引导补全 6. **DevOps 自动部署配置**🆕: - - 如需使用自动部署功能,需配置 CI/CD 系统自动触发部署 - - 配置文件:`.claude/config/deployment-config.json`(需修改 baseUrl 为实际远端地址) - - 自动部署流程:开发完成 → git-commit → git-push → CI/CD → 部署确认(用户手动) - - 参考文档:[Jenkins配置示例](#) / [GitLab CI配置示例](#) + - 本项目通过 `project-deployer` Skill 自动化管理编译与部署流程。 + - 自动部署流程:开发完成 → 调用 `project-deployer` Skill(本地编译校验、git-commit、git-push 推送触发云端 CI/CD)→ 用户人工交互式确认部署就绪。 + - 配置文件:`.claude/config/deployment-config.json`(仅用于配置相关凭据或地址) --- -- Gitee