From 2fb08c50d6cf6e512f6fee4f6cdb1a58b7e13939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E6=99=93=E5=AE=8F?= <343716322@qq.com> Date: Mon, 18 May 2026 16:46:43 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=97=A5=E5=BF=97DEBUG=E6=89=93=E5=8D=B0?= =?UTF-8?q?=EF=BC=8C=E6=96=B9=E4=BE=BF=E9=97=AE=E9=A2=98=E6=8E=92=E6=9F=A5?= =?UTF-8?q?=E5=AE=9A=E4=BD=8D=202.=20=E4=BF=AE=E5=A4=8D=EF=BC=9A=E4=B8=BA?= =?UTF-8?q?=20=5Ffeishu=5Fuser=5Fsearch=20=E6=B7=BB=E5=8A=A0=20tenant=5Fid?= =?UTF-8?q?=20=E8=BF=87=E6=BB=A4=EF=BC=8C=E9=98=B2=E6=AD=A2=E8=B7=A8?= =?UTF-8?q?=E7=A7=9F=E6=88=B7=E7=94=A8=E6=88=B7=20ID=20=E6=B3=84=E9=9C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/services/agent_tools.py | 22 +++++++++++++++++----- backend/app/services/feishu_service.py | 15 ++++++++++++++- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/backend/app/services/agent_tools.py b/backend/app/services/agent_tools.py index f17d90869..d0a70c8d2 100644 --- a/backend/app/services/agent_tools.py +++ b/backend/app/services/agent_tools.py @@ -10470,10 +10470,16 @@ def _matches(u: dict) -> bool: from app.database import async_session as _async_session from sqlalchemy import select as _sa_select from app.models.org import OrgMember as _OrgMember + from app.models.agent import Agent as _AgentModel async with _async_session() as _db: - _r = await _db.execute( - _sa_select(_OrgMember).where(_OrgMember.name.ilike(f"%{name}%")) + _agent_tenant_id = await _db.execute( + _sa_select(_AgentModel.tenant_id).where(_AgentModel.id == agent_id) ) + _tid = _agent_tenant_id.scalar_one_or_none() + _query = _sa_select(_OrgMember).where(_OrgMember.name.ilike(f"%{name}%")) + if _tid: + _query = _query.where(_OrgMember.tenant_id == _tid) + _r = await _db.execute(_query) _org_members = _r.scalars().all() if _org_members: lines = [f"🔍 从通讯录找到 {len(_org_members)} 位匹配「{name}」的用户:\n"] @@ -10496,10 +10502,16 @@ def _matches(u: dict) -> bool: from app.database import async_session as _async_session from sqlalchemy import select as _sa_select from app.models.user import User as _User + from app.models.agent import Agent as _AgentModel2 async with _async_session() as _db: - _r = await _db.execute( - _sa_select(_User).where(_User.display_name.ilike(f"%{name}%")) - ) + _agent_tenant_id2 = await _db.execute( + _sa_select(_AgentModel2.tenant_id).where(_AgentModel2.id == agent_id) + ) + _tid2 = _agent_tenant_id2.scalar_one_or_none() + _query2 = _sa_select(_User).where(_User.display_name.ilike(f"%{name}%")) + if _tid2: + _query2 = _query2.where(_User.tenant_id == _tid2) + _r = await _db.execute(_query2) _platform_users = _r.scalars().all() for _pu in _platform_users: _uid = getattr(_pu, "feishu_user_id", None) diff --git a/backend/app/services/feishu_service.py b/backend/app/services/feishu_service.py index 9203e07d9..5e4aa0928 100644 --- a/backend/app/services/feishu_service.py +++ b/backend/app/services/feishu_service.py @@ -558,12 +558,18 @@ async def upload_and_send_file(self, app_id: str, app_secret: str, # Send text accompany message first if provided if accompany_msg: - await client.post( + text_resp = await client.post( f"{FEISHU_SEND_MSG_URL}?receive_id_type={receive_id_type}", json={"receive_id": receive_id, "msg_type": "text", "content": _json.dumps({"text": accompany_msg})}, headers=headers, ) + if text_resp.status_code != 200: + logger.error( + f"[Feishu] Failed to send text accompany message: " + f"status={text_resp.status_code}, body={text_resp.text}, " + f"receive_id={receive_id}, receive_id_type={receive_id_type}" + ) # Send file message resp = await client.post( @@ -572,6 +578,13 @@ async def upload_and_send_file(self, app_id: str, app_secret: str, "content": _json.dumps({"file_key": file_key})}, headers=headers, ) + if resp.status_code != 200: + logger.error( + f"[Feishu] Failed to send file message: " + f"status={resp.status_code}, body={resp.text}, " + f"receive_id={receive_id}, receive_id_type={receive_id_type}, " + f"file_key={file_key}" + ) return resp.json() # --- Bitable (多维表格) API ---