Files
LanMountainDesktop/docs/archive/auto_commit_md/20260528_a26b6fa.md
2026-06-08 03:54:33 +08:00

4.2 KiB
Raw Permalink Blame History

Git 提交分析报告

基本信息

提交信息摘要

refactor(launcher): replace LauncherFlowCoordinator with LaunchPipeline and slim App shell

变更统计

指标 数值
变更文件数 19
新增行数 2517
删除行数 788
净变化 +1729

详细变更分析

新增文件

  1. LanMountainDesktop.Launcher/Shell/EntryHandlers/LaunchEntryHandlers.cs - 启动入口处理器
  2. LanMountainDesktop.Launcher/Shell/EntryHandlers/PreviewEntryHandler.cs - 预览入口处理器
  3. LanMountainDesktop.Launcher/Shell/LauncherCompositionRoot.cs - 组合根
  4. LanMountainDesktop.Launcher/Shell/LauncherOrchestrator.cs - 启动协调器
  5. LanMountainDesktop.Launcher/Startup/ExistingHostProbe.cs - 现有主机探测
  6. LanMountainDesktop.Launcher/Startup/HostLaunchModels.cs - 主机启动模型
  7. LanMountainDesktop.Launcher/Startup/HostLaunchService.cs - 主机启动服务
  8. LanMountainDesktop.Launcher/Startup/LaunchAttemptDetails.cs - 启动尝试详情
  9. LanMountainDesktop.Launcher/Startup/LaunchPipeline.cs - 启动管道
  10. LanMountainDesktop.Launcher/Startup/LaunchUiPresenter.cs - UI 展示器
  11. LanMountainDesktop.Launcher/Startup/Phases/ApplyPendingUpdatePhase.cs - 应用待更新阶段
  12. LanMountainDesktop.Launcher/Startup/Phases/CleanupDeploymentsPhase.cs - 清理部署阶段
  13. LanMountainDesktop.Launcher/Startup/Phases/ExistingHostProbePhase.cs - 现有主机探测阶段
  14. LanMountainDesktop.Launcher/Startup/Phases/LaunchHostPhase.cs - 启动主机阶段
  15. LanMountainDesktop.Launcher/Startup/Phases/MonitorStartupPhase.cs - 监控启动阶段
  16. LanMountainDesktop.Launcher/Startup/Phases/OobeGatePhase.cs - OOBE 关卡阶段

主要变更文件

  1. LanMountainDesktop.Launcher/App.axaml.cs - 大幅精简,移除大量逻辑

主要变更点

1. 架构重构

  • 移除巨型协调器:将 LauncherFlowCoordinator 的功能拆分到多个职责单一的类中
  • 引入管道模式:新增 LaunchPipeline 来管理启动流程
  • 阶段化设计将启动流程拆分为多个独立的阶段Phase

2. 启动阶段设计

新增以下启动阶段:

  • CleanupDeploymentsPhase - 清理部署
  • ExistingHostProbePhase - 现有主机探测
  • ApplyPendingUpdatePhase - 应用待更新
  • OobeGatePhase - OOBE 关卡
  • LaunchHostPhase - 启动主机
  • MonitorStartupPhase - 监控启动

3. 核心组件

  • LauncherOrchestrator - 负责整体协调
  • LauncherCompositionRoot - 组合根,负责对象组装
  • HostLaunchService - 主机启动服务
  • ExistingHostProbe - 现有主机探测逻辑
  • LaunchUiPresenter - UI 展示逻辑

4. 入口处理

  • 新增 LaunchEntryHandlersPreviewEntryHandler
  • 将入口处理逻辑从 App 类中移出

5. App 类精简

  • App.axaml.cs 从 815 行大幅减少
  • 逻辑被分散到各个专门的类中

6. 测试更新

  • LauncherAirAppLifecycleServiceTests 更新以使用新的入口处理器
  • LauncherGlobalUsings.cs 添加新的命名空间引用

代码审查要点

优势

  1. 职责分离:每个类职责更加单一清晰
  2. 可扩展性:通过阶段模式,方便添加新的启动阶段
  3. 可测试性:各个组件可以独立测试
  4. 代码组织:文件结构更清晰,便于维护
  5. 增量变化:虽然新增了很多代码,但这是为了更好的架构

潜在风险

  1. 复杂度增加:组件数量增多,理解整个流程需要查看更多文件
  2. 阶段顺序依赖:阶段之间有依赖关系,需要确保顺序正确
  3. 状态管理LaunchContext 需要在多个阶段之间传递状态,需确保状态一致性
  4. 回归风险:大规模重构可能引入隐藏的 bug

建议

  1. 为每个阶段编写单元测试
  2. 编写集成测试验证完整启动流程
  3. 考虑添加流程图文档,帮助理解各阶段关系
  4. 进行充分的端到端测试,确保各种启动场景正常工作