3.4 KiB
3.4 KiB
Backend-Services
Das Backend ist in Services aufgeteilt, die von Express-Routen orchestriert werden.
pipelineService.js
Zentrale Workflow-Orchestrierung.
Aufgaben:
- Pipeline-State-Machine + Persistenz (
pipeline_state) - Disc-Analyse/Rip/Review/Encode
- Queue-Management (Jobs +
script|chain|waitEinträge) - Retry/Re-Encode/Restart-Flows
- WebSocket-Broadcasts für State/Progress/Queue
Wichtige Methoden:
analyzeDisc()selectMetadata()startPreparedJob()confirmEncodeReview()cancel()retry()reencodeFromRaw()restartReviewFromRaw()restartEncodeWithLastSettings()resumeReadyToEncodeJob()enqueueNonJobEntry(),reorderQueue(),removeQueueEntry()
diskDetectionService.js
Pollt Laufwerk(e) und emittiert:
discInserteddiscRemovederror
Zusatz:
- Modus
autooderexplicit - heuristische
mediaProfile-Erkennung (bluray/dvd/other) rescanAndEmit()für manuellen Trigger
settingsService.js
Settings-Layer mit Validation/Serialisierung.
Features:
getCategorizedSettings()für UI-FormsetSettingValue()/setSettingsBulk()- profilspezifische Auflösung (
resolveEffectiveToolSettings) - CLI-Config-Building für MakeMKV/HandBrake/MediaInfo
- HandBrake-Preset-Liste via
HandBrakeCLI -z - MakeMKV-Registration-Command aus
makemkv_registration_key
historyService.js
Historie + Dateioperationen.
Features:
- Job-Liste/Detail inkl. Log-Tail
- Orphan-RAW-Erkennung und Import
- OMDb-Nachzuweisung
- Dateilöschung (
raw|movie|both) - Job-Löschung (
none|raw|movie|both)
cronService.js
Integriertes Cron-System ohne externe Parser-Library.
Features:
- 5-Feld-Cron-Parser +
nextRun-Berechnung - Quellen:
scriptoderchain - Laufzeitlogs (
cron_run_logs) - manuelles Triggern
- WebSocket-Events:
CRON_JOBS_UPDATED,CRON_JOB_UPDATED
runtimeActivityService.js
In-Memory-Tracking aller laufenden und kürzlich abgeschlossenen Aktivitäten (Skripte, Ketten, Cron-Jobs, Tasks).
Features:
startActivity(type, payload)→ Aktivität registrieren, ID zurückgebenupdateActivity(id, patch)→ Laufende Aktivität aktualisierencompleteActivity(id, payload)→ Aktivität abschließen und inrecentverschiebensetControls(id, { cancel, nextStep })→ Steuer-Handler registrieren (fürcanCancel/canNextStep)requestCancel(id)/requestNextStep(id)→ Steuer-Handler aufrufenclearRecent()→ Abgeschlossene Aktivitäten löschengetSnapshot()→ Snapshot mitactive+recent+updatedAt- Broadcasts
RUNTIME_ACTIVITY_CHANGEDüber WebSocket bei jeder Änderung
Limits:
recentmax. 120 Einträgestdout/stderr/outputmax. 12.000 Zeichenmessage/errorMessagemax. 2.000 Zeichen
Vollständige API-Dokumentation: Runtime Activities API
Weitere Services
scriptService.js(CRUD + Test + Wrapper-Ausführung)scriptChainService.js(CRUD + Step-Execution)userPresetService.js(HandBrake User-Presets)hardwareMonitorService.js(CPU/RAM/GPU/Storage)websocketService.js(Client-Registry + Broadcast)notificationService.js(PushOver)logger.js(rotierende Datei-Logs)
Bootstrapping (src/index.js)
Beim Start:
- DB init/migrate
- Pipeline-Init
- Cron-Init
- Express-Routes + Error-Handler
- WebSocket-Server auf
/ws - Hardware-Monitoring-Init
- Disk-Detection-Start