规划公共 UI 基础能力收尾

This commit is contained in:
张家训
2026-07-31 19:08:42 +08:00
parent 3ca7e24100
commit 6fe37bf941
2 changed files with 318 additions and 1 deletions
@@ -90,7 +90,7 @@ API 文档、Scanner、MyBatis SQL 导出删除各自的 `openFile`、`openWithN
- `ScanProgress`:正文不可为空;进度必须是 `-1`(不确定)或 `[0, 1]`。
- `SqlExportProgress`:`current`、`total`、`recordCount` 不得为负,`current` 不得大于 `total`,项目名不可为空;`fraction()` 保持在 `[0, 1]`。
DTO 只表达领域进度。窗口通过小型纯函数把 DTO 转换为 `OperationSnapshot` 所需的 message 和 fraction,转换函数独立测试。
DTO 只表达领域进度,并提供展示所需的稳定 message/fraction。用例把 DTO 值报告给 `OperationContext`,窗口不再重复拼接进度文案;DTO 的边界和展示结果独立测试。
Scanner 没有中断协议,保持不显示停止按钮。MyBatis SQL 导出已经通过 `ExportCallback.isCancelled()` 在项目边界读取 `OperationContext.isCancellationRequested()`,属于真实的协作式取消,因此保留停止按钮。测试必须证明取消请求能传递到回调,且界面只在运行阶段显示停止按钮。