Files
workutils/docs/superpowers/specs/2026-08-05-ai-test-one-click-workflow-design.md
T
2026-08-05 13:52:00 +08:00

55 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 单测一键生成与覆盖率分析设计
## 目标
让用户在“项目与增量”Tab 内完成从增量分析到单测生成、Maven 验证和 JaCoCo 增量覆盖率计算的完整流程,避免任务停在 `ANALYZED` 状态而误以为覆盖率生成失败。
## 交互设计
- “项目与增量”Tab 提供主操作“生成单测并分析覆盖率”。
- 主操作按顺序执行:增量分析、CodeFree 生成单测、Maven 测试编译、Maven/JaCoCo 测试、增量覆盖率计算。
- 保留“仅分析增量”作为次要操作,用于检查增量范围。
- 执行成功后自动展示“结果与合并”Tab,并优先展示覆盖率结果;生成文件仍可在结果区查看。
- 任一阶段失败后自动展示“运行日志”,状态栏说明失败阶段,不将 `ANALYZED` 表示成完整任务成功。
- 工具链 Tab 不在启动或主流程中自动展开、切换或弹出。只有工具链缺失或验证失败时,提示用户进入该 Tab 处理。
## 默认工具链配置
- 用户保存过配置时始终优先使用保存值。
- 没有保存配置或对应路径为空时执行自动探测:
1. JDK 8 优先读取 `JAVA_HOME`,其次根据当前 `java.home` 识别 JDK 根目录;若运行时位于 `jre` 子目录则取父目录。
2. Maven 优先读取 `MAVEN_HOME` 或 `M2_HOME`,其次调用全局 `mvn -version` 并解析 `Maven home:`。
3. CodeFree 使用全局命令 `codefree`。
- 当前 Windows 开发环境的兜底值为:
- JDK 8:`C:\Program Files\Java\jdk-1.8`
- Maven:`D:\bestpay-maven\apache-maven-3.8.6`
- Windows 兜底仅在路径真实存在时使用;macOS/Linux 不写入 Windows 路径,保持跨平台探测。
- 成功探测出的配置保存到现有 `settings.properties`,后续启动直接复用。
## 执行与状态模型
- 复用现有 `AiTestWorkflow.analyze` 与 `generateAndVerify`,由界面层的一键协调方法串联,不复制领域逻辑。
- 第一步返回 `ANALYZED` 时立即进入生成验证;返回 `FAILED` 或 `CANCELLED` 时停止。
- 一键任务从开始到最终状态只维护一次 busy/progress 生命周期,防止两段异步调用之间按钮闪烁或旧结果覆盖新结果。
- 保留现有最新请求保护逻辑;项目切换或重复操作不得用旧异步结果覆盖当前选择。
## 错误处理
- 工具链路径无效时在执行前失败,提示缺失项并定位到工具链配置,而不是启动 CodeFree/Maven 后才失败。
- CodeFree、测试编译、测试执行和覆盖率计算的失败分别保留原始日志,并显示可读阶段信息。
- 覆盖率未生成时明确显示失败原因,不只显示“尚无覆盖率结果”。
## 测试策略
- 配置测试覆盖已保存值优先、环境变量探测、`java.home` 的 `jre` 归一化、`mvn -version` 解析及 Windows 兜底存在性。
- JavaFX 结构测试覆盖第一 Tab 的主/次操作以及工具链 Tab 默认不被选择。
- 协调流程测试覆盖:分析成功后继续生成、分析失败时停止、最终覆盖率被渲染、失败时切换运行日志。
- 回归测试继续使用 `master...DEV_1156339215001460262`,验证 `ft-loancapital-core-start` 的显式目标引用分析不受影响。
## 范围限制
- 不实现 MixMax3。
- 不修改 CodeFree CLI 的协议和现有质量规范格式。
- 不自动合并生成代码;仍需用户审核后显式合并到目标本地分支。
- 不优化“手机 UI 自动化”插件。