53 lines
3.3 KiB
Markdown
53 lines
3.3 KiB
Markdown
# 调整刀序前再检查排序种子
|
||
|
||
## Goal
|
||
|
||
当程序带钻带文件路径启动时,启动菜单必须优先出现;排序种子文件的检查和提示只能发生在用户选择“调整刀序”之后,避免用户选择导出孔数、清空参数、生成 PP 钻带等启动菜单动作前被排序提示打断。
|
||
|
||
## Requirements
|
||
|
||
* 带启动参数且参数为钻带文件时,先显示启动菜单,不在菜单出现前弹出排序种子提示。
|
||
* 用户点击启动菜单的“调整刀序”后,加载主窗口和钻带文件时再按现有规则检查同目录的 `<文件名>-sort.txt` 和 `General_sort.txt`。
|
||
* 用户选择启动菜单里的非调整刀序动作时,不触发排序种子检查和提示。
|
||
* 保持现有排序种子优先级、提示文案、排序应用逻辑不变。
|
||
* 不调整启动菜单布局、钻带解析规则、PP 钻带生成规则、导出孔数逻辑。
|
||
|
||
## Acceptance Criteria
|
||
|
||
* [ ] 启动参数为钻带文件且同目录存在排序种子时,启动菜单先显示。
|
||
* [ ] 在启动菜单点击“调整刀序”后,才出现排序种子检测提示。
|
||
* [ ] 在启动菜单点击“导出孔数报表”或“生成 PP 钻带”时,不出现排序种子检测提示。
|
||
* [ ] 普通打开文件、拖拽文件、主窗口内使用排序种子功能保持原行为。
|
||
|
||
## Definition of Done
|
||
|
||
* 项目可成功构建。
|
||
* 不引入新依赖。
|
||
* 代码注释使用中文,关键行为有简短说明。
|
||
* 行为改动限定在启动路径和加载时排序种子检查开关。
|
||
|
||
## Technical Approach
|
||
|
||
在 `MainWindowViewModel` 中新增加载时排序种子检查开关,默认开启以保留主窗口内普通加载和“调整刀序”路径的现有行为。`LoadToolsFromDrillTape` 执行排序种子检查前读取该开关。`App` 中用于启动菜单按钮可用性预检查、导出孔数、生成 PP 钻带等非调整刀序路径创建 ViewModel 时关闭该开关。
|
||
|
||
## Decision (ADR-lite)
|
||
|
||
**Context**: 当前排序种子检查挂在 `LoadToolsFromDrillTape` 末尾,只要 `OriginalFilePath` 有值就会提示。`App.CanGeneratePpDrillTape()` 在启动菜单显示前为了判断按钮可见性提前加载钻带,并设置了 `OriginalFilePath`,导致排序种子提示先于启动菜单出现。导出孔数和生成 PP 钻带也会在用户选择非调整刀序动作后触发同样的加载副作用。
|
||
|
||
**Decision**: 保留现有加载流程,在 ViewModel 增加显式开关,让启动菜单预检查和非调整刀序启动动作关闭加载时自动排序检查;点击“调整刀序”后进入主窗口时不关闭开关。
|
||
|
||
**Consequences**: 改动面小,现有排序种子应用逻辑无需重写。后续如果还有新的无界面/非排序加载路径,也需要显式关闭该开关。
|
||
|
||
## Out of Scope
|
||
|
||
* 不重构 `MainWindowViewModel` 的整体职责。
|
||
* 不改变排序种子文件格式和匹配规则。
|
||
* 不新增自动化 UI 测试。
|
||
|
||
## Technical Notes
|
||
|
||
* `App.xaml.cs`:启动参数、启动菜单、菜单动作分发。
|
||
* `MainWindow.xaml.cs`:点击“调整刀序”后打开主窗口并加载初始文件。
|
||
* `MainWindowViewModel.cs`:`LoadToolsFromDrillTape` 当前在解析完成后调用 `CheckAndApplySortFile`。
|
||
* 项目无测试框架,`CLAUDE.md` 明确说明不写单元测试。
|