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:
2026-03-06 15:52:35 +01:00
parent 5764118b8e
commit 995339959e
2 changed files with 21 additions and 6 deletions
+15
View File
@@ -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
- [ ] Azure AI Credentials für Phase 4 (Bildvalidierung) noch nicht konfiguriert
- [ ] Flamenco GPU-Support nur mit NVIDIA — AMD/CPU-Fallback fehlt
+6 -6
View File
@@ -940,16 +940,16 @@ chain(
## 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
- `flamenco_client.py`, `flamenco_tasks.py` löschen
- `render_dispatcher.py` → vereinfachen (nur Celery-Pfad)
- Migration 032: laufende Flamenco-Jobs auf `cancelled` setzen
- 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
- `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`
@@ -959,13 +959,13 @@ chain(
- `.env.example`: `BLENDER_VERSION=5.0.1` dokumentieren
- 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
- Batch-Regenerierung aller threejs-Thumbnails (Admin-Funktion)
- ThreeDViewer.tsx (Frontend) bleibt
- Akzeptanzkriterium: Alle Thumbnails Blender-gerendert
**A4: MinIO hinzufügen + Storage-Abstraction**
**A4: MinIO hinzufügen + Storage-Abstraction**
- MinIO Service in `docker-compose.yml`
- `core/storage.py`: `MinIOStorage` + `LocalStorage` (für Dev-Fallback)
- 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
- 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)
- `core/config_service.py` (neu), `system_settings` Tabelle deprecated
- Migrate bestehende Settings