{"record":{"id":"0e81ae6980bbf6d4","repo":"iflytek/astron-agent","slug":"task-creation-failed-no-task-id-returned-response-data","errorCode":null,"errorMessage":"Task creation failed: No task ID returned: {response_data}","messagePattern":"Task creation failed: No task ID returned: (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":500,"severity":"error","filePath":"core/plugin/rpa/infra/xiaowu/tasks.py","lineNumber":73,"sourceCode":"            response.raise_for_status()\n\n            response_data = response.json()\n            logger.debug(f\"create task response_data:\\n {response_data}\\n\\n\")\n\n            code = response_data.get(\"code\", \"-1\")\n            msg = response_data.get(\"msg\", None)\n            data = response_data.get(\"data\", None)\n\n            if code != \"0000\" or not data:\n                logger.error(f\"Task creation failed: {msg}\")\n                raise HTTPException(\n                    status_code=500, detail=f\"Task creation failed: {msg}\"\n                )\n\n            task_id = data.get(\"executionId\", None)\n            if not task_id:\n                logger.error(\"Task creation failed: No task ID returned\")\n                raise HTTPException(\n                    status_code=500,\n                    detail=f\"Task creation failed: No task ID returned: {response_data}\",\n                )\n\n            return task_id\n        except httpx.HTTPStatusError as e:\n            logger.error(f\"Task creation failed: {e.response.text}\")\n            raise HTTPException(\n                status_code=e.response.status_code,\n                detail=f\"Task creation failed: {e.response.text}\",\n            ) from e\n        except Exception as e:\n            logger.error(f\"Task creation failed: {e}\")\n            raise HTTPException(\n                status_code=500, detail=f\"Task creation failed: {e}\"\n            ) from e\n\n","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/iflytek/astron-agent/blob/5e758547a83371a5a4b29dadf4ac03e8dd527635/core/plugin/rpa/infra/xiaowu/tasks.py#L55-L91","documentation":"Raised when the Xiaowu create-task API returned code '0000' but the data.executionId field is missing or empty. The call 'succeeded' per the API contract, yet no task identifier was produced, so the caller cannot poll status later.","triggerScenarios":"response_data['code'] == '0000' but response_data['data'] is missing 'executionId' or it is None/empty string.","commonSituations":"Upstream API contract change (executionId renamed or nested differently), upstream bug returning success envelope with empty payload, environment pointing at a stub/mock service.","solutions":["Log/inspect response_data and confirm the actual field name for the task ID","Verify you are calling the correct environment (prod vs stub) with the matching API contract","Ask the upstream team about the successful-but-empty response","Add a schema check/assertion on the expected response shape"],"exampleFix":"// before\ntask_id = data.get(\"executionId\", None)\n// after\ntask_id = data.get(\"executionId\") or data.get(\"execution_id\")  # tolerate contract variants\nif not task_id:\n    raise HTTPException(status_code=500, detail=f\"Task creation failed: No task ID returned: {response_data}\")","handlingStrategy":"validation","validationCode":"data = response_data.get(\"data\") or {}\nif not (data.get(\"executionId\") or data.get(\"execution_id\")):\n    raise ValueError(f\"No executionId in creation response: {response_data}\")","typeGuard":"def has_task_id(data: dict | None) -> bool:\n    return bool(isinstance(data, dict) and (data.get(\"executionId\") or data.get(\"execution_id\")))","tryCatchPattern":null,"preventionTips":["Pin and test against the upstream API contract/schema","Add a response schema assertion in integration tests","Check which environment (prod/stub) the URL points to","Alert on success-with-empty-payload patterns upstream"],"tags":["http","api-contract","rpa"],"backgroundTag":"unexpected-api-response-shape","analyzedSha":"5e758547a83371a5a4b29dadf4ac03e8dd527635","analyzedAt":"2026-09-12T08:03:51.356Z","contentChangedAt":"2026-09-12T08:03:51.356Z","schemaVersion":2},"datasetVersion":"2026-09-19T12:17:13.211Z"}