From e3301f5ed957e6b78f8b88f496c2a574443a7da3 Mon Sep 17 00:00:00 2001 From: ymq Date: Sun, 23 Aug 2026 10:37:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20capability=5Fctx=20=E7=9A=84=20iteration?= =?UTF-8?q?=5Fid=20=E7=94=A8=20getattr=20=E5=AF=B9=20dict=20=E5=8F=96=20id?= =?UTF-8?q?=20=E8=BF=94=E5=9B=9E=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit get_current_iteration 返回 dict(_rec_to_dict 转的),但 capability_ctx 用 getattr(_iter, 'id', '') 取 id,dict 无 id 属性 → 返回空 ''。导致 test agent 调 create_test_plan/create_case 时拿到的 iteration_id 是空,为绕过「缺少 iteration_id」 报错而显式传迭代名「人事项目6-第3迭代」→ sd_test_plans.iteration_id 存成了迭代名 而非 sd_iterations.id → JOIN 关联全断,测试计划/用例无法归属迭代。 改为 _iter.get('id', '')(dict 取值),与其他调用方一致。 --- pipeline_service/agent_loop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pipeline_service/agent_loop.py b/pipeline_service/agent_loop.py index 3a09ad1..a36c3fd 100644 --- a/pipeline_service/agent_loop.py +++ b/pipeline_service/agent_loop.py @@ -1230,7 +1230,7 @@ async def role_agent_run(project_id, role, agent_id=None, model_name=None): _iter = None capability_ctx = { "project_id": project_id, - "iteration_id": getattr(_iter, 'id', '') if _iter else '', + "iteration_id": _iter.get('id', '') if _iter else '', "who": role, "agent_id": agent_id, }