fix(agent): bind channel admin identity (#6294)

This commit is contained in:
InfinityPacer
2026-08-13 14:53:59 +08:00
committed by GitHub
parent eeec40cce3
commit 3aed078bbb
19 changed files with 752 additions and 74 deletions
+34
View File
@@ -631,6 +631,7 @@ async def test_cached_agent_clears_channel_for_background_task() -> None:
channel="Telegram",
source="telegram-test",
username="admin",
is_channel_admin=True,
original_chat_id="chat-123",
)
agent.process = AsyncMock(return_value="完成")
@@ -652,9 +653,42 @@ async def test_cached_agent_clears_channel_for_background_task() -> None:
assert result == "完成"
assert agent.channel is None
assert agent.source is None
assert agent.is_channel_admin is None
assert agent.original_chat_id is None
@pytest.mark.anyio
async def test_cached_agent_overwrites_channel_admin_with_explicit_false() -> None:
"""复用会话 Agent 时,明确非管理员结论必须覆盖上一轮管理员身份。"""
manager = AgentManager()
agent = MoviePilotAgent(
session_id="channel-admin-cached-session",
user_id="user-1",
channel="Telegram",
source="telegram-test",
username="admin",
is_channel_admin=True,
)
agent.process = AsyncMock(return_value="完成")
manager.active_agents[agent.session_id] = agent
task = _MessageTask(
session_id=agent.session_id,
user_id="user-2",
message="执行普通用户请求",
channel="Telegram",
source="telegram-test",
username="admin",
is_channel_admin=False,
)
result = await manager._process_message_internal(task)
assert result == "完成"
assert agent.user_id == "user-2"
assert agent.username == "admin"
assert agent.is_channel_admin is False
@pytest.mark.anyio
async def test_background_agent_final_message_is_broadcast() -> None:
"""后台 Agent 的最终消息应清空渠道及渠道用户定位后广播。"""