Skip to main content

AI Premium: v0-Parität & Dashboard-Steuerung

Ziel: Das React-Template (apps/digital-signage/…/ai-premium) durch eine v0-App ersetzen. Cockpit bleibt Source of Truth für Inhalte, Touchscreens, Wayfinding und App-Konfiguration — v0 entscheidet über Routen/URLs und UI-Design.

Für v0 mitgeben: Signage/Companion Config-Vertrag (empfohlen: signage-surface + Copy-Prompt aus Frontend-Kanäle) · Teil H + I (Terminal + Companion) · Teil F (Centerplan) · Teil K (Chat-Prompt + diese Seite) · System-Infos Kiosk+Companion


1. Rollenverteilung

WerWas
Cockpit DashboardInhalte, Touchscreens, Centerplan, DOOH, AI-Premium-Optionen (Feature-Toggles, Farben, Labels)
Dashboard-APIÖffentliche GETs — v0 lädt beim Start / bei Refresh
v0-AppUI, Routing, Terminal-Layout — keine festen Pfade wie /ai-premium nötig
React-Template (Monorepo)Referenz für Verhalten und Feature-Liste — nicht mehr hosten, wenn v0 Parität hat

Template-ID (intern, API): ai-premium — nur für signage-template-options?template=ai-premium und defaultSignageTemplate. Nicht als URL-Pfad vorschreiben.


2. URLs: v0 bestimmt die Routen

Cockpit schreibt v0 keine Pfade vor. Das Monorepo nutzt historisch /ai-premium und /companion/t/premium — v0 darf z. B. /kiosk, /stele, /now, /app wählen.

v0-Seite

  • Env (Beispiel): NEXT_PUBLIC_KIOSK_PATH=/kiosk, NEXT_PUBLIC_COMPANION_PATH=/now
  • Handoff-QR: Ziel = {origin}{NEXT_PUBLIC_COMPANION_PATH}?centerId=&sessionKey=&screen=…&shop=…
  • Gleiches v0-Projekt: Kiosk + Companion unter einer Origin (empfohlen) — dann reicht window.location.origin + Companion-Pfad
  • Getrennte Deployments: Companion-Basis aus Cockpit lesen → signage-config.companionPublicUrl

Cockpit-Seite (nach v0-Deploy)

  1. Website-Management → Frontend-Kanäle (v0) — Kanäle signage und companion auf die v0-Produktions-URLs setzen (Teil J)
  2. Optional: signagePublicUrl / companionPublicUrl manuell pflegen — erscheinen in GET …/signage-config
  3. Touchscreens im Dashboard verweisen auf die öffentliche Kiosk-URL (mit ?touchscreenId=…)

Handoff-Vertrag (plattformweit, unabhängig vom Pfad): Query-Parameter centerId, sessionKey, optional shop, screen, floorNumber — siehe Kiosk + Companion NOW!.


3. Dashboard-Steuerung (was Redaktion sieht)

Pfad: Dashboard → Content → Center → Tab Kiosk → Reiter Wartungsmodus (immer sichtbar, alle Templates) bzw. AI Premium Kiosk / AI Premium Companion (nur bei defaultSignageTemplate = ai-premium).

Speicherort: ShoppingCenter.signageTemplateOptions['ai-premium'].kiosk bzw. .companion

API (öffentlich, kein Login):

GET /api/centers/{centerId}/signage-surface (empfohlen — gemergt inkl. v0CustomInstructions)

GET /api/centers/{centerId}/signage-template-options?template=ai-premium
→ { success: true, centerLogoUrl, options: { kiosk: { … }, companion: { … } } }

Leere oder fehlende Felder sind mit Dashboard-Defaults (DEFAULT_AI_PREMIUM_*) vorbelegt — v0 kann direkt options.kiosk.enableOffers etc. lesen. centerLogoUrl ist das Center-Logo aus den Stammdaten (Fallback: GET …/signage-configlogoUrl).

Regel für v0: Jeder Schalter im Dashboard muss live wirken — Feature-Toggles, Labels und Farben nicht im v0-Code hardcoden. Die GET-Response liefert für template=ai-premium bereits mit Dashboard-Defaults gemergte options.kiosk / options.companion (leere DB-Felder = Standardwerte).

