mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 21:41:09 +02:00
Projects included: - maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing) - manacore (Expo mobile + SvelteKit web + Astro landing) - manadeck (NestJS backend + Expo mobile + SvelteKit web) - memoro (Expo mobile + SvelteKit web + Astro landing) This commit preserves the current state before monorepo restructuring. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
5.1 KiB
5.1 KiB
Bildmodell-Auswahl Feature
Übersicht
Dieses Feature ermöglicht es Nutzern, zwischen verschiedenen Bildgenerierungsmodellen zu wählen:
- FLUX Schnell: Schnelle Generierung (1-2 Sekunden)
- FLUX Pro 1.1: Höchste Qualität (10-15 Sekunden)
- Stable Diffusion XL: Bewährte, stabile Qualität (5-10 Sekunden)
Implementierte Änderungen
Backend
1. Datenbank-Migration
- Datei:
apps/backend/migrations/001_create_user_settings_table.sql - Neue Tabelle
user_settingsmit Spalteimage_model - RLS-Policies für User-spezifische Settings
2. Model-Konfiguration
- Datei:
apps/backend/src/core/models/image-models.ts - Definition der verfügbaren Modelle mit Metadaten
- Export von
IMAGE_MODELSKonstante
3. Settings Service
- Datei:
apps/backend/src/core/services/settings.service.ts - Neue Methoden:
getUserImageModel(userId): Abrufen des User-ModellssetUserImageModel(userId, modelId): Setzen des User-ModellsgetAvailableImageModels(): Liste aller ModellegetImageModelInfo(modelId): Details eines Modells
4. Image Service
- Datei:
apps/backend/src/core/services/image-supabase.service.ts generateImageWithReplicate()nutzt jetzt User-spezifisches Modell- User-ID wird durch alle Generierungsfunktionen durchgereicht
5. API Endpoints
- Datei:
apps/backend/src/settings/settings.controller.ts GET /settings/image-models: Verfügbare ModelleGET /settings/user/image-model: Aktuelles User-ModellPUT /settings/user/image-model: Modell ändern
Frontend
1. Settings UI
- Datei:
apps/mobile/app/(tabs)/(settings)/image-model.tsx - Neue Seite für Modellauswahl mit Card-Layout
- Visual Feedback für ausgewähltes Modell
- Credits und Zeitangaben
2. Navigation
- Datei:
apps/mobile/app/settings.tsx - Neuer Button "Bildgenerierung" in Settings
Deployment-Schritte
1. Datenbank-Migration ausführen
# Verbindung zur Supabase-Datenbank herstellen
psql "postgresql://postgres.[project-id]:[password]@db.[project-id].supabase.co:5432/postgres"
# Migration ausführen
\i apps/backend/migrations/001_create_user_settings_table.sql
2. Backend deployen
cd apps/backend
npm run build
npm run start:prod
3. Mobile App aktualisieren
cd apps/mobile
npm run build
# Für iOS
eas build --platform ios
# Für Android
eas build --platform android
Testing
Backend Tests
1. API Endpoints testen
# Verfügbare Modelle abrufen
curl http://localhost:3002/settings/image-models \
-H "Authorization: Bearer YOUR_TOKEN"
# User-Modell abrufen
curl http://localhost:3002/settings/user/image-model \
-H "Authorization: Bearer YOUR_TOKEN"
# Modell ändern
curl -X PUT http://localhost:3002/settings/user/image-model \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model": "flux-schnell"}'
2. Bildgenerierung testen
# Story mit neuem Modell erstellen
curl -X POST http://localhost:3002/story \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"characterId": "CHARACTER_ID",
"storyDescription": "Test story mit neuem Modell"
}'
Frontend Tests
- App starten:
npm run dev - Zu Settings navigieren
- "Bildgenerierung" Button klicken
- Verschiedene Modelle auswählen
- Prüfen ob Auswahl gespeichert wird
- Neue Story/Character erstellen und prüfen ob richtiges Modell verwendet wird
Konfiguration
Replicate API Keys für neue Modelle
Die Model-IDs in image-models.ts müssen mit den tatsächlichen Replicate-Modellen übereinstimmen:
'flux-schnell': {
replicateId: 'black-forest-labs/flux-schnell', // Aktualisieren mit korrekter ID
},
'flux-pro': {
replicateId: 'black-forest-labs/flux-1.1-pro', // Aktualisieren mit korrekter ID
}
Umgebungsvariablen
Sicherstellen, dass MAERCHENZAUBER_REPLICATE_API_KEY gesetzt ist.
Monitoring
Logs prüfen
# Backend Logs für Model-Auswahl
grep "Using Replicate model:" backend.log
# Prüfen welche Modelle verwendet werden
grep "getUserImageModel" backend.log
Datenbank-Queries
-- Anzahl User pro Modell
SELECT image_model, COUNT(*)
FROM user_settings
GROUP BY image_model;
-- User mit speziellem Modell
SELECT user_id, image_model, updated_at
FROM user_settings
WHERE image_model != 'sdxl'
ORDER BY updated_at DESC;
Troubleshooting
Problem: Modell wird nicht gespeichert
- Prüfen ob
user_settingsTabelle existiert - RLS-Policies überprüfen
- JWT Token validieren
Problem: Falsches Modell wird verwendet
- Settings Service Cache prüfen
- User-ID in Logs verifizieren
- Default-Fallback prüfen
Problem: Replicate Fehler
- API Key prüfen
- Model-IDs validieren
- Rate Limits checken
Nächste Schritte
- Model-Performance Tracking: Zeiten und Erfolgsraten messen
- User Feedback: Qualitätsbewertung pro Modell
- Credit-Anpassung: Unterschiedliche Preise pro Modell
- A/B Testing: Automatische Modell-Empfehlungen
- Admin Dashboard: Modell-Nutzungsstatistiken