docs: define AI test plugin UI optimization
This commit is contained in:
@@ -0,0 +1,96 @@
|
|||||||
|
# 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`。
|
||||||
|
|
||||||
Reference in New Issue
Block a user