feat(sprint9): Phase 5 — Berichtszentrale, sidebar reorg, dashboard enhancement

- Sidebar: reorganized into 4 collapsible groups (Betrieb, Kommunikation, Verwaltung, Compliance)
- Berichtszentrale: new /reports-center page with report cards grouped by category (Finance, KCanG, DSGVO, Admin), format selector, date range pickers, Behörden-Export dialog with password protection
- Dashboard: added Outstanding Payments and Monthly Income KPI cards, Upcoming Events widget, Latest Announcements widget, conditional alert cards
- Pricing: fixed mobile overflow at 375px viewport on comparison table
- Frontend service: new compliance-reports.ts with React Query hooks for report generation, authority export, and download
- i18n: added reportsCenter.* and dashboard widget keys to de.json and en.json
This commit is contained in:
Patrick Plate
2026-06-15 13:45:48 +02:00
parent c3722ab726
commit 87511e0485
7 changed files with 1130 additions and 99 deletions
+104 -1
View File
@@ -66,7 +66,15 @@
"today": "Heute",
"trend": "+{value}% ggü. Vormonat",
"quotaUsed": "{value}% verbraucht",
"distributionCount": "{count} Ausgaben, {grams}g"
"distributionCount": "{count} Ausgaben, {grams}g",
"outstandingPayments": "Offene Zahlungen",
"monthlyIncome": "Monatliches Einkommen",
"thisMonth": "Diesen Monat",
"strainsAvailable": "Sorten verfügbar",
"upcomingEvents": "Nächste Termine",
"latestAnnouncements": "Neueste Beiträge",
"rsvps": "Zusagen",
"viewAll": "Alle anzeigen"
},
"members": {
"title": "Mitgliederverwaltung",
@@ -1004,5 +1012,100 @@
"positions": "Positionen",
"active": "Aktiv",
"inactive": "Inaktiv"
},
"reportsCenter": {
"title": "Berichtszentrale",
"subtitle": "Alle gesetzlichen und internen Berichte an einem Ort generieren und verwalten.",
"generate": "Generieren",
"cancel": "Abbrechen",
"authorityExport": {
"title": "Behörden-Export",
"description": "Gebündelter Export aller behördlich relevanten Dokumente für ein Kalenderjahr.",
"button": "Behörden-Export starten",
"dialogTitle": "Behörden-Export erstellen",
"dialogDescription": "Erstellt ein passwortgeschütztes Archiv mit allen compliance-relevanten Berichten für das gewählte Jahr.",
"warning": "Dieser Export enthält sensible Daten und wird im Audit-Protokoll erfasst. Bitte nur bei berechtigter Anforderung durchführen.",
"year": "Berichtsjahr",
"password": "Passwort für Archiv",
"passwordPlaceholder": "Sicheres Passwort eingeben",
"confirm": "Export erstellen"
},
"categories": {
"finance": "Finanzen",
"kcang": "KCanG-Compliance",
"dsgvo": "DSGVO",
"admin": "Verwaltung"
},
"reports": {
"EUER": {
"name": "EÜR",
"description": "Einnahmenüberschussrechnung für den gewählten Zeitraum"
},
"KASSENBUCH_EXPORT": {
"name": "Kassenbuch-Export",
"description": "Vollständige Kassenbuchführung als PDF oder CSV"
},
"BEITRAGSBESCHEINIGUNG": {
"name": "Beitragsbescheinigung",
"description": "Bescheinigung über gezahlte Mitgliedsbeiträge"
},
"JAHRESBERICHT_BEHOERDE": {
"name": "Jahresbericht Behörde",
"description": "Gesetzlich vorgeschriebener Bericht an die zuständige Behörde"
},
"AUSGABEPROTOKOLL": {
"name": "Ausgabeprotokoll",
"description": "Protokoll aller Ausgaben im Zeitraum mit Mengen und Empfängern"
},
"VERNICHTUNGSPROTOKOLL": {
"name": "Vernichtungsprotokoll",
"description": "Dokumentation der ordnungsgemäßen Vernichtung von Cannabis"
},
"TRANSPORTZERTIFIKAT": {
"name": "Transportzertifikat",
"description": "Zertifikat für den genehmigten Transport von Cannabis"
},
"BESTANDSFUEHRUNG": {
"name": "Bestandsführung",
"description": "Aktueller Lagerbestand mit allen Ein- und Ausgängen"
},
"VERARBEITUNGSVERZEICHNIS": {
"name": "Verarbeitungsverzeichnis",
"description": "Verzeichnis aller Verarbeitungstätigkeiten gem. Art. 30 DSGVO"
},
"TOM": {
"name": "TOM",
"description": "Technische und organisatorische Maßnahmen gem. Art. 32 DSGVO"
},
"DSFA": {
"name": "DSFA",
"description": "Datenschutz-Folgenabschätzung gem. Art. 35 DSGVO"
},
"LOESCHKONZEPT": {
"name": "Löschkonzept",
"description": "Konzept zur fristgerechten Datenlöschung"
},
"DATENPANNEN_MELDUNG": {
"name": "Datenpannen-Meldung",
"description": "Vorlage zur Meldung einer Datenschutzverletzung"
},
"MITGLIEDERLISTE_REGISTER": {
"name": "Mitgliederliste Register",
"description": "Offizielle Mitgliederliste für das Vereinsregister"
},
"VORSTANDSAENDERUNG": {
"name": "Vorstandsänderung",
"description": "Meldung einer Vorstandsänderung ans Vereinsregister"
}
},
"history": {
"title": "Generierte Berichte",
"empty": "Noch keine Berichte generiert. Wähle oben einen Bericht aus, um zu beginnen.",
"report": "Bericht",
"format": "Format",
"date": "Datum",
"user": "Erstellt von",
"size": "Größe"
}
}
}