124 lines
6.4 KiB
Markdown
124 lines
6.4 KiB
Markdown
# Workflow Implementation Backlog
|
|
|
|
Execution orchestration, ownership split, and merge order are tracked in [`docs/workflows/WORKERS.md`](/home/hartmut/Documents/Copilot/schaefflerautomat/docs/workflows/WORKERS.md).
|
|
|
|
## Epic 1: Canonical Workflow Model
|
|
|
|
### Tickets
|
|
|
|
- `E1-T1` Finalize canonical workflow JSON schema with `version`, `nodes`, `edges`, and optional `ui`.
|
|
- `E1-T2` Align frontend workflow API types with the backend schema.
|
|
- `E1-T3` Extend backend validation for duplicate IDs, invalid edges, unknown steps, and invalid params.
|
|
- `E1-T4` Add migration helpers for existing preset configs: `still`, `turntable`, `multi_angle`, `still_with_exports`.
|
|
- `E1-T5` Add tests for preset-to-DAG migration.
|
|
|
|
### Primary Files
|
|
|
|
- [`backend/app/domains/rendering/workflow_schema.py`](/home/hartmut/Documents/Copilot/schaefflerautomat/backend/app/domains/rendering/workflow_schema.py)
|
|
- [`frontend/src/api/workflows.ts`](/home/hartmut/Documents/Copilot/schaefflerautomat/frontend/src/api/workflows.ts)
|
|
- [`frontend/src/pages/WorkflowEditor.tsx`](/home/hartmut/Documents/Copilot/schaefflerautomat/frontend/src/pages/WorkflowEditor.tsx)
|
|
|
|
## Epic 2: Node Registry and Settings Schemas
|
|
|
|
### Tickets
|
|
|
|
- `E2-T1` Add a backend `NodeDefinitionRegistry`.
|
|
- `E2-T2` Define metadata and settings schema for each workflow node.
|
|
- `E2-T3` Add `GET /api/workflows/node-definitions`.
|
|
- `E2-T4` Provide schema-driven defaults and editor field groups.
|
|
- `E2-T5` Add composite bridge nodes for safe migration.
|
|
- `E2-T6` Extend node definitions with family, module key, input contract, output contract, and artifact roles.
|
|
|
|
### Required Node Coverage
|
|
|
|
- `resolve_step_path`
|
|
- `occ_object_extract`
|
|
- `occ_glb_export`
|
|
- `glb_bbox`
|
|
- `material_map_resolve`
|
|
- `auto_populate_materials`
|
|
- `blender_render`
|
|
- `threejs_render`
|
|
- `thumbnail_save`
|
|
- `order_line_setup`
|
|
- `resolve_template`
|
|
- `blender_still`
|
|
- `blender_turntable`
|
|
- `output_save`
|
|
- `export_blend`
|
|
- `stl_cache_generate`
|
|
- `notify`
|
|
|
|
## Epic 3: Legacy Step Extraction
|
|
|
|
### Tickets
|
|
|
|
- `E3-T1` Create a parity matrix from the legacy render pipeline.
|
|
- `E3-T2` Extract `order_line_setup` into a reusable service/task. `completed`
|
|
- `E3-T3` Extract `resolve_template`. `completed`
|
|
- `E3-T4` Extract `material_map_resolve`. `completed`
|
|
- `E3-T5` Extract `auto_populate_materials`. `completed`
|
|
- `E3-T6` Extract `glb_bbox`. `completed`
|
|
- `E3-T7` Extract `output_save`. `completed`
|
|
- `E3-T8` Extract `notify`. `completed`
|
|
- `E3-T9` Add executor tests for all extracted nodes. `completed`
|
|
|
|
### Legacy Sources
|
|
|
|
- [`backend/app/domains/pipeline/tasks/render_order_line.py`](/home/hartmut/Documents/Copilot/schaefflerautomat/backend/app/domains/pipeline/tasks/render_order_line.py)
|
|
- [`backend/app/domains/rendering/tasks.py`](/home/hartmut/Documents/Copilot/schaefflerautomat/backend/app/domains/rendering/tasks.py)
|
|
- [`backend/app/core/process_steps.py`](/home/hartmut/Documents/Copilot/schaefflerautomat/backend/app/core/process_steps.py)
|
|
|
|
## Epic 4: Graph Runtime
|
|
|
|
### Tickets
|
|
|
|
- `E4-T1` Introduce `WorkflowContext`. `completed`
|
|
- `E4-T2` Refactor executor to process nodes against context and node outputs. `completed`
|
|
- `E4-T3` Persist node-level run records, logs, timings, and outputs. `completed`
|
|
- `E4-T4` Support retry and failure policies. `completed`
|
|
- `E4-T5` Add execution mode switch: `legacy`, `graph`, `shadow`. `completed`
|
|
- `E4-T6` Add hard fallback to legacy dispatch on graph failure. `completed`
|
|
- `E4-T7` Make `output_save` graph-authoritative for still renders by disabling render-task self-publish whenever a downstream `output_save` node is present. `completed`
|
|
- `E4-T8` Persist authoritative still output metadata back into `WorkflowNodeResult` rows and keep shadow mode non-authoritative. `completed`
|
|
- `E4-T9` Extend runtime, dispatch, and task tests for graph-authoritative still persistence and legacy-safe notify handoff. `completed`
|
|
- `E4-T10` Extend graph-authoritative `output_save` semantics to `export_blend`, including asset persistence and node-result updates without mutating the primary order-line render output. `completed`
|
|
- `E4-T11` Extend graph-authoritative `output_save` semantics to `blender_turntable`, including graph/legacy-safe task argument handling, authoritative persistence, and node-result updates for video outputs. `completed`
|
|
|
|
## Epic 5: Editor Parity
|
|
|
|
### Tickets
|
|
|
|
- `E5-T1` Save and load `edges`.
|
|
- `E5-T2` Replace `pipeline_step` in node UI data with canonical node `step`.
|
|
- `E5-T3` Render node settings from backend schemas.
|
|
- `E5-T4` Add graph validation in the editor.
|
|
- `E5-T5` Add dry-run and dispatch from the editor.
|
|
- `E5-T6` Add workflow run inspection UI.
|
|
- `E5-T7` Reorganize authoring around family-specific starter graphs and family-safe palettes.
|
|
- Progress: The editor already supports right-click node insertion, searchable family-aware palettes, auto-align, edge deletion, dry-run/dispatch, and run inspection. The current remaining parity slice is authoring polish and validation around the canonical non-legacy still graph, not missing basic editor mechanics.
|
|
|
|
## Epic 7: Output-Type Invocation Profiles
|
|
|
|
### Tickets
|
|
|
|
- `E7-T1` Align frontend/backend defaults and allowed values for output-type creation. `completed`
|
|
- `E7-T2` Define explicit workflow family on output types. `completed`
|
|
- `E7-T3` Separate invocation overrides from legacy raw render settings. `completed`
|
|
- `E7-T4` Add artifact-kind contract to output types. `completed`
|
|
- `E7-T5` Validate output-type family/workflow compatibility in backend APIs. `completed`
|
|
- `E7-T6` Redesign admin create/edit flow around workflow invocation instead of legacy renderer flags. `completed`
|
|
- Progress: Output types now persist an explicit workflow family, artifact kind, and invocation override set; backend APIs reject family/artifact mismatches against linked workflows; serializer output exposes a typed invocation profile instead of leaking raw dict payloads.
|
|
|
|
## Epic 6: Rollout and Quality
|
|
|
|
### Tickets
|
|
|
|
- `E6-T1` Add shadow mode parity execution. `completed`
|
|
- `E6-T2` Build output comparison tooling. `completed`
|
|
- `E6-T3` Define golden test cases. `completed`
|
|
- `E6-T3a` Harden the golden-suite harness against transient backend disconnects and 502/503/504 responses. `completed`
|
|
- `E6-T3b` Close the primary `.blend` graph-authoritative persistence gap so graph blend exports complete the order, persist the order-line output, and publish a `blend_production` media asset. `completed`
|
|
- `E6-T4` Roll out per workflow or output type.
|
|
- `E6-T5` Keep legacy fallback after rollout.
|