Bug-Fixing Analyse Fehler #87

Merged
Lars merged 20 commits from develop into main 2026-04-18 09:54:12 +02:00
3 changed files with 30 additions and 14 deletions
Showing only changes of commit 0ad3ddd627 - Show all commits

View File

@ -275,7 +275,8 @@ async def execute_unified_prompt_stream(
Returns live progress updates during workflow execution:
- execution_started: Workflow has begun
- node_complete: Each node completes
- execution_complete: Final result ready
- workflow_graph_finished: Workflow-Graph fertig (Zwischen-Info, kein Endergebnis)
- execution_complete: Endergebnis (wie POST /execute, Feld result)
- execution_failed: Error occurred
Use this endpoint for long-running workflows (>30s) to avoid gateway timeouts.
@ -364,6 +365,20 @@ async def execute_unified_prompt_stream(
)
conn.commit()
# Pflicht für alle Prompt-Typen: Pipeline/Base rufen keinen progress_callback
# mit Abschluss auf — ohne dieses Event endet SSE ohne resolve → „Connection to server lost“.
try:
sse_payload = json.loads(json.dumps(result, default=str))
except (TypeError, ValueError):
sse_payload = {
"type": result.get("type", "unknown"),
"error": "result_not_serializable",
}
await event_queue.put({
"type": "execution_complete",
"result": sse_payload,
})
except Exception as e:
# Queue error event
await event_queue.put({

View File

@ -213,9 +213,11 @@ async def execute_workflow(
logger.info(f"Workflow execution completed: {execution_id}")
# NEW: Progress-Callback für erfolgreiche Fertigstellung
# Fortschritt: kein type=execution_complete — das sendet /execute-stream einmalig
# mit vollem execute_prompt_with_data-Result (Pipeline/Base/Workflow), sonst schließt
# der Client nach Workflow vorzeitig ohne debug/node_states oder Pipeline bricht ab.
if progress_callback:
await progress_callback("execution_complete", {
await progress_callback("workflow_graph_finished", {
"execution_id": execution_id,
"status": "completed",
"aggregated_result": aggregated,

View File

@ -512,18 +512,17 @@ export const api = {
onProgress(data)
}
// Check for final result
// Check for final result (/execute-stream liefert volles POST-/execute-Payload unter result)
if (data.type === 'execution_complete') {
// Transform SSE result to match regular execute format
finalResult = {
type: 'workflow',
execution_id: data.execution_id,
status: data.status,
aggregated_result: data.aggregated_result,
debug: {
node_states: [] // TODO: collect from progress events if needed
}
}
finalResult = data.result
? data.result
: {
type: 'workflow',
execution_id: data.execution_id,
status: data.status,
aggregated_result: data.aggregated_result,
debug: { node_states: [] },
}
eventSource.close()
resolve(finalResult)
} else if (data.type === 'execution_failed') {