- max-width 960px auf Kontakt-Detailseite
- M365-Sektion umbenannt zu "Outlook Daten", default eingeklappt
- Aufgaben-Tab entfernt (nur noch E-Mails + Kalender)
- "In Outlook speichern"-Button: pusht/aktualisiert Kontakt in Outlook-Kontakte via MS Graph POST/PATCH /me/contacts
- Kontaktdaten: Typ, Status immer sichtbar, Bundesland (state) in Adresse
- Backend: GraphService exportiert, pushContactToOutlook-Methode, POST /crm/contacts/:id/push-to-outlook
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Neues GraphModule mit GraphService + GraphController
- GET /crm/contacts/:id/emails → MS Graph Emails (Search nach Kontakt-E-Mail)
- GET /crm/contacts/:id/calendar → Kalender-Termine (naechste 90 Tage)
- GET /crm/contacts/:id/tasks → Microsoft To Do Listen + Aufgaben
- GraphService: JWT an Core-Service weiterleiten, M365-Token holen, Graph aufrufen
- Redis-Cache 5 Minuten fuer alle Graph-Responses
- CORE_SERVICE_URL env var + docker-compose.crm.yml Eintrag
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>