feat: unify import flows and harden sqlite fallback
Some checks failed
StoryForge CI / Baseline checks (push) Has been cancelled
StoryForge CI / Backend tests (push) Has been cancelled
StoryForge CI / Web tests (push) Has been cancelled

This commit is contained in:
kris
2026-04-05 08:02:20 +08:00
parent 696f90b3fe
commit 78d90542cc
6 changed files with 328 additions and 107 deletions

View File

@@ -1163,7 +1163,82 @@ class MainAgentGovernanceTests(unittest.TestCase):
self.assertEqual(captured_request["video_provider"], "seedance2")
self.assertEqual(captured_request["video_model"], "seedance-2.0-pro")
self.assertEqual(payload["payload"]["job"]["artifacts"]["video_provider"], "seedance2")
self.assertEqual(payload["payload"]["job"]["artifacts"]["video_model"], "seedance-2.0-pro")
def test_import_video_link_and_text_actions_execute_through_oneliner(self) -> None:
self._insert_assistant()
captured_video_request: dict[str, Any] = {}
captured_text_request: dict[str, Any] = {}
async def fake_video_link_job(request: Any, account: dict[str, Any]) -> dict[str, Any]:
captured_video_request.update(
{
"project_id": request.project_id,
"knowledge_base_id": request.knowledge_base_id,
"assistant_id": request.assistant_id,
"title": request.title,
"video_url": request.video_url,
"language": request.language,
}
)
return {"id": "job_video_link_direct", "title": request.title or "视频链接分析任务"}
async def fake_text_job(request: Any, account: dict[str, Any]) -> dict[str, Any]:
captured_text_request.update(
{
"project_id": request.project_id,
"knowledge_base_id": request.knowledge_base_id,
"assistant_id": request.assistant_id,
"title": request.title,
"content": request.content,
}
)
return {"id": "job_text_direct", "title": request.title}
with patch.object(self.core, "create_video_link_job", new=AsyncMock(side_effect=fake_video_link_job)):
video_response = self.client.post(
"/v2/oneliner/actions/execute",
headers=self.ctx["member_headers"],
json={
"action_key": "import-video-link",
"project_id": self.ctx["project_id"],
"platform": "douyin",
"payload": {
"title": "短视频链接导入",
"video_url": "https://example.com/video/123",
"assistant_id": "asst_member_default",
"language": "zh-CN",
},
},
)
self.assertEqual(video_response.status_code, 200, video_response.text)
video_payload = video_response.json()
self.assertEqual(captured_video_request["video_url"], "https://example.com/video/123")
self.assertEqual(captured_video_request["assistant_id"], "asst_member_default")
self.assertEqual(video_payload["recommended_action"]["action"], "open-job-detail")
self.assertEqual(video_payload["recommended_action"]["job_id"], "job_video_link_direct")
with patch.object(self.core, "create_text_job", new=AsyncMock(side_effect=fake_text_job)):
text_response = self.client.post(
"/v2/oneliner/actions/execute",
headers=self.ctx["member_headers"],
json={
"action_key": "import-text",
"project_id": self.ctx["project_id"],
"platform": "douyin",
"payload": {
"title": "文本导入",
"content": "这是一段需要分析的文本。",
"assistant_id": "asst_member_default",
},
},
)
self.assertEqual(text_response.status_code, 200, text_response.text)
text_payload = text_response.json()
self.assertEqual(captured_text_request["title"], "文本导入")
self.assertEqual(captured_text_request["assistant_id"], "asst_member_default")
self.assertEqual(text_payload["recommended_action"]["action"], "open-job-detail")
self.assertEqual(text_payload["recommended_action"]["job_id"], "job_text_direct")
def test_direct_oneliner_actions_execute_real_account_and_agent_flows(self) -> None:
source_id = self._insert_content_source_account(