fix(file-summary): 同步压缩包工作流状态与结果刷新
This commit is contained in:
@@ -2,7 +2,14 @@ from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.urls import reverse
|
||||
import pytest
|
||||
|
||||
from review_agent.models import Conversation, ExportedSummaryFile, FileAttachment, FileSummaryBatch
|
||||
from review_agent.models import (
|
||||
Conversation,
|
||||
ExportedSummaryFile,
|
||||
FileAttachment,
|
||||
FileSummaryBatch,
|
||||
Message,
|
||||
WorkflowNodeRun,
|
||||
)
|
||||
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
@@ -99,3 +106,68 @@ def test_export_download_requires_batch_owner(client, tmp_path, django_user_mode
|
||||
assert "attachment" in allowed["Content-Disposition"]
|
||||
assert "summary.md" in allowed["Content-Disposition"]
|
||||
assert allowed["Content-Type"].startswith("text/markdown")
|
||||
|
||||
|
||||
def test_conversation_messages_returns_incremental_messages(client, django_user_model):
|
||||
owner = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
other = django_user_model.objects.create_user(username="other", password="pass")
|
||||
conversation = Conversation.objects.create(user=owner, title="会话")
|
||||
first = Message.objects.create(
|
||||
conversation=conversation,
|
||||
role=Message.Role.USER,
|
||||
content="用户消息",
|
||||
)
|
||||
second = Message.objects.create(
|
||||
conversation=conversation,
|
||||
role=Message.Role.ASSISTANT,
|
||||
content="报告消息",
|
||||
)
|
||||
|
||||
client.force_login(other)
|
||||
denied = client.get(reverse("review_agent_conversation_messages", args=[conversation.pk]))
|
||||
assert denied.status_code == 404
|
||||
|
||||
client.force_login(owner)
|
||||
response = client.get(
|
||||
f"{reverse('review_agent_conversation_messages', args=[conversation.pk])}?after={first.pk}"
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
payload = response.json()
|
||||
assert payload["latest_message_id"] == second.pk
|
||||
assert payload["messages"] == [
|
||||
{
|
||||
"id": second.pk,
|
||||
"role": Message.Role.ASSISTANT,
|
||||
"content": "报告消息",
|
||||
"created_at": second.created_at.isoformat(),
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
def test_batch_status_exposes_batch_and_node_errors(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(username="owner", password="pass")
|
||||
conversation = Conversation.objects.create(user=user, title="会话")
|
||||
batch = FileSummaryBatch.objects.create(
|
||||
conversation=conversation,
|
||||
user=user,
|
||||
batch_no="FS-ERR",
|
||||
status=FileSummaryBatch.Status.FAILED,
|
||||
error_message="压缩包解压失败",
|
||||
)
|
||||
WorkflowNodeRun.objects.create(
|
||||
batch=batch,
|
||||
node_code="extract",
|
||||
node_name="压缩包解压",
|
||||
status=WorkflowNodeRun.Status.FAILED,
|
||||
progress=10,
|
||||
message="未解出任何可扫描文件",
|
||||
)
|
||||
client.force_login(user)
|
||||
|
||||
response = client.get(reverse("file_summary_batch_status", args=[batch.pk]))
|
||||
|
||||
assert response.status_code == 200
|
||||
payload = response.json()
|
||||
assert payload["batch"]["error_message"] == "压缩包解压失败"
|
||||
assert payload["nodes"][0]["message"] == "未解出任何可扫描文件"
|
||||
|
||||
Reference in New Issue
Block a user