docs: learnings erfasst - cinematic render NameError, cancel-race, legacy-only pfad

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-21 19:10:22 +02:00
co-authored by Claude Sonnet 4.6
parent d2e4934cca
commit 6459b9e62d
+9
View File
@@ -506,3 +506,12 @@ Bug "Wälzkörper an falscher Position" war in Code durch commit 638b93b (IsSame
- `BRepBuilderAPI_Transform` komplett entfernt — `RWGltf_CafWriter` konvertiert intern mm→m und Z-up→Y-up.
- `writer.SetMergeFaces(True)` hinzugefügt — composited Face-Triangulationen zu korrekten Shape-Buffern (1.212 → 46.573 Vertices).
**Merke**: OCC `TopLoc_Location` kann keine Skalierung (wirft `Standard_DomainError`). Für Skalierung entweder den Writer intern konvertieren lassen oder GLB post-process.
### 2026-07-21 | Debugging | NameError in cinematic render error path maskiert echten Blender-Fehler
In `render_cinematic_to_file` (`render_blender.py`) las der Fehler-Handler nach `proc.returncode != 0` die Variablen `stdout` und `stderr` — beide nie definiert (tatsächlich heißen sie `log_lines` und `stderr_lines`). Jeder Blender-Absturz produzierte `{"error": "name 'stdout' is not defined"}` in der DB statt dem echten Fehlertext. **Lösung:** `stdout`/`stderr``log_lines`/`stderr_lines`-Referenz korrigiert.
### 2026-07-21 | Architektur | Cancel-Race im Render-Task — completed überschreibt cancelled
Wenn ein Render-Job gecancelt wird, läuft Blender weiter. Wenn er fertig ist, schreibt `persist_order_line_output` `render_status=completed` ohne zu prüfen ob die Line mittlerweile cancelled wurde. **Lösung:** Guard am Anfang von `persist_order_line_output`: wenn `line.render_status == "cancelled"`, Early-Return ohne Statusmutation.
### 2026-07-21 | Architektur | Cinematic-Render ist ausschließlich Legacy-Pfad — kein Graph-Node
Es gibt keinen `BLENDER_CINEMATIC`-Node im Workflow-Graph-System. Cinematic-Renders laufen ausschließlich über den Legacy-Pfad (`render_order_line_task`), ausgelöst durch `output_type.render_settings.cinematic=true`. Für einen Cinematic-Output-Type darf deshalb kein `workflow_definition_id` gesetzt sein — sonst wird der Job als Graph-Workflow geroutet, der keinen Cinematic-Node hat und leer bleibt.