Files
AohDrllTools/.trellis/tasks/05-22-defer-sort-seed-check/prd.md

53 lines
3.3 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.

# 调整刀序前再检查排序种子
## 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` 明确说明不写单元测试。