feat:投顾agent接入nl2sql能力

This commit is contained in:
2026-09-13 18:24:44 +08:00
parent 43330042b8
commit 3f5fc1b9f0
13 changed files with 339 additions and 4 deletions
+13
View File
@@ -188,6 +188,19 @@ class AdvisorAgentClient:
trace_id=trace_id, json={"customer_id": customer_id, "scene_type": scene_type},
)
async def data_query(
self,
payload: dict,
*,
auth_header: str,
trace_id: str,
) -> dict:
"""代理当前投顾选中客户的数据查询,不向工作台暴露 SQL。"""
return await self._request(
"POST", "/data-query", auth_header=auth_header,
trace_id=trace_id, json=payload,
)
_client: AdvisorAgentClient | None = None
+32
View File
@@ -0,0 +1,32 @@
"""工作台到投顾 Agent 的客户数据查询代理。"""
from __future__ import annotations
from sqlalchemy.ext.asyncio import AsyncSession
from model.sys_user import SysUser
from schemas.advisor import AdvisorDataQueryReq
from service.advisor.agent_client import get_agent_client
from service.advisor.permissions import ensure_customer_owned
async def query_customer_data(
db: AsyncSession,
user: SysUser,
*,
auth_header: str,
trace_id: str,
req: AdvisorDataQueryReq,
) -> dict:
"""先做工作台归属校验,再透传到 Agent;customer_id 不由 Agent 客户端覆盖。"""
await ensure_customer_owned(db, user.id, req.customer_id)
payload = req.model_dump(exclude_none=True)
result = await get_agent_client().data_query(
payload,
auth_header=auth_header,
trace_id=trace_id,
)
data = result["data"] or {}
data.pop("sql", None)
if result["warning"]:
data["warning"] = result["warning"]
return data