feat(history): add package lifecycle telemetry

This commit is contained in:
Sucukdeluxe
2026-08-22 04:04:42 +02:00
parent 161e111c2f
commit ef7423134a
8 changed files with 829 additions and 37 deletions
+99 -11
View File
@@ -470,7 +470,7 @@ export interface AudioStripFileResult {
languages?: string;
}
export interface AudioStripSummary {
export interface AudioStripSummary {
at: number;
candidates: number;
remuxed: number;
@@ -478,10 +478,72 @@ export interface AudioStripSummary {
skippedNoGerman: number;
skippedNoTool: number;
failed: number;
files: AudioStripFileResult[];
}
export interface PackageEntry {
files: AudioStripFileResult[];
}
export type PackageResultStatus = "completed" | "partial" | "failed" | "cancelled";
export type FailurePhase = "download" | "extract" | "remux" | "cleanup" | null;
export interface ArchiveOperationMetric {
id: string;
name: string;
itemIds: string[];
partCount: number;
startedAt: number;
completedAt: number;
durationMs: number;
status: "completed" | "failed" | "cancelled";
errorCategory: string;
}
export interface RemuxOperationMetric {
id: string;
fileName: string;
startedAt: number;
completedAt: number;
durationMs: number;
status: "completed" | "failed" | "cancelled";
errorCategory: string;
}
export interface PackageTelemetry {
package: PackageEntry;
items: DownloadItem[];
archiveOperations?: ArchiveOperationMetric[];
remuxOperations?: RemuxOperationMetric[];
outputCount?: number;
cleanupErrorCategory?: string;
}
export interface PackageResult {
packageId: string;
name: string;
status: PackageResultStatus;
startedAt: number;
downloadEndedAt: number;
postProcessStartedAt: number;
completedAt: number;
downloadDurationSeconds: number;
extractionDurationSeconds: number;
remuxDurationSeconds: number;
postProcessDurationSeconds: number;
totalDurationSeconds: number;
totalBytes: number;
downloadedBytes: number;
averageDownloadSpeedBps: number;
successfulFiles: number;
failedFiles: number;
cancelledFiles: number;
archiveCount: number;
partCount: number;
outputCount: number;
failurePhase: FailurePhase;
errorCategory: string;
archiveOperations: ArchiveOperationMetric[];
remuxOperations: RemuxOperationMetric[];
}
export interface PackageEntry {
id: string;
name: string;
outputDir: string;
@@ -500,8 +562,17 @@ export interface PackageEntry {
cleanedUrls?: string[];
cleanedProviders?: DebridProvider[];
downloadStartedAt?: number;
downloadCompletedAt?: number;
createdAt: number;
downloadCompletedAt?: number;
downloadEndedAt?: number;
postProcessQueuedAt?: number;
postProcessStartedAt?: number;
postProcessCompletedAt?: number;
terminalAt?: number;
archiveOperations?: ArchiveOperationMetric[];
remuxOperations?: RemuxOperationMetric[];
outputCount?: number;
cleanupErrorCategory?: string;
createdAt: number;
updatedAt: number;
}
@@ -829,10 +900,27 @@ export interface HistoryEntry {
provider: DebridProvider | null;
completedAt: number;
durationSeconds: number;
status: "completed" | "deleted";
outputDir: string;
urls?: string[];
}
status: PackageResultStatus | "deleted";
outputDir: string;
urls?: string[];
startedAt?: number;
downloadEndedAt?: number;
postProcessStartedAt?: number;
downloadDurationSeconds?: number;
extractionDurationSeconds?: number;
remuxDurationSeconds?: number;
postProcessDurationSeconds?: number;
totalDurationSeconds?: number;
successfulFiles?: number;
failedFiles?: number;
cancelledFiles?: number;
archiveCount?: number;
partCount?: number;
outputCount?: number;
failurePhase?: FailurePhase;
archiveOperations?: ArchiveOperationMetric[];
remuxOperations?: RemuxOperationMetric[];
}
export interface HistoryState {
entries: HistoryEntry[];