Files
HartOMat/.claude/commands/check.md
T
Hartmut ee6eb34b4c feat: GPU rendering + material matching + perf improvements
- 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>
2026-03-08 19:05:03 +01:00

2.8 KiB

Führe alle Quality Gates aus und berichte das Ergebnis:

Frontend Quality Gates

  1. TypeScript-Check (wichtigster Gate!):

    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):

    docker compose exec frontend npm run build 2>&1 | tail -20
    
  3. Tests:

    docker compose exec frontend npm test 2>&1 | tail -20
    

    Hinweis: npm run lint existiert nicht — TypeScript-Check ersetzt es.

Backend Quality Gates

  1. Python Import-Check:

    docker compose exec backend python -c "from app.main import app; print('OK')" 2>&1
    

    Prüft ob alle Python-Imports auflösbar sind.

  2. Backend Startup-Logs:

    docker compose logs backend 2>&1 | tail -20
    

    Auf Application startup complete prüfen, keine Exceptions.

Daten-Integrität Gates

  1. 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

  2. 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

  1. 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 --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).