feat: enhance audit logging, add MCP settings, and production docker setup
continuous-integration/drone/push Build is passing

- Implemented comprehensive audit logging for Tasks, Users, Settings, Goals, Labels, AI Chat, and Rewards.
- Added Admin UI for MCP Server settings and Audit Logs.
- Created docker-compose-production.yml with Traefik configuration.
- Fixed backend bugs (missing storage methods, route closure).
- Added Audit Logging Guidelines.
This commit is contained in:
2025-12-15 15:53:31 +01:00
parent fdf321cde9
commit d1736c5991
35 changed files with 5165 additions and 499 deletions
+84 -7
View File
@@ -3,6 +3,23 @@
"title": "TaskFlow",
"backToTasks": "Zurück zu Aufgaben"
},
"notifications": {
"title": "Benachrichtigungen",
"enableBrowser": "Browser-Benachrichtigungen aktivieren",
"description": "Erhalten Sie Warnungen für bevorstehende und überfällige Aufgaben.",
"enabledTitle": "Benachrichtigungen aktiviert",
"enabledBody": "Sie erhalten nun Warnungen für Ihre Aufgaben.",
"upcomingTitle": "Demnächst: {{task}}",
"upcomingBody": "Fällig in {{time}}",
"overdueTitle": "Überfällig: {{task}}",
"overdueBody": "Diese Aufgabe ist jetzt überfällig!"
},
"unscheduled": {
"title": "Ungeplante Aufgaben",
"empty": "Keine ungeplanten Aufgaben!",
"schedule": "Planen",
"tab": "Ungeplant"
},
"navigation": {
"tasks": "Aufgaben",
"focus": "Fokus",
@@ -73,7 +90,10 @@
"create": "Aufgabe erstellen",
"smartInputActive": "Smart Input Aktiv",
"energy": "Energie",
"minutesPlaceholder": "Minuten (optional)"
"minutesPlaceholder": "Minuten (optional)",
"duration": "Dauer",
"durationNone": "Keine",
"startDate": "Startdatum"
},
"taskDetails": {
"title": "Aufgabendetails",
@@ -93,6 +113,11 @@
"notesTab": "Notizen",
"timeTab": "Zeiterfassung",
"editTask": "Aufgabe bearbeiten",
"subtasksTab": "Teilaufgaben",
"subtasks": "Teilaufgaben",
"newSubtaskPlaceholder": "Titel der Teilaufgabe...",
"createSubtask": "Teilaufgabe hinzufügen",
"noSubtasks": "Noch keine Teilaufgaben",
"titleLabel": "Titel",
"titlePlaceholder": "Aufgabentitel",
"taskNotes": "Aufgabennotizen",
@@ -117,7 +142,21 @@
"timeTracked": "Erfasste Zeit",
"delete": "Aufgabe löschen",
"cancel": "Abbrechen",
"save": "Änderungen speichern"
"save": "Änderungen speichern",
"startDate": "Startdatum",
"estimatedDuration": "Geschätzte Dauer",
"subtaskOf": "Teilaufgabe von:",
"hierarchyRestriction": "Teilaufgaben können keine eigenen Teilaufgaben haben. Dies ist eine strikte 1-Level-Hierarchie.",
"blockedBy": "Blockiert durch",
"autoSchedule": "Auto-Planen",
"pickDate": "Datum wählen",
"scheduling": "Plane...",
"scheduledFor": "Geplant für {{date}}",
"scheduleFail": "Planung fehlgeschlagen: {{error}}",
"durationUnits": {
"m": "Min",
"h": "Std"
}
},
"taskCard": {
"play": "Timer starten",
@@ -255,9 +294,25 @@
},
"ai": {
"title": "KI-Assistent",
"assistant": "KI Assistent",
"welcome": "Wie kann ich Ihnen heute bei Ihren Aufgaben helfen?",
"welcomeTitle": "Wie kann ich Ihnen helfen?",
"welcomeDesc": "Ich kann Sie bei Ihren Aufgaben, Ihrer Planung und mehr unterstützen.",
"thinking": "Denke nach...",
"placeholder": "Stellen Sie eine Frage...",
"newChat": "Neuer Chat",
"newChatDefault": "Neuer Chat",
"startChat": "Neuen Chat starten",
"selectConversation": "Chat wechseln",
"recentChats": "Letzte Chats",
"noChats": "Keine letzten Chats",
"chatRenamed": "Chat umbenannt",
"chatDeleted": "Chat gelöscht",
"deleteConfirm": "Diesen Chat wirklich löschen?",
"noConversation": "Kein Chat ausgewählt",
"sendFailed": "Senden fehlgeschlagen",
"errorSending": "Fehler beim Senden",
"disclaimer": "KI kann Fehler machen. Überprüfen Sie wichtige Informationen.",
"error": "Ich bin auf einen Fehler gestoßen"
},
"userManagement": {
@@ -425,14 +480,36 @@
"daily_streak": "Täglicher Serien-Bonus",
"daily_clear_bonus": "Tagesziel-Bonus",
"goal_completed": "Ziel erreicht"
},
"rules": {
"title": "Gamification Regeln",
"xpSystem": "XP System",
"levelRequirements": "Level Anforderungen",
"actions": "Aktionen & Belohnungen",
"level": "Level {{level}}",
"xp": "{{xp}} XP",
"action": "Aktion",
"points": "Punkte",
"createTask": "Aufgabe erstellen",
"createSubtask": "Unteraufgabe erstellen",
"updateTask": "Aufgabe aktualisieren",
"completeTask": "Aufgabe erledigen (Pünktlich)",
"completeTaskLate": "Aufgabe erledigen (Verspätet)",
"aiAction": "AI Funktion nutzen",
"dailyStreak": "Täglicher Serienbonus"
}
},
"ranks": {
"novice": "Einsteiger",
"builder": "Baumeister",
"planner": "Planer",
"architect": "Architekt",
"master": "Meister"
"novice": "Neuling",
"apprentice": "Lehrling",
"journeyman": "Geselle",
"artisan": "Handwerker",
"expert": "Experte",
"master": "Meister",
"grandmaster": "Großmeister",
"virtuoso": "Virtuose",
"legend": "Legende",
"mythic": "Mythisch"
},
"leaderboardPage": {
"title": "Bestenliste",