fix: Modulübersicht mit features/INDEX.md synchronisieren, Versions-Spalte ergänzen
features.ts hatte nur 18 von 67 PROJ-Einträgen mit größtenteils falschem Status (z.B. PROJ-1 zeigte "In Review" statt "Deployed", PROJ-9 zeigte "In Progress" statt "Removed") — komplett losgelöst von features/INDEX.md, offenbar seit den frühen Tagen des Projekts nie mehr aktualisiert. Vollständig mit INDEX.md abgeglichen (alle PROJ-1 bis PROJ-67 inkl. PROJ-56c), FeatureStatus um "Removed" erweitert. Neues Feld "version" (manuell gepflegt pro PROJ, Baseline 1.0) + Tabellenspalte im Modulübersicht-Tab.
This commit is contained in:
@@ -16,6 +16,7 @@ const statusColors: Record<string, string> = {
|
|||||||
"In Progress": "bg-yellow-100 text-yellow-800",
|
"In Progress": "bg-yellow-100 text-yellow-800",
|
||||||
"In Review": "bg-blue-100 text-blue-800",
|
"In Review": "bg-blue-100 text-blue-800",
|
||||||
"Deployed": "bg-green-100 text-green-800",
|
"Deployed": "bg-green-100 text-green-800",
|
||||||
|
"Removed": "bg-red-50 text-red-700 line-through",
|
||||||
};
|
};
|
||||||
|
|
||||||
const statusCounts = (list: Feature[]) => ({
|
const statusCounts = (list: Feature[]) => ({
|
||||||
@@ -63,6 +64,7 @@ export function ModulesTab() {
|
|||||||
<TableHead className="w-24 text-center">Frontend</TableHead>
|
<TableHead className="w-24 text-center">Frontend</TableHead>
|
||||||
<TableHead className="w-24 text-center">Backend</TableHead>
|
<TableHead className="w-24 text-center">Backend</TableHead>
|
||||||
<TableHead className="w-32">Aktualisiert</TableHead>
|
<TableHead className="w-32">Aktualisiert</TableHead>
|
||||||
|
<TableHead className="w-20">Version</TableHead>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
@@ -92,6 +94,9 @@ export function ModulesTab() {
|
|||||||
<TableCell className="text-sm text-muted-foreground">
|
<TableCell className="text-sm text-muted-foreground">
|
||||||
{f.lastUpdated}
|
{f.lastUpdated}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
|
<TableCell className="font-mono text-xs text-muted-foreground">
|
||||||
|
{f.version}
|
||||||
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
))}
|
))}
|
||||||
</TableBody>
|
</TableBody>
|
||||||
|
|||||||
+74
-20
@@ -1,4 +1,9 @@
|
|||||||
export type FeatureStatus = "Planned" | "In Progress" | "In Review" | "Deployed";
|
// Datenquelle für den Admin-Tab "Modulübersicht". Muss synchron zu
|
||||||
|
// features/INDEX.md gehalten werden (ID, Status, Erstellungsdatum) — bei
|
||||||
|
// jedem neuen/aktualisierten PROJ-Ticket hier mitziehen, sonst zeigt der
|
||||||
|
// Tab wieder veraltete Stati an (siehe Sync 2026-07-05: 18 von 67 Einträgen,
|
||||||
|
// falsche Stati).
|
||||||
|
export type FeatureStatus = "Planned" | "In Progress" | "In Review" | "Deployed" | "Removed";
|
||||||
|
|
||||||
export interface Feature {
|
export interface Feature {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -6,26 +11,75 @@ export interface Feature {
|
|||||||
status: FeatureStatus;
|
status: FeatureStatus;
|
||||||
frontend: boolean;
|
frontend: boolean;
|
||||||
backend: boolean;
|
backend: boolean;
|
||||||
lastUpdated: string; // YYYY-MM-DD
|
lastUpdated: string; // YYYY-MM-DD, aus features/INDEX.md "Created"
|
||||||
|
version: string; // manuell gepflegt, hochzählen bei relevanter Änderung am Feature
|
||||||
}
|
}
|
||||||
|
|
||||||
export const features: Feature[] = [
|
export const features: Feature[] = [
|
||||||
{ id: "PROJ-1", name: "Authentifizierung & Rollen", status: "In Review", frontend: true, backend: true, lastUpdated: "2026-03-15" },
|
{ id: "PROJ-1", name: "Authentifizierung & Rollen (User/Admin)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-2", name: "Import: EML/MBOX Upload", status: "In Progress", frontend: true, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-2", name: "Import: EML/MBOX Upload", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-3", name: "Import: IMAP-Verbindung", status: "In Progress", frontend: true, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-3", name: "Import: IMAP-Verbindung", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-4", name: "Import: SMTP-Eingang via BCC", status: "In Progress", frontend: false, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-4", name: "Import: SMTP-Eingang via BCC (primär)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-5", name: "Speicherung & Volltext-Indexierung", status: "In Review", frontend: false, backend: true, lastUpdated: "2026-03-14" },
|
{ id: "PROJ-5", name: "Speicherung & Volltext-Indexierung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-6", name: "Volltext-Suche & Filterung", status: "In Progress", frontend: true, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-6", name: "Volltext-Suche & Filterung", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-7", name: "E-Mail-Ansicht (Lesen & Anhänge)", status: "In Progress", frontend: true, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-7", name: "E-Mail-Ansicht (Lesen & Anhänge)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-8", name: "Automatischer IMAP-Sync (Cron-Job)", status: "In Progress", frontend: false, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-8", name: "Automatischer IMAP-Sync (Cron-Job)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-9", name: "Ordner- & Label-Verwaltung", status: "In Progress", frontend: false, backend: false, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-9", name: "Ordner- & Label-Verwaltung", status: "Removed", frontend: false, backend: false, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-10", name: "Admin-Bereich: Nutzer- & Postfachverw.", status: "In Progress", frontend: true, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-10", name: "Admin-Bereich: Nutzer- & Postfachverwaltung", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-11", name: "Audit-Log & Compliance-Berichte", status: "In Progress", frontend: true, backend: true, lastUpdated: "2026-03-12" },
|
{ id: "PROJ-11", name: "Audit-Log & Compliance-Berichte", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-12", name: "E-Mail-Export (EML/PDF/ZIP)", status: "In Review", frontend: true, backend: true, lastUpdated: "2026-03-13" },
|
{ id: "PROJ-12", name: "E-Mail-Export (EML/PDF)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-12", version: "1.0" },
|
||||||
{ id: "PROJ-13", name: "REST API für externe CRM-Anbindung", status: "In Progress", frontend: false, backend: true, lastUpdated: "2026-03-13" },
|
{ id: "PROJ-13", name: "REST API für externe CRM-Anbindung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-13", version: "1.0" },
|
||||||
{ id: "PROJ-14", name: "Import: POP3-Verbindung", status: "In Progress", frontend: false, backend: false, lastUpdated: "2026-03-13" },
|
{ id: "PROJ-14", name: "Import: POP3-Verbindung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-13", version: "1.0" },
|
||||||
{ id: "PROJ-15", name: "CLI Import & Export", status: "In Review", frontend: false, backend: true, lastUpdated: "2026-03-13" },
|
{ id: "PROJ-15", name: "CLI Import & Export (archivmail-User)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-13", version: "1.0" },
|
||||||
{ id: "PROJ-16", name: "LDAP / Active Directory Anbindung", status: "In Progress", frontend: false, backend: false, lastUpdated: "2026-03-13" },
|
{ id: "PROJ-16", name: "LDAP / Active Directory Anbindung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-13", version: "1.0" },
|
||||||
{ id: "PROJ-17", name: "Admin Dashboard – Systemauslastung", status: "In Review", frontend: true, backend: true, lastUpdated: "2026-03-14" },
|
{ id: "PROJ-17", name: "Admin Dashboard – Systemauslastung & Archiv-Übersicht", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-14", version: "1.0" },
|
||||||
{ id: "PROJ-18", name: "E-Mail Integritätsprüfung", status: "In Review", frontend: true, backend: true, lastUpdated: "2026-03-14" },
|
{ id: "PROJ-18", name: "E-Mail Integritätsprüfung", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-14", version: "1.0" },
|
||||||
|
{ id: "PROJ-19", name: "Mailpiler → archivmail Migrationstool", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-17", version: "1.0" },
|
||||||
|
{ id: "PROJ-20", name: "Nutzer-Löschung & E-Mail-Verbleib (GoBD-konform)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-17", version: "1.0" },
|
||||||
|
{ id: "PROJ-21", name: "Multi-Mandanten-Fähigkeit (Multi-Tenancy)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-17", version: "1.0" },
|
||||||
|
{ id: "PROJ-22", name: "LDAP / AD – Web-GUI Konfiguration & Test", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-17", version: "1.0" },
|
||||||
|
{ id: "PROJ-23", name: "Pro-Mandant LDAP / Active Directory", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-17", version: "1.0" },
|
||||||
|
{ id: "PROJ-24", name: "TOTP Zwei-Faktor-Authentifizierung (2FA)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-18", version: "1.0" },
|
||||||
|
{ id: "PROJ-25", name: "User-Profil & Einstellungen", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-18", version: "1.0" },
|
||||||
|
{ id: "PROJ-26", name: "IMAP-Server-Schnittstelle (Read-Only Archivzugriff)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-18", version: "1.0" },
|
||||||
|
{ id: "PROJ-27", name: "Container-Ready (Dockerfile + Env-Vars)", status: "In Review", frontend: false, backend: true, lastUpdated: "2026-03-28", version: "1.0" },
|
||||||
|
{ id: "PROJ-28", name: "Self-Service Onboarding (Sign-up, Passwort-Reset)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-28", version: "1.0" },
|
||||||
|
{ id: "PROJ-29", name: "Tenant-Quotas & Usage-Limits", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-28", version: "1.0" },
|
||||||
|
{ id: "PROJ-30", name: "Volltext-Index: Xapian → Manticore Search Migration", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-28", version: "1.0" },
|
||||||
|
{ id: "PROJ-31", name: "Billing & Subscriptions (Stripe)", status: "Planned", frontend: false, backend: false, lastUpdated: "2026-03-28", version: "1.0" },
|
||||||
|
{ id: "PROJ-32", name: "Message-ID-basierte Duplikatserkennung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-03-31", version: "1.0" },
|
||||||
|
{ id: "PROJ-33", name: "IMAP-Modus: Gemeinsames Archiv vs. Persönlicher Posteingang", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-31", version: "1.0" },
|
||||||
|
{ id: "PROJ-34", name: "Retention-Policy + Löschsperre (GoBD-Compliance)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-03-31", version: "1.0" },
|
||||||
|
{ id: "PROJ-35", name: "OCR & Anhang-Volltext-Indexierung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-04-04", version: "1.0" },
|
||||||
|
{ id: "PROJ-36", name: "gzip-Kompression + storage_objects-Tabelle", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-37", name: "Attachment-Deduplication (Hash-basiert)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-38", name: "Mail-Threading (In-Reply-To / References)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-39", name: "eDiscovery Export (ZIP + Metadaten-CSV)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-40", name: "Prometheus Metriken + Health-Check", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-41", name: "Dashboard Zeitreihe + Speicherprognose", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-42", name: "Gespeicherte Suchanfragen", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-04-05", version: "1.0" },
|
||||||
|
{ id: "PROJ-43", name: "Automatische Archivierungsregeln", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-07-04", version: "1.1" },
|
||||||
|
{ id: "PROJ-44", name: "OCR-GUI-Integration (Status, Download, Such-Highlight)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-05-08", version: "1.0" },
|
||||||
|
{ id: "PROJ-45", name: "IMAP Per-Folder UID-Tracking + UIDVALIDITY-Check", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-05-11", version: "1.0" },
|
||||||
|
{ id: "PROJ-46", name: "E-Mail als primärer Login-Identifier für Tenant-User", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-07-04", version: "1.0" },
|
||||||
|
{ id: "PROJ-47", name: "Tenant-Voll-Export per CLI", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-13", version: "1.0" },
|
||||||
|
{ id: "PROJ-48", name: "Audit-Log Unveränderbarkeit (Nachbesserung PROJ-11)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-13", version: "1.0" },
|
||||||
|
{ id: "PROJ-49", name: "Verschlüsselungspflicht at-rest (Healthcheck & Warnung)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-06-13", version: "1.0" },
|
||||||
|
{ id: "PROJ-50", name: "DSGVO-Löschersuchen für Mail-Inhalte (GoBD-Vorrang)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-06-13", version: "1.0" },
|
||||||
|
{ id: "PROJ-51", name: "Aufbewahrungsfristen nach Dokumentenart (Retention-Kategorien)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-06-13", version: "1.0" },
|
||||||
|
{ id: "PROJ-52", name: "Vollständigkeits-Reconciliation (Zähl-Report)", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-07-04", version: "1.1" },
|
||||||
|
{ id: "PROJ-53", name: "Konfigurierbare Listenanzahl pro Seite", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-06-14", version: "1.0" },
|
||||||
|
{ id: "PROJ-54", name: "Fix Listenansicht/Pagination für Rolle \"user\"", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-06-14", version: "1.0" },
|
||||||
|
{ id: "PROJ-55", name: "Fix Tenant-Isolation für Rolle \"auditor\" + Audit-Log", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-21", version: "1.0" },
|
||||||
|
{ id: "PROJ-56", name: "Last-Entzerrung für Hintergrundjobs (OCR/IMAP-Sync)", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-22", version: "1.0" },
|
||||||
|
{ id: "PROJ-56c", name: "Cron-gesteuerte Löschung abgelaufener + markierter Mails", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-07-04", version: "1.0" },
|
||||||
|
{ id: "PROJ-57", name: "UTF-8-Encoding-Fix für Mails mit Nicht-UTF-8-Charset", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-24", version: "1.0" },
|
||||||
|
{ id: "PROJ-58", name: "Indexierung + OCR als Cron-Batch-Jobs", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-24", version: "1.0" },
|
||||||
|
{ id: "PROJ-61", name: "Fix Cross-Tenant Stored XSS via Mandanten-Logo", status: "Deployed", frontend: true, backend: true, lastUpdated: "2026-06-25", version: "1.0" },
|
||||||
|
{ id: "PROJ-62", name: "Fix Cross-Tenant IDOR bei POP3-Konto-Löschung/-Import", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-25", version: "1.0" },
|
||||||
|
{ id: "PROJ-63", name: "Defensive Tenant-Scope-Härtung der Tenant-Verwaltungs-Endpunkte", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-06-25", version: "1.0" },
|
||||||
|
{ id: "PROJ-64", name: "Session-Invalidation + Datei-Permissions-Härtung", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-07-03", version: "1.0" },
|
||||||
|
{ id: "PROJ-65", name: "Physische Tenant-Trennung im Storage-Layer", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-07-04", version: "1.0" },
|
||||||
|
{ id: "PROJ-66", name: "Backup-Strategie für Store, Keyfile, PostgreSQL", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-07-04", version: "1.0" },
|
||||||
|
{ id: "PROJ-67", name: "Manticore Search Upgrade + Auto-Upgrade-Pfad", status: "Deployed", frontend: false, backend: true, lastUpdated: "2026-07-05", version: "1.0" },
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user