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>
This commit is contained in:
@@ -1,8 +1,81 @@
|
||||
Führe alle Quality Gates aus und berichte das Ergebnis:
|
||||
|
||||
1. `npm test` – alle Tests grün?
|
||||
2. `npm run lint` – keine Warnings?
|
||||
3. `git diff --stat` – welche Dateien geändert?
|
||||
## Frontend Quality Gates
|
||||
|
||||
Wenn alle Gates grün: committe mit `git commit -m "chore: quality gate passed"`
|
||||
Wenn ein Gate rot: behebe das Problem zuerst, dann erneut prüfen.
|
||||
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).
|
||||
|
||||
Reference in New Issue
Block a user