{"record":{"id":"dcd8866096afb53a","repo":"ATH-MaaS/Pixelle-Video","slug":"workflow-execution-failed-synthesis-result-msg","errorCode":null,"errorMessage":"workflow execution failed: {synthesis_result.msg}","messagePattern":"workflow execution failed: (.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"web/pipelines/digital_human.py","lineNumber":827,"sourceCode":"                                        prompt=(\n                                            f\"请为商品“{goods_title}”写一段适合数字人口播短视频的中文推广文案。\"\n                                            \"要求自然、有吸引力，控制在80字以内，只输出文案正文。\"\n                                        ),\n                                        temperature=0.7,\n                                        max_tokens=300,\n                                    )\n                                else:\n                                    workflow_path = first_workflow_path\n                                    workflow_params = {\"firstimage\": character_assets[0], \"secondimage\": goods_assets[0], \"goodstype\": goods_title}\n                                    kit = await pixelle_video._get_or_create_comfykit()\n                                    workflow_config = json.load(open(workflow_path, 'r', encoding='utf8'))\n                                    if workflow_config.get(\"source\") == \"runninghub\" and \"workflow_id\" in workflow_config:\n                                        workflow_input = workflow_config[\"workflow_id\"]\n                                    else:\n                                        workflow_input = str(workflow_config)\n                                    synthesis_result = await kit.execute(workflow_input, workflow_params)\n                                    if synthesis_result.status != \"completed\":\n                                        raise Exception(f\"workflow execution failed: {synthesis_result.msg}\")\n                                    generated_image_url = getattr(synthesis_result, \"images\", [None])[0]\n                                    generated_text = getattr(synthesis_result, \"texts\", [None])[0]\n                                \n                                status_text.text(tr(\"progress.step_audio\"))\n                                audio_path = os.path.join(task_dir, \"narration.mp3\")\n                                tts_inference_mode = video_params.get(\"tts_inference_mode\", \"local\")\n                                tts_voice = video_params.get(\"tts_voice\")\n                                tts_speed = video_params.get(\"tts_speed\")\n                                tts_workflow = video_params.get(\"tts_workflow\")\n                                ref_audio = video_params.get(\"ref_audio\")\n\n                                tts_kwargs = {\n                                    \"text\": generated_text,\n                                    \"output_path\": audio_path,\n                                    \"inference_mode\": tts_inference_mode\n                                }\n                                if tts_inference_mode == \"local\":\n                                    tts_kwargs[\"voice\"] = tts_voice","sourceCodeStart":809,"sourceCodeEnd":845,"githubUrl":"https://github.com/ATH-MaaS/Pixelle-Video/blob/848b054e4fae40dabc62ec58e960b573e83793ac/web/pipelines/digital_human.py#L809-L845","documentation":"In the alternate digital-human flow, the synthesis workflow (image+text generation) is run via kit.execute; when its status != 'completed', the Exception reports synthesis_result.msg. The synthesis step itself failed in ComfyUI/RunningHub before TTS could start.","triggerScenarios":"The synthesis workflow returns a failed status due to node errors, invalid inputs (source image/text), missing custom nodes, or RunningHub API problems.","commonSituations":"RunningHub workflow_id invalid or quota exhausted; input image rejected; GPU/VRAM exhaustion on the ComfyUI server; required node pack not installed.","solutions":["Inspect synthesis_result.msg for the root cause and fix the offending node/input","Run the synthesis workflow directly in ComfyUI with identical parameters to reproduce","Verify RunningHub workflow_id and account status when source == 'runninghub'","Install missing custom nodes / free VRAM, then retry the task"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if workflow_config.get(\"source\") == \"runninghub\":\n    assert workflow_config.get(\"workflow_id\"), \"Synthesis workflow requires a workflow_id for RunningHub\"\nassert Path(source_image_path).is_file(), \"Synthesis input image missing\"","typeGuard":null,"tryCatchPattern":"try:\n    await generate_digital_human_video(...)\nexcept Exception as e:\n    if str(e).startswith(\"workflow execution failed\"):\n        st.error(f\"Synthesis workflow failed: {e}\")  # includes synthesis_result.msg\n        # fix node/input per msg, then retry","preventionTips":["Dry-run the synthesis workflow with real inputs before pipeline runs","Confirm RunningHub workflow_id validity and quota for API-sourced workflows","Install required custom node packs and monitor VRAM on the ComfyUI server","Capture and alert on synthesis_result.msg early to shorten debug cycles"],"tags":["workflow-execution","comfyui","runninghub"],"backgroundTag":"workflow-execution-failed","analyzedSha":"848b054e4fae40dabc62ec58e960b573e83793ac","analyzedAt":"2026-08-30T03:24:41.468Z","schemaVersion":2},"datasetVersion":"2026-08-30T08:17:16.595Z"}