# Workflow Implementation Backlog ## 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. ### 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. - `E4-T3` Persist node-level run records, logs, timings, and outputs. - `E4-T4` Support retry and failure policies. - `E4-T5` Add execution mode switch: `legacy`, `graph`, `shadow`. - `E4-T6` Add hard fallback to legacy dispatch on graph failure. ## 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. ## Epic 6: Rollout and Quality ### Tickets - `E6-T1` Add shadow mode parity execution. - `E6-T2` Build output comparison tooling. - `E6-T3` Define golden test cases. - `E6-T4` Roll out per workflow or output type. - `E6-T5` Keep legacy fallback after rollout.