"""BaoDan Workflow 调用封装。""" import requests from flask import current_app class WorkflowHelper: """Workflow API 调用封装。""" def run_workflow(self, inputs: dict, user_id: str) -> dict: """ 执行 Workflow 获取推荐方案。 Args: inputs: 客户信息和保险需求 user_id: 用户 ID Returns: Workflow 执行结果 """ base_url = current_app.config.get("BAODAN_API_URL", "http://localhost:5001") api_key = current_app.config.get("BAODAN_WORKFLOW_API_KEY", "") if not api_key: return {"code": 5001, "message": "Workflow API Key 未配置"} try: resp = requests.post( f"{base_url}/v1/workflows/run", json={ "inputs": inputs, "response_mode": "blocking", "user": f"recommend_{user_id}", }, headers={"Authorization": f"Bearer {api_key}"}, timeout=120, ) if resp.status_code != 200: return {"code": 5001, "message": f"Workflow 调用失败: HTTP {resp.status_code}"} result = resp.json() # 解析 Workflow 输出 if result.get("status") == "succeeded": outputs = result.get("data", {}).get("outputs", {}) return {"code": 0, "data": outputs} else: error = result.get("error", "未知错误") return {"code": 5001, "message": f"Workflow 执行失败: {error}"} except requests.Timeout: return {"code": 5001, "message": "Workflow 调用超时(120秒)"} except requests.RequestException as e: return {"code": 5001, "message": f"Workflow 调用异常: {str(e)}"} except Exception as e: return {"code": 9999, "message": f"未知错误: {str(e)}"}