feat(Navigation, UserRights, Localization): add worker schedules feature and enhance access control
All checks were successful
Deploy to production / deploy (push) Successful in 1m52s

- Updated navigation structure to include a new section for worker schedules, accessible to specific user roles.
- Introduced a new user right type for 'worker_schedule_read' to manage access permissions effectively.
- Added localization entries for worker schedules in multiple languages, ensuring consistent user experience across the application.
- Created a new route and component for managing worker schedules in the admin panel.
This commit is contained in:
Torsten Schulz (local)
2026-05-08 08:54:17 +02:00
parent 0f7220d0b1
commit 008cd7ae86
21 changed files with 354 additions and 11 deletions

View File

@@ -329,6 +329,25 @@
"timeRemainingMinutes": "Nahibilin nga oras: {minutes} ka minuto {seconds} ka segundo",
"almostDone": "Hapit na …",
"jobNotFound": "Wala makit-i ang trabaho o na-expire na."
},
"workerSchedules": {
"title": "Mga dagan sa daemon",
"description": "Kinatibuk-ang tan-aw sa naka-iskedyul nga dagan sa worker gikan sa daemon registry.",
"accessDenied": "Walay access ani nga view.",
"detailed": "Detalyadong tan-aw",
"autoRefresh": "Auto-refresh",
"refresh": "I-refresh",
"generatedAt": "Nabuhat sa",
"empty": "Walay schedules nga anaa.",
"notConnected": "Walay daemon connection.",
"sendError": "Napakyas ang request sa daemon.",
"responseError": "Dili maproseso ang tubag sa daemon.",
"currentStep": "Karon nga lakang",
"task": "Task",
"cadence": "Interbal",
"nextRun": "Pinakataas nga sunod nga dagan",
"remaining": "Nahibilin",
"noTasks": "Walay tasks para ani nga worker."
}
},
"chatrooms": {

View File

@@ -187,7 +187,8 @@
"adminCreateNpc": "Paghimo og NPC",
"adminMinigames": "Pagdumala sa Match3",
"adminTaxiTools": "Mga himan sa taxi",
"adminServicesStatus": "Status sa serbisyo"
"adminServicesStatus": "Status sa serbisyo",
"adminWorkerSchedules": "Mga dagan sa daemon"
}
}
}

View File

@@ -85,7 +85,8 @@
"edituser": "Usba ang user",
"database": "Database",
"mapEditor": "Editor sa mapa",
"createNPC": "Paghimo og NPC"
"createNPC": "Paghimo og NPC",
"workerSchedules": "Mga dagan sa daemon"
},
"minigames": "Mga minidula",
"m-minigames": {

View File

@@ -322,6 +322,25 @@
"timeRemainingMinutes": "Verbleibende Zeit: {minutes} Minuten {seconds} Sekunden",
"almostDone": "Fast fertig...",
"jobNotFound": "Job nicht gefunden oder abgelaufen."
},
"workerSchedules": {
"title": "Daemon-Läufe",
"description": "Übersicht geplanter Worker-Läufe aus der Daemon-Registry.",
"accessDenied": "Kein Zugriff auf diese Ansicht.",
"detailed": "Detaillierte Ansicht",
"autoRefresh": "Auto-Refresh",
"refresh": "Aktualisieren",
"generatedAt": "Erzeugt am",
"empty": "Keine Schedules vorhanden.",
"notConnected": "Keine Daemon-Verbindung verfügbar.",
"sendError": "Anfrage an den Daemon fehlgeschlagen.",
"responseError": "Antwort konnte nicht verarbeitet werden.",
"currentStep": "Aktueller Schritt",
"task": "Task",
"cadence": "Intervall",
"nextRun": "Spätester nächster Lauf",
"remaining": "Verbleibend",
"noTasks": "Keine Tasks für diesen Worker."
}
},
"chatrooms": {

View File

@@ -187,7 +187,8 @@
"adminCreateNpc": "NPC erstellen",
"adminMinigames": "Match3-Verwaltung",
"adminTaxiTools": "Taxi-Tools",
"adminServicesStatus": "Service-Status"
"adminServicesStatus": "Service-Status",
"adminWorkerSchedules": "Daemon-Laeufe"
}
}
}

View File

