ee6eb34b4c
- GPU: fix Cycles device activation order — set compute_device_type BEFORE engine init, re-set AFTER open_mainfile wipes preferences - GPU: remove _mark_sharp_and_seams edit-mode loop (redundant with Blender 5.0 shade_smooth_by_angle), saves ~200s/render on 175 parts - Material: fix _AFN suffix mismatch — build AF-stripped mat_map keys and add prefix fallback in _apply_material_library (blender_render.py) - Material: production GLB now uses get_material_library_path() which checks active AssetLibrary instead of empty legacy system setting - Admin: RenderTemplateTable multi-select output types (M2M frontend) - Admin: MaterialLibraryPanel replaced with link to Asset Libraries - UX: move Toaster to top-left to avoid dispatch button overlap - SQLAlchemy: add .unique() to all RenderTemplate M2M collection queries - Logging: flush=True on all Blender progress prints, stdout reconfigure Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Führe alle Quality Gates aus und berichte das Ergebnis:
Frontend Quality Gates
-
TypeScript-Check (wichtigster Gate!):
docker compose exec frontend npx tsc --noEmit 2>&1Prüft auf fehlende Imports, Typfehler, undefinierte Variablen. → Fehler hier = Blank Page im Browser. Immer als erstes prüfen.
-
Vite Build (optional, langsamer):
docker compose exec frontend npm run build 2>&1 | tail -20 -
Tests:
docker compose exec frontend npm test 2>&1 | tail -20Hinweis:
npm run lintexistiert nicht — TypeScript-Check ersetzt es.
Backend Quality Gates
-
Python Import-Check:
docker compose exec backend python -c "from app.main import app; print('OK')" 2>&1Prüft ob alle Python-Imports auflösbar sind.
-
Backend Startup-Logs:
docker compose logs backend 2>&1 | tail -20Auf
Application startup completeprüfen, keine Exceptions.
Daten-Integrität Gates
-
Keine absoluten storage_key-Pfade in media_assets:
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 -
Config-Attribute prüfen (nach config.py-Änderungen):
docker compose exec backend python -c "from app.config import settings; print('upload_dir:', settings.upload_dir)"
Übersicht
- Geänderte Dateien:
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 --noEmitfängt fehlende React-Imports (useEffect,useCallbacketc.) ab, die zur Laufzeit zu einer Blank Page führen — das wichtigste Gate.npm run lintexistiert in diesem Projekt nicht (kein ESLint konfiguriert).npm testprüft nur Test-Dateien, nicht Production-Komponenten auf Importfehler.- Backend-Import-Check fängt Python
ImportErrorab 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).