Center Manager: KI-Orchestrator & Aktionen
Technische Referenz für den intent-gesteuerten AI-Chat in der Center Manager App (/ai-chat).
Nutzer-Doku: Center Manager App · Archiv-Notiz: docs/AI-CONTEXT-INTENT-ACTIONS-FLOW.md
Was
Der Manager-Chat nutzt einen Orchestrator, der Dashboard-KI (Intent + Kontext) mit echten CMS-Aktionen verbindet — z. B. Ticket anlegen, Entwurf erstellen, Rundmail auslösen, oft als Mehrfach-Kette.
Warum
Früher liefen Intent-Analyse (Dashboard) und Aktionen (Center Manager) getrennt; teils Regex-Demos statt LLM-Intent. Ziel: ein Durchlauf — verstehen → antworten → ausführen.
Wer ist betroffen
| Gruppe | Auswirkung |
|---|---|
| Center Manager / Marketing | /ai-chat — natürliche Sprache löst Workflows aus |
| Redaktion | Entwürfe landen wie gewohnt zur Freigabe |
| Facility / Betrieb | Issues und Benachrichtigungen im Dashboard |
| Dev / Betrieb | Neue Proxy-Routen in apps/center-manager, Abhängigkeit Dashboard-AI-Settings |
Wo
| Ort | Pfad |
|---|---|
| Chat-UI | Manager-App → KI-Chat (/ai-chat) |
| Orchestrator (CM) | POST /api/ai/orchestrate |
| Intent (Dashboard) | POST /api/ai/analyze-intent |
| Kontext + Antwort | POST /api/ai/manager-assistant |
| Aktionen | POST /api/ai/actions/execute (Dashboard) |
| Code CM | apps/center-manager/src/lib/ai-orchestrator.ts |
| Code Dashboard Intent | apps/dashboard/src/lib/ai-analyze-intent.ts |
Ablauf
Primär: LLM-Intent (analyzeIntentWithAI) + Hybrid-Kontext (Pinecone-Semantik + intent-gesteuerte DB-Slices).
Fallback: Regex in ai-workflow-chains.ts nur wenn Intent nicht actionabel (markiert als Fallback).
Entfernt: Legacy-Pfad intent-detection → action-handler (HTTP 410); Typen in ai-intent-types.ts.
API (Center Manager)
POST /api/ai/orchestrate
Body: { query, centerId, userId?, userName?, role?, sessionId?, intent?, confirmExecution? }
sessionId: stabil pro Chat-Tab — Thread-Kontext in Redis (ai-thread-memory)confirmExecution: true: führt geplanten Plan aus (nach Bestätigung);intentmitgeben (aus der Planungs-Antwort), damit nicht „ja“ neu analysiert wird
Response: { success, data: { answer?, intent?, execution?, pendingConfirmation? } }
pendingConfirmation:truewenn irreversible Schritte (Ticket, Broadcast) geplant, aber noch nicht ausgeführtexecution.source:ai_intent|regex_fallback|noneexecution.steps: Array ausgeführter Schritte (leer bei pending)
Weitere Proxies: /api/ai/manager-assistant, /api/ai/run-workflow, /api/ai/execute-dashboard-action.
So testen
- Dashboard: OpenAI-Key unter Center-AI-Einstellungen (
hasApiKey) - Benutzer mit Rolle
center_manager+ Center-Zuordnung - Manager-App →
/ai-chat - Formulierung variieren (nicht nur Demo-Sätze):
- Reinigung: „Im Foyer ist es dreckig, bitte erledigen lassen“
- Bewerbung: „Shop XY hat heute Rabatt — bitte kommunizieren“
- Erwartung: Antwort +
execution.source: ai_intent; im Dashboard neues Issue/Entwurf - Ohne OpenAI: Fallback-Modus (
regex_fallbackoder reine Suche) - Bestätigung: „Aldi hat 20 % Rabatt — bitte News und Rundmail“ → geplante Aktionen → „ja“ im Chat oder Button Bestätigen & ausführen → Entwurf + Broadcast im Dashboard
- Social: „Mach einen Instagram-Post zum Sommer-Sale“ → Entwurf im Social Cockpit (pending)
- Vector-Health: Dashboard → Einstellungen → API → Tab „Vector Database“ → Sync-Health-Tabelle; API:
GET /api/system/vector-sync/health?centerId=<uuid>
Betrieb
Env-Quelle: render.yaml → mallos-center-manager (Blueprint). Nichts in Render manuell überschreiben, was aus dem Blueprint kommt.
| Variable | Service | Hinweis |
|---|---|---|
NEXT_PUBLIC_API_URL | center-manager | Dashboard-Origin |
NEXT_PUBLIC_API_BASE_URL | center-manager | Alle CM-Proxies |
CM_SESSION_SECRET | center-manager | Secret, sync: false in Blueprint |
REDIS_* | center-manager | Cache, von mallos-redis |
BUNNY_* | center-manager | Uploads (Foto im Chat) |
| OpenAI / Pinecone | dashboard | Center-AI-Settings (nicht CM-Env Pflicht) |
PINECONE_HOST | dashboard | Optional; Default aus pinecone-config |
CRON_SECRET | dashboard | Schützt /api/system/vector-sync (Full-Sync) + Cron |
Pinecone & Vector-Sync
| Thema | Detail |
|---|---|
| Schreiben | Dashboard POST /api/system/vector-sync — Realtime nach CMS-Änderungen + nächtlicher Cron |
| Lesen | manager-assistant: Hybrid Pinecone-Treffer + DB-Slices (generateManagerContext) |
| Namespace | center-{centerId} |
| Code | apps/dashboard/src/lib/pinecone-config.ts, vector-sync-middleware.ts |
| Cron | POST /api/cron/vector-sync — siehe docs/CRON-SETUP.md |
| Health | GET /api/system/vector-sync/health — UI unter Dashboard → API → Vector Database |
| Bestätigung | Tickets/Rundmail: Plan → Dialog → confirmExecution: true |
| Social | Schritt create_social_draft → Social Cockpit (pending) |
| Thread | Redis ai-thread-memory (Session-Kontext im Orchestrator) |
Lokal: apps/center-manager/.env.example — gleiche Namen, Dev-Werte für localhost.
Siehe auch: Center Manager App — Architektur & Betrieb
Wichtige Dateien
| Bereich | Datei |
|---|---|
| Orchestrator | apps/center-manager/src/lib/ai-orchestrator.ts |
| Workflow-Ketten (Fallback) | apps/center-manager/src/lib/ai-workflow-chains.ts |
| Chat-UI | apps/center-manager/src/components/ai/modern-ai-chat.tsx |
| Intent LLM | apps/dashboard/src/lib/ai-analyze-intent.ts |
| Kontext-Paket | packages/ai-context/ |
| Thread-Memory | apps/center-manager/src/lib/ai-thread-memory.ts |
| Intent-Typen (Legacy) | apps/center-manager/src/lib/ai-intent-types.ts |
| Vector-Health | apps/dashboard/src/lib/vector-sync-health.ts, vector-sync-indexable.ts (Review-Cap 50 = Full-Sync) |
| Social aus KI | apps/dashboard/src/lib/integration/social-from-ai-action.ts |
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /developer-guide/center-manager-ai-orchestrator