Kiosk-Optionen → v0-Verhalten

Dashboard-FeldWirkung in der App
accentColorButtons, Links, Akzente
kioskColorSchemelight / dark — Theme-Tokens
locationLabelHeader-Standort (Fallback wenn kein Display-Config)
hotPicksLimitMax. Hot Picks auf Start
showFeaturedNewsNews/Highlights-Bereich
wayfindingSourceauto / svg / dashboard — Routing-Quelle
force2DMap, routeColor, routeSmoothingCenterplan-Darstellung
a11yDefaultStart mit Aufzug-Routing
idleTimeoutSecondsDOOH / Idle (30–120 s)
autoRefreshMinutesReload bei Inaktivität
enableOffersenableBottomQuickMenuFeature-Toggles (siehe Checkliste §4)
*LabelTitel der Quick-Icons
enableTraffic + trafficMapEmbedUrlVerkehrs-Slide-up
enableSocialFeed + socialFeedEmbedCodeSocial-Embed
enableTransitMonitor + transitMonitorEmbedUrlÖPNV-Embed
enableDoohIdle, doohPersistentSlotBelowHeader, enableDoohIdleFullscreenOverlayDOOH aus GET …/dooh/active (Signage) — alternativ dooh/public/active nur bei websiteEnabled
(global) maintenanceModeEnabledWartungsmodus für alle Signage-Templates — Reiter Wartungsmodus oder GET …/signage-global-options
(global) maintenanceMessageHinweistext unter dem Logo (Logo: centerLogoUrl / signage-config.logoUrl)

Companion-Optionen

FeldWirkung
accentColorCompanion-Akzente
showAISuggestionsVorschlags-Chips in der Chatbar
defaultTargetShopStandard-Ziel nach QR-Scan

Zusätzlich: companionConfig (Reiter Companion App) — plattformweite Feature-Flags (Wayfinding, AI-Chat, …) über GET …/signage-configcompanionConfig.


4. Feature-Parität: Kiosk (React-Referenz)

Referenz-Code: AIPremiumKioskShell.tsx, Daten: load-ai-premium-family-kiosk-page.ts.

Pflicht für Ablösung (Phase 1)

FeatureDashboard-ToggleDaten-API
Start mit Centerplan als Herowayfinding/floors, Display-Config
Etage pro Stelesignage-config, signage-display-config?displayId=
Shops-Liste + Shop-Detailshops, Services optional
Slide-ups: Angebote/News/EventsenableOffersnews, aktuelles-Bundle
GastronomieenableFoodservices / gefilterte Shops
ServicesenableServicesservices
Hot PicksenableHighlightshotpicks
In der NäheenableNearbysignage-nearby?displayId=
KI-Suche / ConciergeenableAiSearchPOST …/ai/visitor-chatbot
Unteres Quick-MenüenableBottomQuickMenu
Handoff-QRenableHandoffQrPOST …/handoff-sessions
Barrierefrei-OverlayenableA11yRouting-Optionen
Gruppen-Session-QRenableGroupSessionGroup-Session-API
Wayfinding Ziel auf StartkarteRouting API / SVG
Idle-Reset (Datenschutz)~90 s UX (Teil H)
DOOH IdleenableDoohIdledooh/active (Signage) — dooh/public/active nur bei Website-Kanal

Phase 2 (optional, kann nachziehen)

FeatureToggle / Quelle
Traffic / Social / ÖPNVenableTraffic, enableSocialFeed, enableTransitMonitor
DOOH dauerhaft unter HeaderdoohPersistentSlotBelowHeader
Auto-RefreshautoRefreshMinutes

5. Feature-Parität: Companion (Phase 1)

Referenz: AIPremiumCompanionShell.tsx

FeatureQuelle
Handoff (sessionKey, shop, screen)URL-Params + PATCH handoff-sessions
Home mit Karte + Hot Picksfloors, hotpicks, template-options
Inline-Route auf HomeWayfinding + Routing
Dedizierter Wayfinding-Screen
Shop-Detail Vollbildshops/services
Angebots-Listeoffers / aktuelles
Concierge-Chatbarvisitor-chatbot + showAISuggestions
Standort-QR /companion/qr/[id] oder v0-eigener Pfadpublic QR resolve/scan

