feat: complete customer service safety and handover flow
This commit is contained in:
@@ -12,6 +12,7 @@ from app.core.contracts import (
|
||||
)
|
||||
from app.core.errors import ForbiddenAgentError, RecoverableAgentError
|
||||
from app.service.agent.base import BaseAgent
|
||||
from app.service.agent.customer_service_agent import CustomerServiceAgent
|
||||
from app.service.agent.factory import AgentFactory
|
||||
from app.service.agent.governance import review_output
|
||||
|
||||
@@ -53,6 +54,29 @@ async def test_visitor_does_not_recall_customer_memory() -> None:
|
||||
assert agent.memories == ()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_authenticated_customer_service_does_not_recall_customer_memory() -> None:
|
||||
"""客服即使面对已登录用户,也不得触发通用长期或画像记忆读取。"""
|
||||
class FailingGovernance:
|
||||
async def recall(self, context):
|
||||
raise AssertionError("customer service memory recall is forbidden")
|
||||
|
||||
agent = CustomerServiceAgent()
|
||||
agent.bind_governance(FailingGovernance())
|
||||
request = AgentRequest(
|
||||
agent_type="customer_service", message="查询我的持仓", session_id="customer-session",
|
||||
idempotency_key="customer-memory-request-0001",
|
||||
)
|
||||
context = RequestContext(
|
||||
user_id="1", trace_id="customer-trace", roles=("customer",),
|
||||
permissions=("agent:run",), data_scope="self",
|
||||
)
|
||||
|
||||
await agent.recall_memory(request, context)
|
||||
|
||||
assert agent.memories == ()
|
||||
|
||||
|
||||
async def test_resolve_recall_handle_review_order_and_snapshot(governance):
|
||||
calls = []
|
||||
config = ResolvedAgentConfig(config_version="released", prompt_version="p", model_endpoint="m")
|
||||
|
||||
Reference in New Issue
Block a user