feat: adapt advisor agent to qyqy base

This commit is contained in:
Windows
2026-09-11 11:49:11 +08:00
parent 7ceeaff057
commit 5e8eecc288
5 changed files with 50 additions and 0 deletions
+5
View File
@@ -12,6 +12,7 @@ from app.infrastructure.memory_cache import MemoryCacheAdapter
from app.infrastructure.vector_memory import VectorMemoryAdapter
from app.service.agent.factory import AgentFactory
from app.service.agent.governance import PlatformGovernance
from app.service.agent.implementations.advisor import AdvisorAgent
from app.service.agent.implementations.fund_query_demo import FundQueryDemoAgent
from app.service.fund_quote_service import query_fund_quote_tool
from app.service.intent_classifier import IntentClassifier
@@ -172,3 +173,7 @@ def register_business_agents(factory: AgentFactory) -> None:
FundQueryDemoAgent.definition,
lambda _context: FundQueryDemoAgent(FundQueryDemoAgent.definition),
)
factory.register(
AdvisorAgent.definition,
lambda _context: AdvisorAgent(AdvisorAgent.definition),
)
@@ -0,0 +1,21 @@
"""投顾 Agent 的迁移骨架。
当前阶段只接入新底座已有的场内基金行情只读能力;后续业务模块会按迁移 TODO
逐项扩展 definition、工具白名单和处理逻辑。
"""
from app.core.contracts import AgentDefinition
from app.service.agent.implementations.fund_query_demo import FundQueryDemoAgent
class AdvisorAgent(FundQueryDemoAgent):
"""通过公共 BaseAgent 链路运行的最小投顾 Agent。"""
definition = AgentDefinition(
agent_type="advisor",
version="0.1.0",
allowed_roles=("customer", "advisor", "operator", "admin"),
allowed_portals=("api",),
allowed_tools=("query_fund_quote",),
supported_intents=("fund_quote",),
)
+1
View File
@@ -28,6 +28,7 @@ dependencies = [
dev = [
"pytest>=8.3,<9",
"pytest-asyncio>=0.25,<1",
"aiosqlite>=0.20,<1",
"ruff>=0.9,<1",
"mypy>=1.14,<2",
]
+1
View File
@@ -17,5 +17,6 @@ httpx>=0.28,<1
# Development and test dependencies
pytest>=8.3,<9
pytest-asyncio>=0.25,<1
aiosqlite>=0.20,<1
ruff>=0.9,<1
mypy>=1.14,<2
@@ -0,0 +1,22 @@
from app.core.contracts import RequestContext
from app.service.agent.base import BaseAgent
from app.service.agent.bootstrap import get_agent_factory
from app.service.agent.implementations.advisor import AdvisorAgent
def test_advisor_is_registered_through_the_new_base_factory() -> None:
factory = get_agent_factory()
definition = factory.definition("advisor")
context = RequestContext(
user_id="1",
trace_id="advisor-base-adapter",
roles=("customer",),
permissions=("agent:run",),
)
agent = factory.create("advisor", context)
assert isinstance(agent, BaseAgent)
assert isinstance(agent, AdvisorAgent)
assert agent.definition == definition
assert definition.allowed_tools == ("query_fund_quote",)
assert definition.supported_intents == ("fund_quote",)