Display zeigt Demo-Daten statt echte Flüge
Was tun wenn Mock/Demo-Daten angezeigt werden statt echter Flug-Informationen
Display zeigt Demo-Daten statt echte Flüge
Wenn Ihr Display Demo- oder Mock-Daten anzeigt statt echter Live-Flüge, folgen Sie dieser Anleitung.
Symptome
Sie erkennen Mock-Daten an:
"mock": trueSchnell-Diagnose (2 Minuten)
Test 1: API-Response prüfen
Öffnen Sie in neuem Browser-Tab:
[CODE_BLOCK]
https://lobbyflight.com/api/flights/ihre-hotel-id?type=departures
[CODE_BLOCK]
Echte Daten haben:
[CODE_BLOCK]json
{
"success": true,
"data": [...],
"airport": "VIE",
"cachedAt": "2024-12-04T10:00:00Z"
// KEIN "mock" Feld!
}
[CODE_BLOCK]
Mock-Daten haben:
[CODE_BLOCK]json
{
"success": true,
"mock": true, // ← Dieses Feld zeigt Mock!
"data": [...],
"message": "Using mock data - no API key configured"
}
[CODE_BLOCK]
Test 2: Console-Logs prüfen
Öffnen Sie DevTools (F12) → Console
Mock-Modus zeigt:
[CODE_BLOCK]
Using mock data - no API key configured
AviationStack: No API key configured, using mock flights
Mock flight data generated for VIE
[CODE_BLOCK]
Echter Modus zeigt:
[CODE_BLOCK]
AviationStack: Fetching from API for VIE departures
AviationStack API Request: http://api.aviationstack.com/v1/flights...
AviationStack API Response: Got 100 flights
[CODE_BLOCK]
Test 3: Demo-URL testen
Zum Vergleich öffnen Sie:
[CODE_BLOCK]
https://lobbyflight.com/display/demo
[CODE_BLOCK]
Falls Demo ECHTE Daten zeigt (Vienna live):
Falls Demo AUCH Mock-Daten zeigt:
Ursache 1: AviationStack API-Key fehlt
Technische Details
Code-Location: /lib/aviationstack.ts (Zeilen 74-77)
API-Key wird aus Environment Variable geladen:
[CODE_BLOCK]typescript
const API_KEY = process.env.AVIATIONSTACK_API_KEY
if (!API_KEY) {
console.warn('AviationStack: No API key configured, using mock flights')
return generateMockFlights(airport, type) // Generiert Demo-Daten!
}
// Mit API-Key: Echte API-Anfrage
const response = await fetch(
https://api.aviationstack.com/v1/flights?access_key=${API_KEY}&dep_iata=${airport}
)
[CODE_BLOCK]
Ohne API-Key:
Schritt-für-Schritt-Lösung (für Administratoren)
Schritt 1: AviationStack Account erstellen
- Free: 100 Requests/Monat (NICHT ausreichend!)
- Standard: $49/Monat, 10,000 Requests (empfohlen)
Schritt 2: API Key kopieren
Beispiel-Key:
[CODE_BLOCK]
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
[CODE_BLOCK]
Schritt 3: Environment Variable setzen
Lokale Entwicklung (.env.local):
[CODE_BLOCK]bash
Datei: .env.local
AVIATIONSTACK_API_KEY=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
[CODE_BLOCK]
Vercel Production:
[CODE_BLOCK]
- Key: AVIATIONSTACK_API_KEY
- Value: [Ihr API Key]
- Environments: Production ✓
[CODE_BLOCK]
Schritt 4: Server neu starten
Lokal:
[CODE_BLOCK]bash
Terminal:
npm run dev
Oder:
yarn dev
[CODE_BLOCK]
Vercel:
[CODE_BLOCK]bash
Via CLI:
vercel --prod --force
Oder: Dashboard → Deployments → Redeploy
[CODE_BLOCK]
Schritt 5: Verifizierung
Test-Request mit curl:
[CODE_BLOCK]bash
curl "https://api.aviationstack.com/v1/flights?access_key=IHR_KEY&dep_iata=VIE&limit=1"
[CODE_BLOCK]
Erwartetes Ergebnis:
[CODE_BLOCK]json
{
"pagination": {
"limit": 1,
"offset": 0,
"count": 1,
"total": 100
},
"data": [
{
"flight_date": "2024-12-04",
"flight_status": "scheduled",
"departure": {
"airport": "Vienna International Airport",
"iata": "VIE",
...
}
}
]
}
[CODE_BLOCK]
Falls Error:
[CODE_BLOCK]json
{
"error": {
"code": "invalid_access_key",
"message": "You have not supplied a valid API Access Key."
}
}
[CODE_BLOCK]
→ API-Key falsch kopiert, prüfen Sie nochmal
Ursache 2: API-Key ungültig oder abgelaufen
Technische Details
Code-Location: /lib/aviationstack.ts (Zeilen 50-70)
API-Request kann mit HTTP 401 fehlschlagen:
[CODE_BLOCK]typescript
const response = await fetch(apiUrl)
if (response.status === 401) {
console.error('AviationStack API error: 401 Unauthorized')
console.warn('Invalid API key, falling back to mock data')
return generateMockFlights(airport, type)
}
[CODE_BLOCK]
Gründe für 401:
Symptome
"AviationStack API error: 401""Invalid API key, falling back to mock data"Lösung
Schritt 1: API-Key im Code prüfen
Auf dem Server (nur Admin):
[CODE_BLOCK]bash
Environment Variable ausgeben:
echo $AVIATIONSTACK_API_KEY
Länge prüfen (sollte 32 Zeichen sein):
echo $AVIATIONSTACK_API_KEY | wc -c
Erwartung: 33 (32 + Newline)
[CODE_BLOCK]
Schritt 2: API-Key auf Dashboard verifizieren
AviationStack Dashboard:
[CODE_BLOCK]
Login → Dashboard → API Access Key
[CODE_BLOCK]
Kopieren Sie den korrekten Key (mit Copy-Button, nicht manuell!)
Schritt 3: Subscription-Status prüfen
AviationStack Dashboard:
[CODE_BLOCK]
Dashboard → Subscription → Status
[CODE_BLOCK]
Muss sein:
Falls "Cancelled" oder "Past Due":
Schritt 4: API-Key neu generieren
Falls Problem persistiert:
[CODE_BLOCK]
Dashboard → API Access Key → Regenerate Key
→ Kopieren Sie neuen Key
→ Aktualisieren Sie Environment Variable
→ Server neu starten
[CODE_BLOCK]
Ursache 3: API-Quota überschritten (Free Plan)
Technische Details
Free Plan Limits:
Berechnung:
[CODE_BLOCK]
1 Hotel × 8,640 Requests = 86x ÜBER Quota!
→ Free Plan reicht für ~3 Stunden/Monat
[CODE_BLOCK]
Bei Quota-Überschreitung:
Symptome
"AviationStack API error: 429"{ "error": { "code": "usage_limit_reached" } }Lösung
Schritt 1: API-Nutzung prüfen
AviationStack Dashboard:
[CODE_BLOCK]
Dashboard → Statistics
→ "API Calls This Month": X / 100
[CODE_BLOCK]
Schritt 2: Upgrade zu Standard Plan
Standard Plan ($49/Monat):
[CODE_BLOCK]
Dashboard → Subscription → Upgrade to Standard
→ Zahlungsmethode eingeben → Confirm
[CODE_BLOCK]
Schritt 3: Oder: Cache-Zeit erhöhen (nicht empfohlen)
Temporärer Workaround:
[CODE_BLOCK]typescript
// In /lib/aviationstack.ts:
const CACHE_TTL = 300 // Vorher: 5 Minuten
// Nachher:
const CACHE_TTL = 3600 // 1 Stunde
[CODE_BLOCK]
Trade-off: Daten sind weniger aktuell (max. 1h alt)
Neue Berechnung:
[CODE_BLOCK]
1 Request/Stunde × 24 × 30 = 720 Requests/Monat
→ Innerhalb Free Plan Quota!
[CODE_BLOCK]
Ursache 4: Datenbank nicht konfiguriert
Technische Details
Code-Location: /app/api/flights/[hotelId]/route.ts (Zeilen 50-61)
Ohne Datenbank-Verbindung wird Mock-Mode aktiviert:
[CODE_BLOCK]typescript
if (!process.env.POSTGRES_URL) {
console.warn('No database configured, using mock data')
return NextResponse.json({
success: true,
mock: true,
data: generateMockFlights(hotelId),
message: 'Demo mode - configure database for production'
})
}
const hotel = await db.query.hotels.findFirst({
where: eq(hotels.id, hotelId)
})
[CODE_BLOCK]
Ohne POSTGRES_URL:
Symptome
"No database configured, using mock data""message": "Demo mode - configure database"Lösung (für Administratoren)
Schritt 1: Vercel Postgres einrichten
Schritt 2: Connection String kopieren
[CODE_BLOCK]
Storage → Postgres → [Ihre DB] → .env.local Tab
→ Kopieren Sie POSTGRES_URL
[CODE_BLOCK]
Beispiel:
[CODE_BLOCK]
POSTGRES_URL=postgresql://user:pass@host-xxxx.postgres.vercel-storage.com:5432/verceldb
[CODE_BLOCK]
Schritt 3: Environment Variable setzen
.env.local:
[CODE_BLOCK]bash
POSTGRES_URL=postgresql://user:pass@host.vercel-storage.com:5432/db
POSTGRES_PRISMA_URL=postgresql://user:pass@host-pooling.vercel-storage.com:5432/db
[CODE_BLOCK]
Vercel Production:
[CODE_BLOCK]
Project Settings → Environment Variables
→ Copy all from .env.local Tab
→ Save → Redeploy
[CODE_BLOCK]
Schritt 4: Datenbank-Schema deployen
[CODE_BLOCK]bash
Drizzle migrations:
npx drizzle-kit push:pg
Oder Prisma:
npx prisma db push
[CODE_BLOCK]
Schritt 5: Test-Hotel erstellen
[CODE_BLOCK]sql
INSERT INTO hotels (name, email, password_hash, airport_codes, is_active)
VALUES (
'Test Hotel',
'test@hotel.com',
'$2a$10$...', -- bcrypt hash
ARRAY['VIE'],
true
);
[CODE_BLOCK]
Ursache 5: Falscher Display-Modus (Demo-URL)
Symptome
/display/demo statt /display/ihre-hotel-id- Nicht Ihr Logo
- Nicht Ihre Farben
- Nicht Ihre konfigurierten Airports
Lösung
Korrekte URL verwenden:
Portal:
[CODE_BLOCK]
Login → Preview → "Copy Display URL"
→ Oder: QR-Code scannen
[CODE_BLOCK]
Richtig:
[CODE_BLOCK]
https://lobbyflight.com/display/a1b2c3d4-e5f6-7890-abcd-ef1234567890
[CODE_BLOCK]
Falsch (Demo):
[CODE_BLOCK]
https://lobbyflight.com/display/demo
[CODE_BLOCK]
Bookmark korrigieren:
Prävention
Best Practices
1. API-Key sicher speichern:
2. Subscription monitoren:
3. Multi-Tier Fallback:
4. Monitoring einrichten:
mock: true in Response5. Dokumentation:
Verwandte Artikel
Debug-Checkliste
mock: true?)POSTGRES_URL)?/demo)?