feat: advance main agent runs from homepage handoff

This commit is contained in:
kris
2026-03-29 18:37:57 +08:00
parent 30e37e5ce1
commit d4be3a2ce1
4 changed files with 229 additions and 9 deletions

View File

@@ -248,6 +248,48 @@ class MainAgentGovernanceTests(unittest.TestCase):
self.assertIn("run.confirmed", event_types)
self.assertTrue("run.queued" in event_types or "run.started" in event_types)
def test_running_agent_run_detail_advances_to_progress_and_done(self) -> None:
create = self.client.post(
"/v2/oneliner/runs",
headers=self.ctx["member_headers"],
json={
"project_id": self.ctx["project_id"],
"source_screen": "dashboard",
"source_action_key": "homepage-primary-action",
"title": "安排今日动作",
"summary": "让主 Agent 给出执行收口",
"intent_key": "custom",
"platform": "douyin",
"platform_scope": "single_platform",
"plan_request": {
"goal": "安排今日动作",
"steps": ["读取当前项目上下文", "给出执行建议", "输出下一步"],
},
},
)
self.assertEqual(create.status_code, 200, create.text)
run_id = create.json()["id"]
confirm = self.client.post(
f"/v2/oneliner/runs/{run_id}/confirm",
headers=self.ctx["member_headers"],
json={"reason": "user confirmed"},
)
self.assertEqual(confirm.status_code, 200, confirm.text)
detail = self.client.get(
f"/v2/oneliner/runs/{run_id}",
headers=self.ctx["member_headers"],
)
self.assertEqual(detail.status_code, 200, detail.text)
payload = detail.json()
self.assertEqual(payload["run_status"], "done")
self.assertTrue(payload["finished_at"])
self.assertEqual(payload["result"]["result_kind"], "main_agent_plan")
event_types = [item["event_type"] for item in payload["events"]]
self.assertIn("run.progress", event_types)
self.assertIn("run.done", event_types)
def test_effective_policy_merges_system_user_global_and_platform_layers(self) -> None:
system_response = self.client.put(
"/v2/admin/oneliner/governance/system/main-agent",