提交 82c6f778 authored 作者: 陈泽健's avatar 陈泽健

fix(element-locate): 修复批量定位数据库更新问题,延长超时时间

- 增加批量定位超时时间从 90s 到 300s(5分钟)
- 每个 SSH + Claude CLI 调用约需 15-20 秒,8 步骤需 2-3 分钟
- 修复数据库更新:直接使用 SQLAlchemy update 语句绕过 schema 校验
- 确保 locatorType/locatorValue/selector 三个字段都正确保存
Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 fbb895f8
......@@ -530,7 +530,7 @@ async def locate_batch(request: BatchLocateRequest):
worker_thread = threading.Thread(target=_batch_worker, daemon=True)
worker_thread.start()
worker_thread.join(timeout=90)
worker_thread.join(timeout=300) # 5 minutes for batch locate (each step needs SSH + Claude CLI)
if worker_thread.is_alive():
return BatchLocateResponse(success=False, case_id=request.case_id, total_steps=len(steps), located_steps=0, results=[], message="批量定位超时")
......@@ -538,9 +538,15 @@ async def locate_batch(request: BatchLocateRequest):
# 如果定位成功,更新数据库中的用例步骤
if result_container['success'] and result_container['located_steps'] > 0:
try:
# 直接更新数据库中的 steps 字段,绕过 schema 校验
from app.database import async_session_maker
from app.models.test_case import TestCase
from sqlalchemy import update as sql_update
async with async_session_maker() as session:
case_service = CaseService(session)
await case_service.update(request.case_id, {'steps': updated_steps})
stmt = sql_update(TestCase).where(TestCase.id == request.case_id).values(steps=updated_steps)
await session.execute(stmt)
await session.commit()
logger.info(f"用例 {request.case_id} 步骤已更新到数据库")
except Exception as e:
logger.warning(f"更新数据库失败: {e}")
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论