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

3.3 KiB
Raw Blame History

调整刀序前再检查排序种子

Goal

当程序带钻带文件路径启动时,启动菜单必须优先出现;排序种子文件的检查和提示只能发生在用户选择“调整刀序”之后,避免用户选择导出孔数、清空参数、生成 PP 钻带等启动菜单动作前被排序提示打断。

Requirements

  • 带启动参数且参数为钻带文件时,先显示启动菜单,不在菜单出现前弹出排序种子提示。
  • 用户点击启动菜单的“调整刀序”后,加载主窗口和钻带文件时再按现有规则检查同目录的 <文件名>-sort.txtGeneral_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.csLoadToolsFromDrillTape 当前在解析完成后调用 CheckAndApplySortFile
  • 项目无测试框架,CLAUDE.md 明确说明不写单元测试。