12 KiB
Phase B - Mail-Adler Core-Architektur Planung
Aktueller Status (Nach Phase 4+ Cleanup)
- ✅ Alle Video-abhängigen Abhängigkeiten aus CMakeLists.txt entfernt
- ✅ Alle MLT/Video-Code in main.cpp, mainwindow.h, mainwindow.cpp deaktiviert
- ✅ Alle Player/Playlist/Timeline-Referenzen deaktiviert (23 Funktionen)
- ✅ Syntax-Validierung bestanden
- ⏳ Vollständiger Kompilierungstest ausstehend (CMake/Ninja-Setup)
Erhaltene Infrastruktur (Phase A+4 Erfolg)
Diese Komponenten bleiben funktional und unterstützen Mail-Client-Operationen:
Datenbankschicht
- Datei:
src/database.cpp,src/database.h - Zweck: SQLite3-Persistierung
- Anwendungsfall: Mail-Speicherung, Kontokonfigurationen, Ordnerhierarchie
- Status: Bereit zur Erweiterung mit Mail-Schema
Job-Warteschlange
- Datei:
src/jobqueue.cpp,src/jobqueue.h - Zweck: Asynchrone Task-Warteschlange
- Anwendungsfall: Hintergrund-Mail-Sync, Ordner-Updates, Message-Download
- Status: Bereit für IMAP/SMTP-Operationen
Einstellungssystem
- Datei:
src/settings.cpp,src/settings.h - Zweck: Anwendungspräferenzen-Persistierung
- Anwendungsfall: Kontoanmeldedaten, UI-Präferenzen, Sync-Intervalle
- Status: Erweiterbar für Mail-spezifische Einstellungen
Protokollierung
- Modul:
CuteLogger/ - Zweck: Debug- und Operationsprotokollierung
- Status: Verfügbar für Mail-Operationen
UI-Framework
- Basis: Qt6 Widgets (bereits in Gebrauch)
- Status: Hauptfenster, Dialoge, Dock-Widgets funktional
Phase B Leistungsergebnisse
1. Mail-Datenmodell & Schema
Ziel: Mail-Speicherstruktur definieren
Komponenten:
-
src/models/MailMessage.h/cpp- E-Mail-Nachrichts-Entity- Von, An, Betreff, Text, Datum, Flags (Gelesen, Markiert, Spam)
- UID, Ordner-ID, Konto-ID
- Anhang-Metadaten
-
src/models/MailFolder.h/cpp- IMAP-Ordner-Entity- Ordnername, Pfad, Flags
- Gelesen/Ungelesen-Zählungen
- Sync-Status-Verfolgung
-
src/models/MailAccount.h/cpp- E-Mail-Konto-Entity- IMAP-Server-Einstellungen (Host, Port, Auth)
- SMTP-Server-Einstellungen
- Sync-Präferenzen (Intervall, Ordner)
-
src/database/MailSchema.h/cpp- SQLite-Schema- Tabellen: accounts, folders, messages, attachments, sync_state, telemetry
- Indizes für schnelle Abfragen
- Migrationssystem
2. IMAP-Client-Modul
Ziel: E-Mail-Abruf und Ordnerverwaltung
Komponenten:
-
src/imap/ImapClient.h/cpp- IMAP-Protokoll-Wrapper- Verbindungsverwaltung
- Authentifizierung (LOGIN, PLAIN, OAuth2-Grundgerüst)
- Ordner-Enumeration
- Message-Abruf (Header + Text)
- UID-Verfolgung für Sync
-
src/imap/ImapFolder.h/cpp- Ordner-Operationen- Ordner-Status (EXISTS, RECENT, UNSEEN)
- Select/Close-Operationen
- Message-Suche (nach Datum, Absender, etc.)
-
src/imap/ImapSync.h/cpp- Inkrementelles Sync-Engine- Letzten Sync-Status verfolgbar
- Nur neue Nachrichten abrufen
- Flag-Änderungen handhaben (gelesen/markiert-Status)
- Konfliktauflösung
3. SMTP-Client-Modul
Ziel: E-Mail-Versandmöglichkeit
Komponenten:
-
src/smtp/SmtpClient.h/cpp- SMTP-Protokoll-Wrapper- Verbindungsverwaltung
- Authentifizierung
- Message-Versand
- Fehlerbehandlung
-
src/smtp/MessageComposer.h/cpp- Kompositionsoperationen- MIME-Nachrichten erstellen
- Anhänge handhaben
- Zitieren/Antworten-Operationen
4. Konto-Manager
Ziel: Multi-Konto-Unterstützung
Komponenten:
-
src/account/AccountManager.h/cpp- Konten hinzufügen/entfernen/bearbeiten
- Anmeldedaten sicher speichern (verschlüsselt)
- Kontowechsel
-
src/account/CredentialStorage.h/cpp- Plattformspezifischer sicherer Speicher (Windows: DPAPI, Linux: keyring)
- Anmeldedaten-Caching
- Token-Aktualisierung (OAuth2)
5. Mail-Synchronisierungsdienst
Ziel: Automatisierte Hintergrund-Sync
Komponenten:
-
src/sync/SyncService.h/cpp- Periodische Sync-Planung
- JobQueue-Integration
- Fehlerwiederherstellung
- Konfliktauflösung
-
src/sync/SyncScheduler.h/cpp- Intervallbasierter Sync
- Manuelle Sync-Auslöser
- Push-Benachrichtigungsunterstützung (IMAP IDLE)
6. UI-Schicht (Phase B Minimal)
Ziel: Basis-Mail-Client-Schnittstelle
Komponenten:
-
src/ui/MailListWidget.h/cpp- Message-Listenansicht- TableView mit Absender, Betreff, Datum, Flags
- Threading-Support-Grundgerüst
-
src/ui/MailViewWidget.h/cpp- Message-Viewer- Gesamte Nachrichteninhalt anzeigen
- HTML/Klartext handhaben
- Anhang-Vorschau/Download
-
src/ui/ComposeDialog.h/cpp- Message-Komposition- Text-Editor
- Empfänger-Felder
- Anhang-Verwaltung
-
src/ui/AccountSetupDialog.h/cpp- Kontokonfiguration- Server-Details
- Authentifizierung
- Ordner-Auswahl
Phase B Architektur-Diagramm
┌─────────────────────────────────────────────────────────┐
│ Mail-Adler Hauptfenster │
├─────────────────────────────────────────────────────────┤
│ Erhalten: Statusleiste, Menüs, Toolbars, Einstellungen│
│ Neu: Mail-Ansichten (Liste, Komposition, Konten) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ UI-Komponenten (Phase B) │
├─────────────────────────────────────────────────────────┤
│ - MailListWidget │
│ - MailViewWidget │
│ - ComposeDialog │
│ - AccountSetupDialog │
└─────────────────────────────────────────────────────────┘
↓ (signals/slots)
┌─────────────────────────────────────────────────────────┐
│ Konto-Manager & Synchronisierungsdienst │
├─────────────────────────────────────────────────────────┤
│ - AccountManager (hinzufügen/entfernen/wechseln) │
│ - SyncService (Hintergrund-Sync) │
│ - CredentialStorage (sichere Auth) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ IMAP & SMTP Client-Module │
├─────────────────────────────────────────────────────────┤
│ - ImapClient (abrufen, sync, Ordner-Ops) │
│ - SmtpClient (Versand) │
│ - ImapSync (inkrementelles Sync-Engine) │
└─────────────────────────────────────────────────────────┘
↓ (Datenbankoperationen)
┌─────────────────────────────────────────────────────────┐
│ Mail-Datenmodelle & Datenbank │
├─────────────────────────────────────────────────────────┤
│ - MailMessage, MailFolder, MailAccount │
│ - MailSchema (SQLite-Tabellen) │
│ - Database (von Phase A - Persistierungs-Schicht) │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Infrastruktur-Schicht │
├─────────────────────────────────────────────────────────┤
│ - JobQueue (async Mail-Operationen) │
│ - Settings (App-Konfiguration) │
│ - Logging (Debug/Audit) │
│ - Telemetry (Fehlerberichterstattung) │
└─────────────────────────────────────────────────────────┘
Phase B Implementierungs-Reihenfolge
Meilenstein 1: Datenschicht
- MailMessage, MailFolder, MailAccount Modelle
- MailSchema - SQLite-Tabellen erstellen und Migrationen
- Datenbankschema-Validierung
Meilenstein 2: IMAP-Modul
- ImapClient - Basis-Verbindung, Authentifizierung, Ordnerliste
- ImapFolder - Ordner-Operationen (select, status)
- ImapSync - UID-Verfolgung, inkrementeller Abruf
- Testen - Mock-IMAP-Server (z.B. test.example.com)
Meilenstein 3: SMTP-Modul
- SmtpClient - Verbindung, Auth, grundlegender Versand
- MessageComposer - MIME-Nachrichts-Erstellung
- Fehlerbehandlung & Wiederholungen
Meilenstein 4: Konto- & Sync-Services
- AccountManager - Konten hinzufügen/entfernen/wechseln
- CredentialStorage - Sichere Anmeldedaten-Verarbeitung
- SyncService - JobQueue-Integration, periodischer Sync
- SyncScheduler - Hintergrund-Sync-Automatisierung
Meilenstein 5: Basis-UI
- MailListWidget - Nachrichten anzeigen
- MailViewWidget - Nachrichten lesen
- ComposeDialog - Nachrichten versenden
- AccountSetupDialog - Konten konfigurieren
CMakeLists.txt Aktualisierungen erforderlich
Neue Verzeichnisse hinzufügen
add_subdirectory(src/models)
add_subdirectory(src/database)
add_subdirectory(src/imap)
add_subdirectory(src/smtp)
add_subdirectory(src/account)
add_subdirectory(src/sync)
add_subdirectory(src/ui)
Externe Abhängigkeiten (bereits verfügbar)
- Qt6::Core
- Qt6::Sql
- Qt6::Network (für IMAP/SMTP-Verbindungen)
- Qt6::Widgets
Potenzielle neue Abhängigkeiten
- libsasl2 (SMTP-Authentifizierung)
- openssl (TLS/SSL für sichere Verbindungen)
- libkeyring (Linux-Anmeldedaten-Speicher)
Erfolgskriterien
✅ Phase B Abgeschlossen wenn:
- Alle 6 Komponenten (Daten, IMAP, SMTP, Konto, Sync, UI) implementiert
- Einzel-Konto IMAP-Sync funktional
- E-Mail-Versand über SMTP funktional
- Nachrichten bleiben in SQLite-Datenbank erhalten
- Hintergrund-Sync läuft ohne UI-Blockierung
- Einstellungen bleiben über Sitzungen erhalten
Nächste Schritte nach Phase B
- Phase C: Multi-Konto-Unterstützungs-Verbesserung
- Phase D: IMAP IDLE Push-Benachrichtigungen
- Phase E: Erweiterte Suche, Filter, Threading
- Phase F: Anhang-Download/Anzeige
- Phase G: Verschlüsselung (PGP/S-MIME) Unterstützung