From 2994df54ad67ef5509250a247e195b740738b58d Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 9 Apr 2026 15:39:11 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Complete=20prompt=5Fid=20=E2=86=92=20pro?= =?UTF-8?q?mpt=5Fslug=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Remaining Issues Found:** 1. Validierung prüfte noch prompt_id → Speichern blockiert 2. AnalysisNode zeigte noch prompt_id → "Kein Prompt" obwohl gesetzt 3. Deserializer hatte keinen Fallback für alte Workflows **Fixes:** - workflowValidation.js: Line 91 - if (!node.data.prompt_slug) statt prompt_id - AnalysisNode.jsx: Line 15 - Verwendet jetzt data.prompt_slug - Fallback: "Prompt: ${slug}" statt "Prompt #${id}" - Kommentar aktualisiert (data.prompt_slug statt prompt_id) - workflowSerializer.js: Line 81 - Fallback: node.prompt_slug || node.prompt_id || null - Backwards-compatible für alte Workflows **Testing:** 1. Neuen Workflow erstellen 2. Analysis Node hinzufügen 3. Prompt auswählen 4. Node sollte Prompt-Namen zeigen 5. Beim Öffnen: Dropdown sollte Wert anzeigen 6. Speichern sollte funktionieren (keine Validierungsfehler) 7. Execute sollte funktionieren (kein "Prompt not found") Part 2 Complete Bugfix - Workflow Execution Co-Authored-By: Claude Opus 4.6 --- frontend/src/components/workflow/nodes/AnalysisNode.jsx | 4 ++-- frontend/src/utils/workflowSerializer.js | 2 +- frontend/src/utils/workflowValidation.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/workflow/nodes/AnalysisNode.jsx b/frontend/src/components/workflow/nodes/AnalysisNode.jsx index 550f2f0..77069a2 100644 --- a/frontend/src/components/workflow/nodes/AnalysisNode.jsx +++ b/frontend/src/components/workflow/nodes/AnalysisNode.jsx @@ -5,14 +5,14 @@ import { Handle, Position } from 'reactflow' * * Properties: * - data.label: Node-Label - * - data.prompt_id: ID des referenzierten Basis-Prompts + * - data.prompt_slug: Slug des referenzierten Basis-Prompts * - data.prompt_name: Name des Prompts (optional, für Display) * - data.questions: Array von Question Augmentations * - selected: Boolean */ export function AnalysisNode({ data, selected }) { const hasQuestions = data.questions?.length > 0 - const promptName = data.prompt_name || (data.prompt_id ? `Prompt #${data.prompt_id}` : 'Kein Prompt') + const promptName = data.prompt_name || (data.prompt_slug ? `Prompt: ${data.prompt_slug}` : 'Kein Prompt') const questionCount = data.questions?.length || 0 return ( diff --git a/frontend/src/utils/workflowSerializer.js b/frontend/src/utils/workflowSerializer.js index 8d885bd..f84453c 100644 --- a/frontend/src/utils/workflowSerializer.js +++ b/frontend/src/utils/workflowSerializer.js @@ -78,7 +78,7 @@ export function deserializeFromWorkflowGraph(jsonbData) { label: node.label, ...(node.type === 'analysis' && { - prompt_slug: node.prompt_slug, + prompt_slug: node.prompt_slug || node.prompt_id || null, // Fallback für alte Workflows mit prompt_id prompt_name: node.prompt_name || null, // Falls vom Backend mitgeliefert questions: node.questions || [], fallback_strategy: node.fallback_strategy || 'conservative_skip' diff --git a/frontend/src/utils/workflowValidation.js b/frontend/src/utils/workflowValidation.js index 18c2db2..f715132 100644 --- a/frontend/src/utils/workflowValidation.js +++ b/frontend/src/utils/workflowValidation.js @@ -88,7 +88,7 @@ function validateLogic(nodes, edges, errors, warnings) { const questions = node.data.questions || [] // Prompt ausgewählt? - if (!node.data.prompt_id) { + if (!node.data.prompt_slug) { errors.push({ type: 'config', message: `Analysis-Node "${node.data.label}" hat keinen Prompt`,