mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
changed.对启动器重构的尝试
This commit is contained in:
98
docs/auto_commit_md/20260528_a26b6fa.md
Normal file
98
docs/auto_commit_md/20260528_a26b6fa.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
- **哈希**: a26b6faace509f2ff8806e95fe5891ce4b325fc4
|
||||
- **短哈希**: a26b6fa
|
||||
- **作者**: lincube <lincube3@hotmail.com>
|
||||
- **时间**: 2026-05-28 11:03:49 +0800
|
||||
- **合入作者**: Cursor <cursoragent@cursor.com>
|
||||
|
||||
## 提交信息摘要
|
||||
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. 入口处理
|
||||
- 新增 `LaunchEntryHandlers` 和 `PreviewEntryHandler`
|
||||
- 将入口处理逻辑从 `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. 进行充分的端到端测试,确保各种启动场景正常工作
|
||||
Reference in New Issue
Block a user