# Worker-Schedules per WebSocket Dieses Feature stellt eine Übersicht bereit, wann Worker-Tasks voraussichtlich wieder laufen. ## Zugriffsschutz Der Zugriff ist nur erlaubt für Nutzer mit mindestens einem dieser Rechte: - `admin` - `worker_schedule_read` Migration für das neue Recht: - `migrations/018_worker_schedule_socket_right.sql` ## WebSocket-Events Voraussetzung: Der Client hat vorher `setUserId` gesendet. ### 1) Übersicht Request: ```json { "event": "getWorkerSchedules", "data": {} } ``` Response: ```json { "event": "getWorkerSchedulesResponse", "ok": true, "generated_at": 1715157600, "schedules": [ { "worker": "DirectorWorker", "tasks": [ { "task": "salary_payout", "cadence_seconds": 86400, "cadence_label": "86400s interval", "next_run_latest_ts": 1715244000, "next_run_latest_in_seconds": 86400 } ] } ] } ``` Hinweis: Sekündliche/minütliche Tasks sind absichtlich nicht enthalten. ### 2) Detaillierte Übersicht Request: ```json { "event": "getWorkerSchedulesDetailed", "data": {} } ``` Response (zusätzlich Live-Status aus dem Worker-Runtime-Registry): ```json { "event": "getWorkerSchedulesDetailedResponse", "ok": true, "generated_at": 1715157600, "schedules": [ { "worker": "DirectorWorker", "running_worker": true, "running_watchdog": true, "current_step": "DirectorWorker: pay_salary", "last_step_change_ts": 1715157000, "tasks": [] } ] } ``` ## Rechteprüfung (technisch) Der Daemon akzeptiert sowohl: - `setUserId = community.user.id` - `setUserId = falukant_data.falukant_user.id` In beiden Fällen wird auf `community.user_right` + `"type".user_right` geprüft.