feat: Chat-Archive integration on contact detail page

- Add proxy endpoint GET /api/contacts/{id}/messages (forwards to Chat-Archive API)
- Add chat_sender_name field to Account config for sender matching
- Add Infinite Scroll chat section with Messenger-style bubbles
- Umlaut-normalized name comparison (ae/oe/ue/ss)
- Add CHATAPI_ENABLED/URL/KEY environment variables
- Update README.md, SPEC.md, AGENTS.md
This commit is contained in:
2026-09-17 19:01:42 +02:00
parent 7e2b29a950
commit 5f39d276d6
7 changed files with 364 additions and 5 deletions
+43 -1
View File
@@ -40,7 +40,9 @@ Trage für jede Apple-ID einen Eintrag mit eindeutigem `name`,
`apple_email`, `apple_app_password`, `authelia_user` und (optional)
`birthday_mail_to` ein. Optional kann pro Account eine `healthcheck_url`
konfiguriert werden, die nach jedem erfolgreichen Sync aufgerufen wird
(z.B. für Uptime-Monitoring). Diese Datei
(z.B. für Uptime-Monitoring). Optional kann pro Account ein
`chat_sender_name` konfiguriert werden, um den Namen in der
Chat-Archive DB zuzuordnen (Details siehe Abschnitt 12). Diese Datei
bleibt lokal auf dem Host, sie ist in `.gitignore` ausgeschlossen und
wird nur als Volume in den Container gemountet.
@@ -294,6 +296,12 @@ Zugriff ohne den Reverse-Proxy ist damit nicht möglich.
| `GET` | `/api/groups/{id}/members` | Members einer Gruppe (Kontaktdaten) |
| `GET` | `/api/sync-runs` | Letzte 50 Sync-Runs (Status, Zeitstempel, Fehler) |
**Chat-Archive (optional):**
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `GET` | `/api/contacts/{id}/messages` | Chat-Nachrichten eines Kontakts via Chat-Archive API (`?offset=0&limit=50`) |
Alle Endpunkte (außer `/api/health`) erfordern eine Authentifizierung
über den `Remote-User`-Header. Nicht-Admins sehen nur die Daten ihres
eigenen Accounts.
@@ -304,6 +312,40 @@ eigenen Accounts.
curl -H "Remote-User: mmustermann" http://127.0.0.1:8000/api/contacts
```
## 💬 12. Chat-Archive Integration (optional)
Zeigt Chat-Nachrichten (Instagram/Facebook) direkt in der
Kontakt-Detailseite, mit Infinite Scroll und Messenger-Style Bubbles.
### Voraussetzung
- Eine laufende [Chat-Archive API](https://github.com/stefan-koelle/chat-archive)
mit importierten Nachrichten.
### Konfiguration
In `.env`:
```
CHATAPI_ENABLED=true
CHATAPI_URL=http://docker-host-pve.fritz.box:8420
CHATAPI_KEY=change-me
```
In `config/accounts.json` pro Account das `chat_sender_name` setzen
(Name wie in der Chat-Archive DB als `sender_name` gespeichert):
```json
{
"name": "iCloud Stefan",
"authelia_user": "stefan",
"chat_sender_name": "Stefan Koelle"
}
```
Der Name wird umlaut-normalisiert verglichen: "Koelle" und "Kölle"
werden als identisch erkannt.
## 📄 License
Licensed under the [MIT License](LICENSE) - Copyright (c) 2026 Stefan Koelle (https://stefankoelle.de)