feat(phase7.3): workflow editor pipeline step nodes

- GET /api/workflows/pipeline-steps: returns all StepName enum values
  with category (input|processing|rendering|output) + descriptions;
  registered before /{workflow_id} to avoid path collision
- frontend/src/api/workflows.ts: getPipelineSteps(), PipelineStep
  and PipelineStepsResponse interfaces
- WorkflowEditor: PipelineStepsPanel showing steps grouped by category
  with collapsible accordion sections
- ConfigSidepanel: "Pipeline Step" select dropdown binds any node to a
  StepName; selected step description shown below dropdown
- Active workflow indicator: green dot next to is_active=true entries
- Improved empty state with descriptive copy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 20:24:17 +01:00
parent c99976cc85
commit 1409be171c
3 changed files with 276 additions and 27 deletions
+18
View File
@@ -78,3 +78,21 @@ export const deleteWorkflow = (id: string): Promise<void> =>
export const getWorkflowRuns = (workflowId: string): Promise<WorkflowRun[]> =>
api.get(`/workflows/${workflowId}/runs`).then(r => r.data)
// ─── Pipeline Steps ───────────────────────────────────────────────────────────
export type StepCategory = 'input' | 'processing' | 'rendering' | 'output'
export interface PipelineStep {
name: string
label: string
category: StepCategory
description: string
}
export interface PipelineStepsResponse {
steps: PipelineStep[]
}
export const getPipelineSteps = (): Promise<PipelineStepsResponse> =>
api.get('/workflows/pipeline-steps').then(r => r.data)