imapclient feature plan

This commit is contained in:
dufyfduck 2026-01-29 01:34:43 +01:00
parent 31f807fbd0
commit ff857be01a
1 changed files with 71 additions and 0 deletions

View File

@ -292,6 +292,77 @@ fetch('/api/developer/setup', { method: 'POST' }).then(r => r.json()).then(conso
# Danach ausloggen und neu einloggen
```
## Geplante Features
### E-Mail-Client Integration
Ein integrierter E-Mail-Client pro Kunde mit den folgenden Funktionen:
#### Konzept
- **E-Mail-Tab in Kundenansicht**: Zeigt alle E-Mails des Kunden via IMAP an
- **Mehrere E-Mail-Konten**: Dropdown zur Auswahl zwischen verschiedenen `@stressfrei-wechseln.de` Adressen des Kunden
- **E-Mails schreiben**: Neue E-Mails verfassen und Antworten auf bestehende E-Mails
- **Versand vom ausgewählten Konto**: SMTP-Versand über die gewählte Stressfrei-Wechseln Adresse
- **Zuordnung zu Verträgen**: Manuelles Zuordnen von E-Mails zu Verträgen
- **E-Mail-Tab in Vertragsansicht**: Zeigt nur dem Vertrag zugeordnete E-Mails (Postfach-Ansicht), mit Antworten/Schreiben-Funktion
#### Technische Umsetzung
1. **IMAP/SMTP-Zugangsdaten speichern**
- Beim Erstellen einer StressfreiEmail werden die Zugangsdaten vom Email-Provider (Plesk) zurückgegeben
- Diese werden verschlüsselt in der Datenbank gespeichert (wie bereits bei Portal-Zugangsdaten)
- StressfreiEmail-Tabelle erweitern um: `imapServer`, `imapPort`, `smtpServer`, `smtpPort`, `emailPassword` (verschlüsselt)
2. **Backend: IMAP-Service**
- IMAP-Client zum Abrufen von E-Mails (z.B. `imap-simple` oder `imapflow`)
- Endpunkte:
- `GET /api/customers/:id/emails` - E-Mails für Kunde abrufen
- `GET /api/emails/:id` - Einzelne E-Mail mit Body
- `POST /api/emails/send` - E-Mail senden (SMTP)
- `PUT /api/emails/:id/assign` - E-Mail einem Vertrag zuordnen
3. **Frontend: E-Mail-Tab (Kundenansicht)**
- Neuer Tab in CustomerDetail: "E-Mails"
- Dropdown oben: Auswahl der StressfreiEmail-Adresse
- Liste der E-Mails (Betreff, Absender, Datum)
- Detail-Ansicht beim Klick
- "Neue E-Mail" und "Antworten" Buttons
- "Vertrag zuordnen" Dropdown in E-Mail-Detail
4. **Frontend: E-Mail-Tab (Vertragsansicht)**
- Neuer Tab in ContractDetail: "E-Mails"
- Zeigt nur E-Mails die diesem Vertrag zugeordnet sind
- Gleiche Funktionalität wie in Kundenansicht:
- Liste der zugeordneten E-Mails
- Detail-Ansicht beim Klick
- "Neue E-Mail" und "Antworten" Buttons
- Versand erfolgt über die StressfreiEmail-Adresse des Kunden
5. **Datenbank**
```prisma
model CustomerEmail {
id Int @id @default(autoincrement())
customerId Int
customer Customer @relation(...)
stressfreiEmailId Int
stressfreiEmail StressfreiEmail @relation(...)
contractId Int? // Optionale Zuordnung zu Vertrag
contract Contract? @relation(...)
messageId String @unique // IMAP Message-ID
subject String
fromAddress String
toAddress String
date DateTime
isRead Boolean @default(false)
folder String // INBOX, Sent, etc.
createdAt DateTime @default(now())
}
```
#### Status
- [ ] Noch nicht implementiert - Plan für zukünftige Version
## Lizenz
MIT