Files
workutils/docs/superpowers/specs/2026-08-05-ai-test-plugin-ui-optimization-design.md
T
2026-08-05 11:01:08 +08:00

97 lines
5.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 单测插件完整 UI 优化设计
## 目标
将 AI 单测插件从纵向堆叠的 Accordion 页面重构为清晰的四区 Tab 工作台,降低首屏密度,改进 JDK/Maven 路径选择、模块加载反馈和任务进度展示,同时保持已经验证的显式 Git 增量范围与异步防覆盖逻辑。
## 范围
本次仅调整 AI 单测插件的 JavaFX 界面组织和相关交互状态,不修改 CodeFree CLI 协议、Maven/JUnit5 执行规则、85% 增量覆盖率规则、质量规范格式、历史数据格式或本地分支合并安全检查。
## 页面结构
插件顶部保留标题与简短能力说明,主体改为一个不可关闭的主 `TabPane`:
1. `项目与增量`
2. `工具链`
3. `质量规范`
4. `结果与合并`
主 Tab 不嵌套 Accordion。各页使用统一的内容边距和纵向间距,表单标签与输入控件对齐,避免控件在宽屏下无限拉伸。
### 项目与增量
- 第一行选择项目和生成模块。
- 第二行填写基线分支/Commit和目标分支/Commit。
- 基线默认 `master`;目标默认 `HEAD`,用户可以填写 `DEV_1156339215001460262` 或任何有效分支/Commit。
- “包含未提交改动”作为独立选项放在增量范围下方。
- 项目变化后立即清空旧模块并显示局部加载状态。
- 模块加载成功后显示总模块数,例如“已检出 11 个 Maven 模块”。
- 若只有一个 artifactId 以 `-start` 结尾,自动选中;存在多个时不擅自选择,并提示用户手动选择。
- `ft-loancapital-core` 的真实场景应检出并可选择 `ft-loancapital-core-start`。
- 继续使用 `LatestRequestGate`:较早项目请求的成功或失败结果不得覆盖最新项目选择。
### 工具链
- JDK 8 Home 与 Maven Home 使用只读路径框和“选择目录”按钮。
- 目录选择器初始目录优先使用当前已保存且存在的路径;否则从用户目录开始。
- 选择目录后仅更新表单,不自动执行验证;用户点击“检查并保存工具链”后统一验证并持久化。
- CodeFree 命令保留可编辑,默认 `codefree`。
- 覆盖率目标与最大修复轮次保留当前 Spinner。
- 工具链状态使用文字和颜色表达“未检查、可用、检查失败”,失败详情写入运行日志。
### 质量规范
- 默认质量规范与当前项目规范左右分栏。
- 两个文本区都可编辑,具有独立标题和说明。
- 保存按钮位于页面底部;保存行为和文件位置保持不变。
### 结果与合并
- 页面上方放置“分析增量、生成并验证、取消”三个任务按钮。
- 中部保留二级结果 Tab:生成文件、覆盖率、运行日志、历史摘要。
- 下方放置审核与合并区:目标本地分支、提交信息、人工审核复选框和合并按钮。
- 分析成功后才允许生成;验证通过并完成审核后才允许合并;任务运行时禁用冲突操作。
## 进度与异步状态
- 应用打开和初始配置加载期间不显示全局旋转进度条。
- 空闲时进度条隐藏且不占据误导性的视觉注意力,状态文字仍可见。
- 仅分析、生成、Maven 验证和合并等用户主动任务进入 busy 状态时显示进度条。
- busy 结束后进度条隐藏并重置,下一次任务从干净状态开始。
- 项目模块加载使用项目页内的状态文字,不启用全局 busy,也不影响其他 Tab 浏览。
- 模块偏好保存为静默后台操作,不触发全局进度条;失败写入日志。
## Git 增量兼容性
- `GitIncrementAnalyzer` 继续使用显式 `baseline` 和 `targetRef`,不得恢复为隐式比较当前 `HEAD`。
- 临时 worktree 继续从 `targetRef` 创建,保证 AI 读取的是目标分支源码。
- 示例 `master...DEV_1156339215001460262` 不是硬编码;用户可替换任意有效引用。
- 只有目标引用解析到当前 `HEAD` 时才允许叠加未提交改动。
## 错误处理与可访问性
- 目录选择器取消时不修改现有路径。
- 无效项目、POM 解析失败、模块为空和工具链失败都显示明确中文状态,并在日志保留详情。
- 所有图形或简写按钮必须提供 Tooltip 和 accessible text;目录选择按钮使用可读文字,不使用无标签图标。
- Tab、输入框、目录按钮和任务按钮均保持标准键盘焦点顺序。
## 代码边界
- `AiTestPane` 负责页面组合和事件绑定。
- 新增小型目录选择辅助组件,封装只读路径框、选择按钮和 `DirectoryChooser` 行为,避免 JDK/Maven 重复实现。
- 新增纯状态模型或辅助方法管理进度条可见性与模块加载文案,使关键交互可以脱离 JavaFX 场景做单元测试。
- 不改动其他插件页面或公共导航栏。
## 验证标准
- 架构测试确认主界面只有四个指定主 Tab,不再使用 Accordion。
- 目录选择组件测试确认路径框只读、取消不改值、选择后更新值。
- 状态测试确认初始/空闲隐藏进度,主动任务显示,完成后隐藏并重置。
- 模块测试确认唯一 `-start` 自动选中、多个 `-start` 要求手选,并显示模块数。
- 真实 `ft-loancapital-core` 回归继续检出 `ft-loancapital-core-start`。
- 异步竞态测试继续确认只有最新项目请求能更新结果。
- `master...DEV_1156339215001460262` 真实增量回归继续通过。
- 运行 AI 插件聚焦测试、Maven 全量测试、JAR 打包和 `git diff --check`。