# Workflow & Zustände Ripster steuert den Ablauf als State-Machine im `pipelineService`. --- ## Zustandsdiagramm (vereinfacht) ```mermaid flowchart LR IDLE --> DISC_DETECTED DISC_DETECTED --> ANALYZING ANALYZING --> METADATA_SELECTION METADATA_SELECTION --> READY_TO_START READY_TO_START --> RIPPING READY_TO_START --> MEDIAINFO_CHECK MEDIAINFO_CHECK --> WAITING_FOR_USER_DECISION WAITING_FOR_USER_DECISION --> MEDIAINFO_CHECK MEDIAINFO_CHECK --> READY_TO_ENCODE READY_TO_ENCODE --> ENCODING ENCODING --> FINISHED ENCODING --> ERROR RIPPING --> ERROR RIPPING --> CANCELLED ``` --- ## State-Liste | State | Bedeutung | |------|-----------| | `IDLE` | Wartet auf Disc | | `DISC_DETECTED` | Disc erkannt | | `ANALYZING` | MakeMKV-Analyse läuft | | `METADATA_SELECTION` | Benutzer wählt Metadaten | | `WAITING_FOR_USER_DECISION` | Playlist-Auswahl nötig | | `READY_TO_START` | Übergangszustand vor Start | | `RIPPING` | MakeMKV-Rip läuft | | `MEDIAINFO_CHECK` | Quelle/Tracks werden ausgewertet | | `READY_TO_ENCODE` | Review ist bereit | | `ENCODING` | HandBrake läuft | | `FINISHED` | erfolgreich abgeschlossen | | `CANCELLED` | abgebrochen | | `ERROR` | fehlgeschlagen | --- ## Typische Pfade ### Standardfall (kein vorhandenes RAW) 1. Disc erkannt 2. Analyse + Metadaten 3. `RIPPING` 4. `MEDIAINFO_CHECK` 5. `READY_TO_ENCODE` 6. `ENCODING` 7. `FINISHED` ### Vorhandenes RAW `READY_TO_START` springt direkt zu `MEDIAINFO_CHECK` (kein neuer Rip). ### Mehrdeutige Blu-ray-Playlist `MEDIAINFO_CHECK` -> `WAITING_FOR_USER_DECISION` bis Benutzer Playlist bestätigt. --- ## Queue-Verhalten Wenn `pipeline_max_parallel_jobs` erreicht ist: - Job-Aktionen werden als Queue-Einträge abgelegt - Queue kann zusätzlich Nicht-Job-Einträge enthalten (`script`, `chain`, `wait`) - Reihenfolge ist per API/UI änderbar --- ## Abbruch, Retry, Restart - `cancel`: laufenden Job abbrechen oder Queue-Eintrag entfernen - `retry`: Fehler-/Abbruch-Job neu starten - `reencode`: aus vorhandenem RAW neu encodieren - `restart-review`: Review aus RAW neu aufbauen - `restart-encode`: Encoding mit letzter bestätigter Auswahl neu starten