@@ -85,7 +85,8 @@
"edituser": "Benutzer bearbeiten",
"database": "Datenbank",
"mapEditor": "Karteneditor",
"createNPC": "NPCs erstellen"
"createNPC": "NPCs erstellen",
"workerSchedules": "Daemon-Läufe"
},
"minigames": "Minispiele",
"m-minigames": {

View File

@@ -377,6 +377,25 @@
"timeRemainingMinutes": "Time remaining: {minutes} minutes {seconds} seconds",
"almostDone": "Almost done...",
"jobNotFound": "Job not found or expired."
},
"workerSchedules": {
"title": "Daemon runs",
"description": "Overview of scheduled worker runs from the daemon registry.",
"accessDenied": "No access to this view.",
"detailed": "Detailed view",
"autoRefresh": "Auto refresh",
"refresh": "Refresh",
"generatedAt": "Generated at",
"empty": "No schedules available.",
"notConnected": "No daemon connection available.",
"sendError": "Request to daemon failed.",
"responseError": "Could not process daemon response.",
"currentStep": "Current step",
"task": "Task",
"cadence": "Cadence",
"nextRun": "Latest next run",
"remaining": "Remaining",
"noTasks": "No tasks for this worker."
}
},
"chatrooms": {

View File

@@ -187,7 +187,8 @@
"adminCreateNpc": "Create NPC",
"adminMinigames": "Match3 administration",
"adminTaxiTools": "Taxi tools",
"adminServicesStatus": "Service status"
"adminServicesStatus": "Service status",
"adminWorkerSchedules": "Daemon runs"
}
}
}

View File

@@ -85,7 +85,8 @@
"edituser": "Edit user",
"database": "Database",
"mapEditor": "Map editor",
"createNPC": "Create NPCs"
"createNPC": "Create NPCs",
"workerSchedules": "Daemon runs"
},
"minigames": "Mini games",
"m-minigames": {

View File

@@ -302,6 +302,25 @@
"timeRemainingMinutes": "Tiempo restante: {minutes} minutos {seconds} segundos",
"almostDone": "Casi listo...",
"jobNotFound": "Trabajo no encontrado o caducado."
},
"workerSchedules": {
"title": "Ejecuciones del daemon",
"description": "Resumen de ejecuciones planificadas de workers desde el registro del daemon.",
"accessDenied": "No tienes acceso a esta vista.",
"detailed": "Vista detallada",
"autoRefresh": "Actualización automática",
"refresh": "Actualizar",
"generatedAt": "Generado el",
"empty": "No hay schedules disponibles.",
"notConnected": "No hay conexión con el daemon.",
"sendError": "Falló la solicitud al daemon.",
"responseError": "No se pudo procesar la respuesta del daemon.",
"currentStep": "Paso actual",
"task": "Tarea",
"cadence": "Intervalo",
"nextRun": "Próxima ejecución máxima",
"remaining": "Restante",
"noTasks": "No hay tareas para este worker."
}
},
"chatrooms": {

View File

@@ -187,7 +187,8 @@
"adminCreateNpc": "Crear NPC",
"adminMinigames": "Administración de Match3",
"adminTaxiTools": "Herramientas de taxi",
"adminServicesStatus": "Estado del servicio"
"adminServicesStatus": "Estado del servicio",
"adminWorkerSchedules": "Ejecuciones del daemon"
}
}
}

View File

@@ -85,7 +85,8 @@
"edituser": "Editar usuario",
"database": "Datenbank",
"mapEditor": "Editor de mapas",
"createNPC": "Crear NPCs"
"createNPC": "Crear NPCs",
"workerSchedules": "Ejecuciones del daemon"
},
"minigames": "Minispiele",
"m-minigames": {

View File

@@ -302,6 +302,25 @@
"timeRemainingMinutes": "Temps restant : {minutes} minutes {secondes} secondes",
"almostDone": "Presque fini...",
"jobNotFound": "Emploi introuvable ou expiré."
},
"workerSchedules": {
"title": "Exécutions du daemon",
"description": "Vue d'ensemble des exécutions planifiées des workers depuis le registre du daemon.",
"accessDenied": "Aucun accès à cette vue.",
"detailed": "Vue détaillée",
"autoRefresh": "Rafraîchissement automatique",
"refresh": "Rafraîchir",
"generatedAt": "Généré à",
"empty": "Aucun schedule disponible.",
"notConnected": "Aucune connexion daemon disponible.",
"sendError": "Échec de la requête vers le daemon.",
"responseError": "Impossible de traiter la réponse du daemon.",
"currentStep": "Étape actuelle",
"task": "Tâche",
"cadence": "Intervalle",
"nextRun": "Prochaine exécution au plus tard",
"remaining": "Restant",
"noTasks": "Aucune tâche pour ce worker."
}
},
"chatrooms": {

View File

@@ -187,7 +187,8 @@
"adminCreateNpc": "Créer un PNJ",
"adminMinigames": "Gestion des Match3",
"adminTaxiTools": "Outils de taxi",
"adminServicesStatus": "Statut des services"
"adminServicesStatus": "Statut des services",
"adminWorkerSchedules": "Executions du daemon"
}
}
}

View File

@@ -85,7 +85,8 @@
"edituser": "Modifier l'utilisateur",
"database": "base de données",
"mapEditor": "Editeur de cartes",
"createNPC": "NPCs erstellen"
"createNPC": "NPCs erstellen",
"workerSchedules": "Exécutions du daemon"
},
"minigames": "Minispiele",
"m-minigames": {