chabged.进一步清理启动器内的更新逻辑

This commit is contained in:
lincube
2026-05-29 22:16:40 +08:00
parent a1cc0ee2bf
commit d004088601
48 changed files with 1348 additions and 2034 deletions

View File

@@ -0,0 +1,129 @@
# Git Commit Analysis Report
## Commit Information
| Field | Value |
|-------|-------|
| **Commit Hash** | `63f08987a7b261c199d023ffebcdbecca9282dae` |
| **Author** | lincube <lincube3@hotmail.com> |
| **Author Date** | 2026-05-27 11:52:24 +0800 |
| **Commit Date** | 2026-05-27 11:52:24 +0800 |
| **Commit Message** | feat.升级了相关的依赖 |
## Change Statistics
| Metric | Value |
|--------|-------|
| **Files Modified** | 1 |
| **Files Added** | 0 |
| **Files Deleted** | 0 |
| **Total Insertions** | +9 |
| **Total Deletions** | -9 |
| **Net Change** | 0 |
## Commit Message Summary
本次提交是对项目依赖包的版本升级,主要涉及 Avalonia UI 框架相关组件、遥测服务库以及其他核心依赖的更新。
## Detailed Change Analysis
### 1. Directory.Packages.props
**Change Type:** Modified
**Lines Changed:** +9, -9
#### Dependency Upgrades
本次提交升级了以下 NuGet 包版本:
**Avalonia UI 框架组件 (12.0.2 → 12.0.3)**
- `Avalonia`: 12.0.2 → **12.0.3**
- `Avalonia.Desktop`: 12.0.2 → **12.0.3**
- `Avalonia.Fonts.Inter`: 12.0.2 → **12.0.3**
- `Avalonia.Themes.Fluent`: 12.0.2 → **12.0.3**
- `Avalonia.Controls.WebView`: 12.0.0 → **12.0.1**
**UI 主题库 (3.0.0-preview2 → 3.0.0-preview4)**
- `FluentAvaloniaUI`: 3.0.0-preview2 → **3.0.0-preview4**
**Material Design 组件 (3.16.1 → 3.17.0)**
- `Material.Avalonia`: 3.16.1 → **3.17.0**
**遥测服务 (6.4.1 → 6.5.0, 2.6.0 → 2.7.1)**
- `Sentry`: 6.4.1 → **6.5.0**
- `PostHog`: 2.6.0 → **2.7.1**
## Code Review Points
### 1. 依赖版本兼容性 ✅
**状态:** 通过
**说明:** 所有升级都是小版本或预览版本更新,属于常规依赖维护,未发现明显的 breaking changes 风险。
### 2. Avalonia 12.0.3 版本
**状态:** 建议验证
**建议:** Avalonia 从 12.0.2 升级到 12.0.3,建议在开发环境中进行基本功能测试,特别关注:
- 主题和样式是否正常渲染
- 桌面组件拖拽和布局功能
- WebView 控件功能12.0.0 → 12.0.1
### 3. FluentAvaloniaUI 预览版本
**状态:** 需关注
**说明:** 从 3.0.0-preview2 升级到 3.0.0-preview4仍处于预览阶段可能存在不稳定因素。建议
- 检查预览版本发布说明中的已知问题
- 在主要功能流程中进行测试
- 监控是否有新的 bug 报告
### 4. Material.Avalonia 大版本更新
**状态:** 需关注
**说明:** 从 3.16.1 升级到 3.17.0,属于次版本更新,但 Material Design 组件可能包含样式和 API 变化。建议:
- 检查 Material Design 组件在应用中的使用情况
- 验证主题和颜色一致性
- 确认所有 Material 组件功能正常
### 5. 遥测服务版本更新
**状态:** 低风险
**说明:** Sentry 和 PostHog 的更新主要是版本补丁,建议:
- 确认遥测数据上报功能正常
- 检查 Sentry 的 crash reporting 配置
- 验证 PostHog 的事件追踪功能
## Impact Assessment
### 风险等级: 🟡 中等
**原因:**
- 涉及 UI 框架核心组件更新
- 包含多个预览版本组件
- 可能需要验证兼容性和功能完整性
**建议操作:**
1. 在本地环境进行完整的构建测试
2. 执行基本的 UI 功能验证
3. 运行现有测试套件确保无回归
4. 如时间允许,进行一次快速的手动功能测试
## Related Documentation
- [DEVELOPMENT.md](file:///d:/github/LanMountainDesktop/docs/DEVELOPMENT.md) - 开发环境指南
- [VISUAL_SPEC.md](file:///d:/github/LanMountainDesktop/docs/VISUAL_SPEC.md) - 视觉规范
- [ARCHITECTURE.md](file:///d:/github/LanMountainDesktop/docs/ARCHITECTURE.md) - 架构文档
## Summary
本次提交是一个**常规的依赖维护提交**,主要目标是保持项目依赖的时效性和安全性。所有升级都是向后兼容的小版本或预览版本更新,未发现明显的破坏性变更。
**整体评估:** 可以安全合并,建议在合并后进行基本的构建和功能验证。
---
*Report generated: 2026-05-27*
*Analyzer: Git Commit Analysis Tool*

View File

@@ -0,0 +1,325 @@
# Git Commit Analysis Report
## Commit Information
| Field | Value |
|-------|-------|
| **Commit Hash** | `ce41fd676cd5464f34cd5c8687bbbe73ca1c562b` |
| **Author** | lincube <lincube3@hotmail.com> |
| **Author Date** | 2026-05-27 09:41:18 +0800 |
| **Commit Date** | 2026-05-27 09:41:18 +0800 |
| **Commit Message** | changed.调整了遥测系统。 |
## Change Statistics
| Metric | Value |
|--------|-------|
| **Files Modified** | 8 |
| **Files Added** | 1 |
| **Files Deleted** | 0 |
| **Total Insertions** | +962 |
| **Total Deletions** | -61 |
| **Net Change** | +901 |
## Commit Message Summary
本次提交是对遥测系统的重大调整和重构,主要包括:
- 新增统一的遥测事件命名规范(`TelemetryEventNames.cs`
- 重构 Sentry 崩溃报告服务(优化 Tags/Extras 分离、改进中文标签)
- 重构 PostHog 使用追踪服务(修复 distinct_id 一致性、增强 Session 生命周期管理)
- 新增遥测环境信息增强类
- 添加详细的遥测系统规范化设计文档
## Detailed Change Analysis
### 1. LanMountainDesktop/App.axaml.cs
**Change Type:** Modified
**Lines Changed:** +1, -0
**变更说明:** 在应用启动入口添加遥测追踪初始化调用,确保应用级别的 Session 生命周期正确管理。
### 2. LanMountainDesktop/Models/DesktopComponentPlacementSnapshot.cs
**Change Type:** Modified
**Lines Changed:** +2, -2
**变更说明:** 为桌面组件快照模型添加 `ComponentName` 属性,便于遥测事件中记录组件的可读名称,便于后续分析和调试。
### 3. LanMountainDesktop/Services/PostHogUsageTelemetryService.cs ⭐
**Change Type:** Modified
**Lines Changed:** +37, -42
**变更说明:** 这是本次提交的核心改动之一,主要优化包括:
#### 3.1 distinct_id 统一
- **修复前:** 使用 `InstallId` 作为 `distinct_id`
- **修复后:** 统一使用 `TelemetryId` 作为 `distinct_id`
- **影响:** 确保 PostHog 中的用户身份追踪一致性
#### 3.2 Session 生命周期增强
- 优化了 `StartSession``EndSession` 方法
- 添加了 `TrackSessionStarted``TrackSessionEnded` 追踪
- 与 MainWindow 和 App 层生命周期正确关联
#### 3.3 事件属性优化
- 移除了每个事件中重复的环境信息字段
- 添加了 `event_display_name` 属性(中文显示名)
- 移除了 `payload_` 前缀,使事件属性更简洁
- 使用统一的 `TelemetryEventNames` 常量
#### 3.4 Flush 策略优化
- **修复前:** 每个事件都执行 `forceFlush`
- **修复后:** 仅在关键事件session、first_launch执行 `forceFlush`
- **影响:** 降低性能开销,提升事件批处理效率
#### 3.5 DescribePlacement 增强
- 添加了 `component_name` 字段到组件位置快照描述
- 便于在遥测数据中识别具体组件
### 4. LanMountainDesktop/Services/SentryCrashTelemetryService.cs ⭐
**Change Type:** Modified
**Lines Changed:** +10, -16
**变更说明:** 重构崩溃报告服务,优化遥测上下文管理:
#### 4.1 SendDefaultPii 安全设置
- **修复前:** `options.SendDefaultPii = true`
- **修复后:** `options.SendDefaultPii = false`
- **影响:** 提升用户隐私保护,避免发送敏感个人信息
#### 4.2 Tags/Extras 职责分离
- **Tags:** 仅保留用于过滤和索引的核心字段6 个)
- telemetry_channel, event_type, event_display_name, source, app_version, environment, os_name, os_version, language
- **Extras:** 保留所有详细上下文信息用于调试分析
- install_id, telemetry_id, 设备信息, 运行时信息, 日志文件路径等
#### 4.3 中文标签支持
- 新增 `event_display_name` Tag提供事件的中文显示名
- 改善 Sentry Dashboard 的可读性
#### 4.4 事件命名规范化
- 使用 `TelemetryEventNames` 常量替代硬编码字符串
- 确保 Sentry 和 PostHog 使用统一的事件命名
### 5. LanMountainDesktop/Services/TelemetryEnvironmentInfo.cs ⭐
**Change Type:** Modified
**Lines Changed:** +31, -1
**变更说明:** 新增和增强了遥测环境信息收集功能:
#### 5.1 新增方法
- `GetDeviceModel()`: 获取设备型号
- `GetDeviceArchitecture()`: 获取设备架构
- `GetTotalMemoryMB()`: 获取总内存MB
- `GetLocalDayPart(DateTimeOffset)`: 根据时间段返回日夜标识
- `GetRenderMode()`: 获取渲染模式DirectX/OpenGL/Software
#### 5.2 现有方法增强
- 优化了 `GetOsVersion()` 返回格式
- 改进了语言信息的收集
### 6. LanMountainDesktop/Services/TelemetryEventNames.cs ✨
**Change Type:** Added
**Lines Changed:** +69, -0
**变更说明:** 全新的统一遥测事件命名规范类,包含:
#### 6.1 Sentry 事件命名
- `SentryUnhandledException`: 未处理的异常
- `SentryTaskException`: 任务异常
- `SentryShutdown`: 应用关闭
#### 6.2 PostHog 事件命名
- `AppFirstLaunch`: 应用首次启动
- `AppSessionStart`: 应用会话开始
- `AppSessionEnd`: 应用会话结束
- `MainWindowOpened`: 主窗口打开
- `MainWindowClosed`: 主窗口关闭
- `SettingsWindowOpened`: 设置窗口打开
- `SettingsWindowClosed`: 设置窗口关闭
- `SettingsNavigation`: 设置导航
- `SettingsDrawerOpened`: 设置抽屉打开
- `SettingsDrawerClosed`: 设置抽屉关闭
- `DesktopComponentPlaced`: 组件放置
- `DesktopComponentMoved`: 组件移动
- `DesktopComponentResized`: 组件调整大小
- `DesktopComponentDeleted`: 组件删除
- `DesktopComponentEditorOpened`: 组件编辑器打开
#### 6.3 辅助方法
- `DisplayName(string eventName)`: 返回事件的中文显示名
### 7. LanMountainDesktop/Views/MainWindow.ComponentSystem.cs
**Change Type:** Modified
**Lines Changed:** +1, -0
**变更说明:** 在组件系统初始化中添加 `TrackSessionStarted` 调用,确保组件级别的遥测追踪。
### 8. LanMountainDesktop/Views/MainWindow.axaml.cs
**Change Type:** Modified
**Lines Changed:** +1, -0
**变更说明:** 在主窗口打开事件中添加 `TrackSessionStarted` 调用,完善 Session 生命周期追踪。
### 9. docs/superpowers/plans/2026-05-26-telemetry-normalization.md ✨
**Change Type:** Added
**Lines Changed:** +810, -0
**变更说明:** 新增详尽的遥测系统规范化设计文档,包含:
- 遥测系统架构设计
- PostHog 和 Sentry 的职责划分
- 统一的事件命名规范
- 具体的代码修改指南
- 实施任务清单
## Code Review Points
### 1. 遥测系统架构重构 ✅
**状态:** 通过
**说明:** 本次重构遵循了良好的软件设计原则,实现了关注点分离:
- **PostHog**: 负责使用追踪和行为分析
- **Sentry**: 负责崩溃报告和错误追踪
- **统一的事件命名**: 通过 `TelemetryEventNames` 避免硬编码
### 2. 用户隐私保护 ✅
**状态:** 优秀
**改进:**
- 禁用 `SendDefaultPii` 避免发送敏感个人信息
- 统一使用匿名的 `TelemetryId` 而非可识别的 `InstallId` 作为用户标识
- 在 Sentry 中移除 `IpAddress` 收集
### 3. 性能优化 ✅
**状态:** 通过
**改进:**
- PostHog 事件移除重复的环境信息,减少网络开销
- Flush 策略优化,仅关键事件立即刷新
- 合理使用 `forceFlush` 平衡实时性和性能
### 4. 可维护性 ✅
**状态:** 优秀
**改进:**
- 使用常量替代硬编码字符串,便于后续维护和扩展
- 完善的文档和设计规范
- 清晰的事件命名规范
### 5. Session 生命周期管理 ⚠️
**状态:** 需验证
**关注点:**
- Session 开始和结束的时机需要与实际应用生命周期完全匹配
- 需要在多种退出场景(正常关闭、崩溃、异常)下验证 Session 追踪的完整性
- 建议进行压力测试和长时间运行测试
**建议验证清单:**
- [ ] 正常关闭应用时 Session 是否正确结束
- [ ] 崩溃时 Session 是否能正确记录
- [ ] 异常退出后重启时 Session 标识是否正确
- [ ] 快速重启场景下 Session 追踪是否正确
### 6. 事件命名一致性 ⚠️
**状态:** 需验证
**关注点:**
- 确保 Sentry 和 PostHog 中的事件命名完全一致
- 验证 `DisplayName` 方法覆盖所有事件类型
- 建议在文档中维护事件清单
### 7. 向后兼容性 ✅
**状态:** 通过
**说明:** 本次改动主要是对内部实现的优化,未改变外部 API 接口,对插件开发者透明。
## Impact Assessment
### 风险等级: 🟢 低
**原因:**
- 重构主要在内部实现层面,不影响外部 API
- 遵循最佳实践,提升了系统可维护性
- 增强了用户隐私保护
- 包含详尽的测试指南
**建议操作:**
1. ✅ 执行完整的构建测试
2. ✅ 运行测试套件验证无回归
3. ⚠️ 进行 Session 生命周期的集成测试
4. ⚠️ 验证遥测数据上报的完整性
5. ⚠️ 检查 Sentry Dashboard 中的事件命名
6. ⚠️ 检查 PostHog 中的用户追踪一致性
## Related Documentation
- [2026-05-26-telemetry-normalization.md](file:///d:/github/LanMountainDesktop/docs/superpowers/plans/2026-05-26-telemetry-normalization.md) - 遥测系统规范化设计文档
- [ARCHITECTURE.md](file:///d:/github/LanMountainDesktop/docs/ARCHITECTURE.md) - 架构文档
- [DEVELOPMENT.md](file:///d:/github/LanMountainDesktop/docs/DEVELOPMENT.md) - 开发环境指南
- [PRIVACY.md](file:///d:/github/LanMountainDesktop/docs/PRIVACY.md) - 隐私政策(建议更新)
## Testing Recommendations
### 1. 基础功能测试
```bash
# 构建验证
dotnet build LanMountainDesktop.slnx -c Debug
# 运行测试
dotnet test LanMountainDesktop.slnx -c Debug
```
### 2. 遥测功能测试
#### 2.1 PostHog 测试场景
- [ ] 应用首次启动事件是否正确上报
- [ ] Session 开始/结束事件是否正确
- [ ] 组件操作事件是否携带完整信息
- [ ] distinct_id 是否一致
#### 2.2 Sentry 测试场景
- [ ] 触发未处理异常,检查 Sentry 是否收到
- [ ] 验证 Tags 中的 event_display_name 是否为中文
- [ ] 检查是否正确禁用 PII 收集
- [ ] 验证 log tail 是否正确附加
#### 2.3 Session 生命周期测试
- [ ] 正常关闭应用
- [ ] 通过任务管理器强制结束
- [ ] 触发崩溃(可使用测试异常)
- [ ] 快速重启测试
### 3. 数据质量验证
- [ ] 遥测数据中的事件名称是否一致
- [ ] 环境信息是否完整
- [ ] 时间戳是否准确
- [ ] component_name 是否正确填充
## Summary
本次提交是一个**重大的遥测系统重构**,包含以下核心改进:
1. **统一的事件命名规范**: 避免了硬编码字符串,提升代码可维护性
2. **增强的隐私保护**: 禁用 PII 收集,使用匿名标识符
3. **优化的性能**: 减少重复数据,优化 Flush 策略
4. **完善的生命周期管理**: Session 追踪覆盖更全面
5. **详尽的文档**: 包含完整的重构指南和实施计划
**整体评估:** 这是一次高质量的系统重构,建议合并后进行全面测试验证。
**预计测试时间:** 2-3 小时(包括基础测试和集成测试)
---
*Report generated: 2026-05-27*
*Analyzer: Git Commit Analysis Tool*