Zum Hauptinhalt springen

v0: Signage + Companion — Config-Vertrag

Was

Ein gemergtes Lesemodell für Signage (Kiosk/Stele) und Companion: alle Dashboard-Optionen aus einer API, ohne DB-Migration und ohne Datenverlust. Layout/UI baut v0; Cockpit bleibt Source of Truth.

Warum

Bisher lagen Optionen in mehreren Körben (defaultSignageTemplate, kiosk*-Spalten, signageTemplateOptions, companionConfig). v0 braucht einen klaren Einstieg und einen Prompt, der alle Dashboard-Reiter abbildet.

Wer ist betroffen

  • Entwickler/v0: Lesen über signage-surface; Custom Instructions aus v0CustomInstructions
  • Redaktion: Unverändert — gleiche Reiter im Dashboard (Digital Signage, Companion)
  • Agenten/MCP: Schreiben weiter über bestehende Tools; Lesen optional über signage-surface

Wo

WasPfad
Unified APIGET /api/centers/{centerId}/signage-surface
Merge-Logikapps/dashboard/src/lib/integration/unified-signage-surface.ts
v0-Prompt-Generatorapps/dashboard/src/lib/integration/v0-signage-config-prompt.ts
Dashboard-ReiterCenter → Digital Signage (siehe signage-config-tabs.ts)
apiHintspublic-visitor-surfacedata.apiHints.signageSurfaceGet

Speicher-Körbe (unverändert — expand-contract)

KorbDB-FeldGilt für
v0-TemplatedefaultSignageTemplateWelches v0-Layout (kiosk, ai-premium, wayfinding, display, … — alle Registry-Einträge)
Classic Kioskkiosk* Spalten (~20 Felder)Nur defaultSignageTemplate=kiosk
Template-OptionensignageTemplateOptions[templateId]AI Premium / AI Wayfinding
GlobalsignageTemplateOptions._globalWartungsmodus (alle Templates)
Companion globalcompanionConfigFeatures, Layout, Branding (alle Companion-Varianten)

Wichtig: kioskTemplate (Skin: standard/wayfinder/…) ≠ defaultSignageTemplate (Route).

Merge-Regeln (Lesemodell)

  1. Wartung: _global schlägt Legacy-Felder in ai-premium/ai-wayfinding.kiosk
  2. Kiosk-Optionen: Classic → classicKiosk; AI-Familie → templateOptions.kiosk mit Dashboard-Defaults; leere Felder werden aus kiosk*-Spalten ergänzt (Migration)
  3. AI Premium Reiter: Stele-Optionen aufgeteilt in Darstellung, Farben, Medien, Module, Wayfinding, DOOH, Einbettungen, Bezeichnungen (signage-config-tabs.ts)
  4. Companion: companionConfig für Features/Layout; templateOptions.companion für Template-Toggles; Akzentfarbe: Template > companionConfig.branding
  5. Companion-KI-Chat: companion.companionChatEnabled bzw. data.bots.companion.companionChatEnabled (= Companion aktiv und Feature aiAssistant) — unabhängig vom Website-Chatbot
  6. Bot-UI/Logik: Master v0-Chat /mallpilot-chat-core-kJyZM1UHiHR + mallpilot-chat-core (min. 0.8.1, MallPilotSiteShell) — Reference-Copy; Soll-Runtime wie Website: Host /api/chat im Signage-v0-Projekt + apiHints.chatInteractionsPost (source: companion|kiosk). Legacy bis Migration: visitor-chatbot client=companion|kiosk

So testen

  1. Center mit ai-premium wählen, Kiosk-Optionen setzen (z. B. Traffic an)
  2. GET /api/centers/{centerId}/signage-surfacesurface.templateOptions.kiosk.enableTraffic === true
  3. defaultSignageTemplate auf kiosk stellen, Bento/Farben speichern
  4. Erneut signage-surfacesurface.classicKiosk gefüllt, templateOptions.kiosk === null
  5. Response-Feld v0CustomInstructions in v0 Project Settings einfügen

v0 Custom Instructions

Dashboard: Center → Frontend-Kanäle → Reiter Signage oder Companion → Block „v0 Signage + Companion“ → Kopieren. Bei v0/Vercel-Hosting zusätzlich unter Reiter Technik.

Nach Deploy alternativ: GET …/signage-surface → Feld v0CustomInstructions.

MCP/Agenten: cockpit_signage_surface(centerId).

Verwandte Doku

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /digital-signage/v0-signage-companion-config-contract