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:
sysops
2026-07-05 19:44:11 +02:00
parent 8564d7c11f
commit 4af0e4a280
2 changed files with 79 additions and 20 deletions
+5
View File
@@ -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
View File
@@ -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" },
]; ];