Führe alle Quality Gates aus und berichte das Ergebnis: ## Frontend Quality Gates 1. **TypeScript-Check** (wichtigster Gate!): ```bash docker compose exec frontend npx tsc --noEmit 2>&1 ``` Prüft auf fehlende Imports, Typfehler, undefinierte Variablen. → Fehler hier = Blank Page im Browser. Immer als erstes prüfen. 2. **Vite Build** (optional, langsamer): ```bash docker compose exec frontend npm run build 2>&1 | tail -20 ``` 3. **Tests**: ```bash docker compose exec frontend npm test 2>&1 | tail -20 ``` Hinweis: `npm run lint` existiert nicht — TypeScript-Check ersetzt es. ## Backend Quality Gates 4. **Python Import-Check**: ```bash docker compose exec backend python -c "from app.main import app; print('OK')" 2>&1 ``` Prüft ob alle Python-Imports auflösbar sind. 5. **Backend Startup-Logs**: ```bash docker compose logs backend 2>&1 | tail -20 ``` Auf `Application startup complete` prüfen, keine Exceptions. ## Daten-Integrität Gates 7. **Keine absoluten storage_key-Pfade in media_assets**: ```bash docker compose exec backend python -c " import asyncio from sqlalchemy import text from app.database import AsyncSessionLocal async def main(): async with AsyncSessionLocal() as db: r = await db.execute(text(\"SELECT COUNT(*) FROM media_assets WHERE storage_key LIKE '/%' AND is_archived=false\")) n = r.scalar() print(f'Absolute storage_keys: {n}') if n > 0: print('WARNUNG: Absolute Pfade brechen bei Volume-Umzug / Infrastruktur-Änderung!') print('Fix: UPDATE media_assets SET storage_key = replace(storage_key, ...) WHERE ...') asyncio.run(main()) " ``` → Erwartet: `Absolute storage_keys: 0` 8. **Config-Attribute prüfen** (nach config.py-Änderungen): ```bash docker compose exec backend python -c "from app.config import settings; print('upload_dir:', settings.upload_dir)" ``` ## Übersicht 9. **Geänderte Dateien**: ```bash git diff --stat ``` ## Ergebnis Wenn alle Gates grün: committe mit passendem Conventional-Commit-Message. Wenn ein Gate rot: Problem zuerst beheben, dann erneut prüfen. ## Warum diese Gates? - `tsc --noEmit` fängt fehlende React-Imports (`useEffect`, `useCallback` etc.) ab, die zur Laufzeit zu einer Blank Page führen — das wichtigste Gate. - `npm run lint` existiert in diesem Projekt nicht (kein ESLint konfiguriert). - `npm test` prüft nur Test-Dateien, nicht Production-Komponenten auf Importfehler. - Backend-Import-Check fängt Python `ImportError` ab bevor sie in Produktion auftauchen. - Absolute storage_key-Pfade brechen bei jedem Volume-Umzug oder Infrastruktur-Änderung (Flamenco-Entfernung hat 396 Blender-Renders unzugänglich gemacht).