Name shortcut zu mailadler
This commit is contained in:
277
PHASE_B_PLANUNG.md
Normal file
277
PHASE_B_PLANUNG.md
Normal file
@@ -0,0 +1,277 @@
|
||||
# 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
|
||||
1. **MailMessage, MailFolder, MailAccount** Modelle
|
||||
2. **MailSchema** - SQLite-Tabellen erstellen und Migrationen
|
||||
3. **Datenbankschema-Validierung**
|
||||
|
||||
### Meilenstein 2: IMAP-Modul
|
||||
1. **ImapClient** - Basis-Verbindung, Authentifizierung, Ordnerliste
|
||||
2. **ImapFolder** - Ordner-Operationen (select, status)
|
||||
3. **ImapSync** - UID-Verfolgung, inkrementeller Abruf
|
||||
4. **Testen** - Mock-IMAP-Server (z.B. test.example.com)
|
||||
|
||||
### Meilenstein 3: SMTP-Modul
|
||||
1. **SmtpClient** - Verbindung, Auth, grundlegender Versand
|
||||
2. **MessageComposer** - MIME-Nachrichts-Erstellung
|
||||
3. **Fehlerbehandlung & Wiederholungen**
|
||||
|
||||
### Meilenstein 4: Konto- & Sync-Services
|
||||
1. **AccountManager** - Konten hinzufügen/entfernen/wechseln
|
||||
2. **CredentialStorage** - Sichere Anmeldedaten-Verarbeitung
|
||||
3. **SyncService** - JobQueue-Integration, periodischer Sync
|
||||
4. **SyncScheduler** - Hintergrund-Sync-Automatisierung
|
||||
|
||||
### Meilenstein 5: Basis-UI
|
||||
1. **MailListWidget** - Nachrichten anzeigen
|
||||
2. **MailViewWidget** - Nachrichten lesen
|
||||
3. **ComposeDialog** - Nachrichten versenden
|
||||
4. **AccountSetupDialog** - Konten konfigurieren
|
||||
|
||||
## CMakeLists.txt Aktualisierungen erforderlich
|
||||
|
||||
### Neue Verzeichnisse hinzufügen
|
||||
```cmake
|
||||
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
|
||||
Reference in New Issue
Block a user