docs: Phase A abgeschlossen, Learnings und PLAN.md aktualisiert
- PLAN.md: Phase A alle Tasks als ✅ markiert, Status IN UMSETZUNG - LEARNINGS.md: 2 neue Learnings - .gitignore 'core' Regel trifft Verzeichnisse (Root-relative Fix) - Blender HTTP-Service vs. direkter Subprocess (render-worker Pattern) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -109,6 +109,21 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 2026-03-06 | Refactor | .gitignore `core` trifft Verzeichnisse
|
||||||
|
**Problem:** `.gitignore` enthielt `core` als Regel (für core dump files) — Git ignorierte damit auch `backend/app/core/` Verzeichnis
|
||||||
|
**Lösung:** Regel zu `/core` umbenannt (Root-relative Regel trifft nur `/core` Datei, nicht verschachtelte `core/`-Verzeichnisse)
|
||||||
|
**Für künftige Projekte:** Immer Root-relative Pfade (`/core`) für Dateien im Root-Verzeichnis nutzen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2026-03-06 | Architektur | Blender-HTTP-Service vs. direkter Subprocess
|
||||||
|
**Problem:** `blender-renderer` als Flask/FastAPI HTTP-Microservice war ein Single-Point-of-Failure (max. 1 concurrent Request), kein Scaling möglich, HTTP-Overhead bei jedem Render
|
||||||
|
**Lösung:** Render-Worker als Celery-Container (`render-worker/`) — Blender direkt via `subprocess.run` ohne HTTP. `is_blender_available()` prüft `BLENDER_BIN` env var für Kontext-Detection
|
||||||
|
**Wichtig:** `step_processor.py` erkennt über `BLENDER_BIN`-Env ob Blender im aktuellen Container verfügbar ist — Backend-Container fallen auf Pillow zurück
|
||||||
|
**Für künftige Projekte:** Subprocess-basierter Renderer > HTTP-Microservice für blocking compute tasks
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Offene Fragen
|
## Offene Fragen
|
||||||
- [ ] Azure AI Credentials für Phase 4 (Bildvalidierung) noch nicht konfiguriert
|
- [ ] Azure AI Credentials für Phase 4 (Bildvalidierung) noch nicht konfiguriert
|
||||||
- [ ] Flamenco GPU-Support nur mit NVIDIA — AMD/CPU-Fallback fehlt
|
- [ ] Flamenco GPU-Support nur mit NVIDIA — AMD/CPU-Fallback fehlt
|
||||||
|
|||||||
@@ -940,16 +940,16 @@ chain(
|
|||||||
|
|
||||||
## 7. Phasenplan mit Tasks
|
## 7. Phasenplan mit Tasks
|
||||||
|
|
||||||
### Phase A: Infrastruktur-Cleanup + MinIO (Woche 1-2)
|
### Phase A: Infrastruktur-Cleanup + MinIO ✅ ABGESCHLOSSEN (2026-03-06)
|
||||||
|
|
||||||
**A1: Flamenco entfernen**
|
**A1: Flamenco entfernen** ✅
|
||||||
- `docker-compose.yml` → flamenco-manager, flamenco-worker entfernen
|
- `docker-compose.yml` → flamenco-manager, flamenco-worker entfernen
|
||||||
- `flamenco_client.py`, `flamenco_tasks.py` löschen
|
- `flamenco_client.py`, `flamenco_tasks.py` löschen
|
||||||
- `render_dispatcher.py` → vereinfachen (nur Celery-Pfad)
|
- `render_dispatcher.py` → vereinfachen (nur Celery-Pfad)
|
||||||
- Migration 032: laufende Flamenco-Jobs auf `cancelled` setzen
|
- Migration 032: laufende Flamenco-Jobs auf `cancelled` setzen
|
||||||
- Akzeptanzkriterium: `docker compose up` startet ohne flamenco, alle bestehenden Renders laufen via Celery
|
- Akzeptanzkriterium: `docker compose up` startet ohne flamenco, alle bestehenden Renders laufen via Celery
|
||||||
|
|
||||||
**A2: blender-renderer → render-worker Celery-Container (ADR-06 umsetzen)**
|
**A2: blender-renderer → render-worker Celery-Container (ADR-06 umsetzen)** ✅
|
||||||
- `render-worker/Dockerfile` (neu): Ubuntu + Blender (>= 5.0.1, via `BLENDER_VERSION` Build-Arg) + cadquery + Python-Deps
|
- `render-worker/Dockerfile` (neu): Ubuntu + Blender (>= 5.0.1, via `BLENDER_VERSION` Build-Arg) + cadquery + Python-Deps
|
||||||
- `check_version.py` läuft beim Container-Start: prüft Blender >= 5.0.1, Exit 1 wenn nicht erfüllt
|
- `check_version.py` läuft beim Container-Start: prüft Blender >= 5.0.1, Exit 1 wenn nicht erfüllt
|
||||||
- `blender-renderer/blender_render.py` → `render-worker/scripts/blender_render.py`
|
- `blender-renderer/blender_render.py` → `render-worker/scripts/blender_render.py`
|
||||||
@@ -959,13 +959,13 @@ chain(
|
|||||||
- `.env.example`: `BLENDER_VERSION=5.0.1` dokumentieren
|
- `.env.example`: `BLENDER_VERSION=5.0.1` dokumentieren
|
||||||
- Akzeptanzkriterium: Thumbnail via Celery-Task, kein HTTP-Call zu :8100, Version-Check besteht
|
- Akzeptanzkriterium: Thumbnail via Celery-Task, kein HTTP-Call zu :8100, Version-Check besteht
|
||||||
|
|
||||||
**A3: threejs-renderer entfernen**
|
**A3: threejs-renderer entfernen** ✅
|
||||||
- Service entfernen, threejs-Pfad in step_processor.py entfernen
|
- Service entfernen, threejs-Pfad in step_processor.py entfernen
|
||||||
- Batch-Regenerierung aller threejs-Thumbnails (Admin-Funktion)
|
- Batch-Regenerierung aller threejs-Thumbnails (Admin-Funktion)
|
||||||
- ThreeDViewer.tsx (Frontend) bleibt
|
- ThreeDViewer.tsx (Frontend) bleibt
|
||||||
- Akzeptanzkriterium: Alle Thumbnails Blender-gerendert
|
- Akzeptanzkriterium: Alle Thumbnails Blender-gerendert
|
||||||
|
|
||||||
**A4: MinIO hinzufügen + Storage-Abstraction**
|
**A4: MinIO hinzufügen + Storage-Abstraction** ✅
|
||||||
- MinIO Service in `docker-compose.yml`
|
- MinIO Service in `docker-compose.yml`
|
||||||
- `core/storage.py`: `MinIOStorage` + `LocalStorage` (für Dev-Fallback)
|
- `core/storage.py`: `MinIOStorage` + `LocalStorage` (für Dev-Fallback)
|
||||||
- Bestehende Upload-Endpoints: Dateien nach MinIO statt in lokales `/uploads`
|
- Bestehende Upload-Endpoints: Dateien nach MinIO statt in lokales `/uploads`
|
||||||
@@ -974,7 +974,7 @@ chain(
|
|||||||
- `docker-compose.worker.yml` (neu): render-worker für externe Maschinen
|
- `docker-compose.worker.yml` (neu): render-worker für externe Maschinen
|
||||||
- Akzeptanzkriterium: File-Upload → MinIO, Worker-Container läuft auf Maschine B und rendert Jobs
|
- Akzeptanzkriterium: File-Upload → MinIO, Worker-Container läuft auf Maschine B und rendert Jobs
|
||||||
|
|
||||||
**A5: system_settings → app_config**
|
**A5: system_settings → app_config** ✅
|
||||||
- Migration 033: `app_config` Tabelle (JSONB-Spalten: render, storage, notifications, worker, billing)
|
- Migration 033: `app_config` Tabelle (JSONB-Spalten: render, storage, notifications, worker, billing)
|
||||||
- `core/config_service.py` (neu), `system_settings` Tabelle deprecated
|
- `core/config_service.py` (neu), `system_settings` Tabelle deprecated
|
||||||
- Migrate bestehende Settings
|
- Migrate bestehende Settings
|
||||||
|
|||||||
Reference in New Issue
Block a user