{"record":{"id":"1a7a5083469524b7","repo":"ATH-MaaS/Pixelle-Video","slug":"the-second-step-workflow-file-does-not-exist-seco","errorCode":null,"errorMessage":"The second step workflow file does not exist:{second_workflow_path}","messagePattern":"The second step workflow file does not exist:(.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"web/pipelines/digital_human.py","lineNumber":641,"sourceCode":"                                \"inference_mode\": tts_inference_mode\n                            }\n                            if tts_inference_mode == \"local\":\n                                tts_kwargs[\"voice\"] = tts_voice\n                                tts_kwargs[\"speed\"] = tts_speed\n                            elif tts_inference_mode == \"comfyui\":\n                                if tts_workflow:\n                                    tts_kwargs[\"workflow\"] = tts_workflow\n                                if ref_audio:\n                                    tts_kwargs[\"ref_audio\"] = ref_audio\n\n                            await pixelle_video.tts(**tts_kwargs)\n                            progress_bar.progress(65)\n                            status_text.text(tr(\"progress.concatenating\"))\n\n                            # Directly call the second workflow\n                            second_workflow_path = Path(workflow_path.get(\"second_workflow_path\"))\n                            if not second_workflow_path.exists():\n                                raise Exception(f\"The second step workflow file does not exist:{second_workflow_path}\")\n                            with open(second_workflow_path, 'r', encoding='utf-8') as f:\n                                second_workflow_config = json.load(f)\n                            second_workflow_params = {\n                                \"videoimage\": generated_image_path,\n                                \"audio\": audio_path\n                            }\n                            if second_workflow_config.get(\"source\") == \"runninghub\" and \"workflow_id\" in second_workflow_config:\n                                workflow_input = second_workflow_config[\"workflow_id\"]\n                            else:\n                                workflow_input = str(second_workflow_config)\n                            second_result = await kit.execute(workflow_input, second_workflow_params)\n                            # Video Link Extraction\n                            generated_video_url = None\n                            if hasattr(second_result, 'videos') and second_result.videos:\n                                generated_video_url = second_result.videos[0]\n                            elif hasattr(second_result, 'outputs') and second_result.outputs:\n                                for node_id, node_output in second_result.outputs.items():\n                                    if isinstance(node_output, dict) and 'videos' in node_output:","sourceCodeStart":623,"sourceCodeEnd":659,"githubUrl":"https://github.com/ATH-MaaS/Pixelle-Video/blob/848b054e4fae40dabc62ec58e960b573e83793ac/web/pipelines/digital_human.py#L623-L659","documentation":"generate_digital_human_video in web/pipelines/digital_human.py loads a two-stage pipeline; at the concatenation stage it resolves Path from video_params['second_workflow_path'] and raises if the file does not exist before reading its JSON.","triggerScenarios":"The two-step digital human flow reaches ~65% progress, then Path(second_workflow_path).exists() is False — the second workflow JSON path is misconfigured, the file was moved/deleted, or a relative path no longer resolves from the current working directory.","commonSituations":"Settings pointing at a workflow file that was renamed; migrating machines without copying the second workflow; using a relative path while launching the app from another directory.","solutions":["Check that second_workflow_path in the settings points to an existing file and correct it","Use an absolute path for second_workflow_path to avoid working-directory issues","Restore or re-download the missing second-step workflow JSON","Verify file permissions allow the app process to read the path"],"exampleFix":"// before\n\"second_workflow_path\": \"workflows/dh_step2_old.json\"  # missing\n// after\n\"second_workflow_path\": \"/abs/path/workflows/dh_step2.json\"  # exists","handlingStrategy":"validation","validationCode":"from pathlib import Path\np = Path(video_params[\"second_workflow_path\"])\nif not p.is_file():\n    raise FileNotFoundError(f\"Second-step workflow missing: {p.resolve()}\")","typeGuard":null,"tryCatchPattern":"try:\n    await generate_digital_human_video(...)\nexcept Exception as e:\n    if \"second step workflow file does not exist\" in str(e):\n        st.error(f\"Second workflow not found: {e}; fix second_workflow_path in settings.\")","preventionTips":["Use absolute paths for second_workflow_path in settings","Validate both workflow paths exist when saving pipeline settings","Keep the stock second-step workflow JSONs installed and versioned","Re-check paths after moving the project or switching machines"],"tags":["file-not-found","workflow","configuration"],"backgroundTag":"workflow-file-not-found","analyzedSha":"848b054e4fae40dabc62ec58e960b573e83793ac","analyzedAt":"2026-08-30T03:24:41.468Z","schemaVersion":2},"datasetVersion":"2026-08-30T08:17:16.595Z"}