From f3c7ce72de3b5bba51080361b487b081305f64f9 Mon Sep 17 00:00:00 2001 From: gahusb Date: Wed, 15 Apr 2026 00:37:23 +0900 Subject: [PATCH] =?UTF-8?q?fix(agent-office):=20blog=20=EB=A6=AC=EC=84=9C?= =?UTF-8?q?=EC=B9=98=20=EC=9D=91=EB=8B=B5=20=ED=95=84=EB=93=9C=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(result.keyword=5Fid=20=E2=86=92=20result?= =?UTF-8?q?=5Fid)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit blog-lab /task 응답은 최상위 result_id 필드를 사용하지만 중첩 result.keyword_id를 읽고 있어 리서치 성공 직후 None으로 빠져나와 "research timeout"으로 오보고되던 문제 수정. 실제 타임아웃과 파싱 실패 경로를 분리해 에러 메시지 구분. Co-Authored-By: Claude Opus 4.6 --- agent-office/app/agents/blog.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/agent-office/app/agents/blog.py b/agent-office/app/agents/blog.py index 0223671..e8645bf 100644 --- a/agent-office/app/agents/blog.py +++ b/agent-office/app/agents/blog.py @@ -57,16 +57,20 @@ class BlogAgent(BaseAgent): keyword_id = None # 2) 리서치 완료까지 폴링 (최대 3분) + timed_out = True for _ in range(36): await asyncio.sleep(5) status = await service_proxy.blog_task_status(research_task_id) if status.get("status") == "succeeded": - keyword_id = status.get("result", {}).get("keyword_id") + keyword_id = status.get("result_id") + timed_out = False break if status.get("status") == "failed": raise Exception(f"research failed: {status.get('error')}") + if timed_out: + raise Exception("research timeout (3분 내 완료되지 않음)") if not keyword_id: - raise Exception("research timeout") + raise Exception("research succeeded but result_id missing") # 3) 작가 단계 await self.transition("working", f"글 생성: {keyword}", task_id)