fix: 修复错误统计中 UNKNOWN 错误码问题

三处修复:
1. Analytics.logError() — 从通用 Error 提取 NSError domain:code,
   不再一律记录为 UNKNOWN
2. AppState — 通用 catch 已构造 AppError(LPB-901),改用
   logAppError 记录,确保错误码正确归类
3. HomeView — 视频导入错误包装为 AppError(IMP-001),
   添加 import LivePhotoCore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
empty
2026-02-08 00:49:13 +08:00
parent 2f6c2d9557
commit 88af6b6682
3 changed files with 16 additions and 5 deletions

View File

@@ -133,8 +133,12 @@ final class Analytics {
//
errorStats.record(code: appError.code, stage: appError.stage?.rawValue)
} else {
//
let code = "UNKNOWN"
//
let nsError = error as NSError
let code = "\(nsError.domain):\(nsError.code)"
params["code"] = code
params["domain"] = nsError.domain
params["nsErrorCode"] = nsError.code
errorStats.record(code: code, stage: nil)
}

View File

@@ -168,13 +168,14 @@ final class AppState {
}
return nil
} catch {
let appError = AppError(code: "LPB-901", message: "未知错误", underlyingErrorDescription: error.localizedDescription, suggestedActions: ["重试"])
await MainActor.run {
self.isProcessing = false
self.processingError = AppError(code: "LPB-901", message: "未知错误", underlyingErrorDescription: error.localizedDescription, suggestedActions: ["重试"])
self.processingError = appError
self.currentWorkId = nil
self.currentProcessingTask = nil
}
Analytics.shared.logError(.buildLivePhotoFail, error: error)
Analytics.shared.logAppError(.buildLivePhotoFail, appError: appError)
return nil
}
}

View File

@@ -9,6 +9,7 @@ import SwiftUI
import PhotosUI
import AVKit
import Photos
import LivePhotoCore
struct HomeView: View {
@Environment(AppState.self) private var appState
@@ -279,7 +280,12 @@ struct HomeView: View {
errorMessage = String(format: format, error.localizedDescription)
isLoading = false
selectedItem = nil
Analytics.shared.logError(.importVideoFail, error: error)
let appError = AppError(
code: "IMP-001",
message: "视频导入失败",
underlyingErrorDescription: error.localizedDescription
)
Analytics.shared.logAppError(.importVideoFail, appError: appError)
}
}
}