From 7fc59e5c5f656c276a8c064d147455c33ee8f425 Mon Sep 17 00:00:00 2001 From: hub-gif <2487812171@qq.com> Date: Mon, 13 Apr 2026 10:36:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(pipeline):=20=E6=8A=A5=E5=91=8A=E9=87=8D?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=97=B6=E8=B7=AF=E5=BE=84=E4=B8=8E=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=94=99=E8=AF=AF=E7=BB=9F=E4=B8=80=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=20400?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- backend/pipeline/views.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/backend/pipeline/views.py b/backend/pipeline/views.py index 2bdc923..6256b84 100644 --- a/backend/pipeline/views.py +++ b/backend/pipeline/views.py @@ -275,11 +275,15 @@ class JobRegenerateReportView(APIView): ser.is_valid(raise_exception=True) generator = ser.validated_data.get("generator") or "rules" rc = job.report_config if isinstance(job.report_config, dict) else None + # 规则版报告先落盘;run_dir 校验、缺 CSV 等与是否走 LLM 无关,统一返回 400(勿误用 503) + try: + regenerate_competitor_report(job.run_dir, job.keyword, report_config=rc) + except FileNotFoundError as e: + return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST) + except ValueError as e: + return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST) if generator == "llm": try: - regenerate_competitor_report( - job.run_dir, job.keyword, report_config=rc - ) rules_md = ( Path(job.run_dir) / "competitor_analysis.md" ).read_text(encoding="utf-8") @@ -298,13 +302,6 @@ class JobRegenerateReportView(APIView): {"detail": f"大模型网关错误:{e}"}, status=status.HTTP_502_BAD_GATEWAY, ) - else: - try: - regenerate_competitor_report(job.run_dir, job.keyword, report_config=rc) - except FileNotFoundError as e: - return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST) - except ValueError as e: - return Response({"detail": str(e)}, status=status.HTTP_400_BAD_REQUEST) return Response(PipelineJobSerializer(job).data)