Feature: Tonspur-Ergebnis sichtbar am Paket (audioStripSummary)
Die Antwort auf "warum hat Paket X noch .DL.?" steht bisher nur in den Rename-/Item-Logs — "kein Deutsch-Tag" ist INFO-Level und taucht nirgends im UI auf. Jetzt speichert keepGermanAudioOnlyImpl pro Paket eine Zusammenfassung (remuxed/kept-single/ohne-DE-Tag/ffmpeg-fehlt/Fehler + bis zu 100 Datei-Details mit Aktion, Grund und erkannten Sprachen) direkt am PackageEntry: - Status-Spalte zeigt "Tonspur: 5 OK / 1 ohne DE-Tag / ffmpeg fehlt" (rot bei Auffaelligkeiten, flacher Stil), Datei-Details als Tooltip. - Auch der ffmpeg-nicht-gefunden-Fruehausstieg schreibt die Summary. - pkg.updatedAt wird gesetzt + Feld im Paket-Delta-Hash, damit der Snapshot die Aenderung pusht; normalizeLoadedSession whitelistet das Feld mit Shape-Validierung, sonst waere es nach jedem App-Neustart weg. - 2 neue Integrationstests (Summary-Zaehler + ffmpeg-fehlt-Pfad).
This commit is contained in:
@@ -146,5 +146,20 @@ describe("keepGermanAudioOnly integration", () => {
|
||||
expect(n).toBe(0);
|
||||
expect(mockedProcess).not.toHaveBeenCalled(); // bailed before touching any file
|
||||
expect(fs.readdirSync(extractDir)).toContain(DL_MKV); // untouched
|
||||
expect(pkg.audioStripSummary).toMatchObject({ candidates: 1, skippedNoTool: 1, remuxed: 0 });
|
||||
expect(pkg.audioStripSummary.files[0]).toMatchObject({ name: DL_MKV, action: "skipped-no-tool" });
|
||||
});
|
||||
|
||||
it("stores a per-package summary with counts and file details", async () => {
|
||||
const { extractDir, manager, pkg } = setup(true);
|
||||
stage(extractDir);
|
||||
mockedProcess.mockResolvedValue({ action: "skipped-no-german", reason: "no-german-track", totalAudioTracks: 2, audioLanguages: ["eng", "fre"] } as VideoProcessResult);
|
||||
|
||||
await (manager as any).keepGermanAudioOnlyImpl(extractDir, pkg);
|
||||
|
||||
expect(pkg.audioStripSummary).toMatchObject({ candidates: 1, skippedNoGerman: 1, remuxed: 0, failed: 0 });
|
||||
expect(pkg.audioStripSummary.files).toHaveLength(1);
|
||||
expect(pkg.audioStripSummary.files[0]).toMatchObject({ name: DL_MKV, action: "skipped-no-german", reason: "no-german-track", languages: "eng,fre" });
|
||||
expect(pkg.updatedAt).toBeGreaterThan(0); // bumped so the snapshot delta picks it up
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user