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>
82 lines
2.8 KiB
Markdown
82 lines
2.8 KiB
Markdown
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).
|