Phase 2

  • AR-Navigation / Shopfront-Tracking (MindAR) — siehe Premium AI Template
  • Treueprogramm, Feedback-Routen — plattformweit, nicht AI-Premium-exklusiv

6. Startup-Daten (v0 Server / Route Handler)

Discovery: GET …/public-visitor-surfacedata.apiHints enthält alle Signage-Pfade (siehe unten).

Parallel laden (wie Monorepo):

  1. GET …/signage-config — Branding, Touchscreens, signagePublicUrl, companionPublicUrl
  2. GET …/signage-template-options?template=ai-premiumDashboard-Steuerung
  3. GET …/signage-display-config?displayId={touchscreenId} — Standort, Etage, SVG-Start
  4. GET …/public-visitor-surface — Branding, Chatbot-Hinweise, apiHints
  5. Content: hotpicks, shops, services, news?published=true
  6. Optional: signage-nearby, dooh/active (Signage, CORS) oder dooh/public/active (nur bei websiteEnabled), center-config (Traffic-Kontext)

apiHints (public-visitor-surface)

KeyZweck
signageConfigGetStele, Branding, URLs
signageTemplateOptionsGetAI-Premium-Optionen (?template=ai-premium)
signageDisplayConfigGetStandort/Etage pro Stele
signageNearbyGetIn der Nähe
doohSignageActiveGetDOOH Idle (ohne websiteEnabled)
hotPicksGetHot Picks
handoffSessionPostHandoff Kiosk → Companion
groupSessionPostGruppen-QR
touchscreensGetTouchscreen-Liste

Device-Binding: ?touchscreenId= oder NEXT_PUBLIC_KIOSK_TOUCHSCREEN_IDkein hardcodiertes Floor-Env.


7. v0 — Instruction H + Chat-Prompt K

v0 erlaubt max. 10 Instructions (A–J). AI-Premium-Steuerung gehört in Instruction „Cockpit H“ (Abschnitt „AI PREMIUM — DASHBOARD-STEUERUNG“).
Teil K ist nur Chat-Prompt für Feature-Lücken — siehe center-website-v0-api-ready-to-go (Teil K, kein Slot).

In H enthalten (Kurz):

  • signage-template-options?template=ai-premium → alle enable*, Labels, Farben
  • apiHints-Discovery, Startup-APIs, Phase-1-Feature-Liste
  • Handoff-QR vs Gruppen-QR getrennt

Chat bei Lücken (einmalig, nicht als Instruction):

Vergleiche v0-Signage mit Cockpit-Doku „AI Premium v0-Parität“ Phase 1.
Fehlende Kiosk-Features an options.kiosk.enable* koppeln. Companion → Teil I. Keine Dummy-Daten.

8. Cockpit-Checkliste (Projekt)

  • defaultSignageTemplate = ai-premium für das Center
  • AI-Premium-Optionen im Signage-Reiter gepflegt und getestet (Toggle → v0 neu laden)
  • Touchscreens mit Etage + MapLocation zugeordnet
  • Frontend-Kanäle: signage + companion → v0-URLs
  • Handoff E2E: QR → Companion mit sessionKey
  • Paritäts-Checkliste §4/§5 abhaken
  • React-Hosting (*.signage.cockpit-os.de) abschalten, wenn v0 stabil

9. v0-Chat-Prompt (Feature-Lücken schließen)

„Vergleiche unsere v0-Signage-App mit der Cockpit-Doku AI Premium v0-Parität (Feature-Checkliste Phase 1). Implementiere fehlende Kiosk-Features und koppel sie an signage-template-options?template=ai-premiumoptions.kiosk. Companion fehlt X → Teil I. URLs bleiben bei unseren Pfaden {KIOSK_PATH} / {COMPANION_PATH}. Keine Dummy-Daten.“


Referenz-Implementierung: Premium AI Template · Hosting: Parallele Frontends

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /en/digital-signage/ai-premium-v0-paritaet-und-dashboard-steuerung