fix(file-summary): 同步压缩包工作流状态与结果刷新

This commit is contained in:
2026-06-06 19:45:49 +08:00
parent daa0642142
commit 7e561ea213
12 changed files with 560 additions and 32 deletions

View File

@@ -5,7 +5,7 @@ from pathlib import Path
from django.http import FileResponse, Http404, JsonResponse
from django.views.decorators.http import require_http_methods
from review_agent.models import Conversation, ExportedSummaryFile, FileAttachment
from review_agent.models import Conversation, ExportedSummaryFile, FileAttachment, Message
from review_agent.models import FileSummaryBatch, WorkflowEvent
from .events import serialize_event
@@ -90,6 +90,47 @@ def attachment_detail(request, conversation_id: int, attachment_id: int):
return JsonResponse({"ok": True, "attachment": serialize_attachment(attachment)})
def _serialize_message(message: Message) -> dict[str, object]:
return {
"id": message.pk,
"role": message.role,
"content": message.content,
"created_at": message.created_at.isoformat(),
}
@require_http_methods(["GET"])
@login_required
def conversation_messages(request, conversation_id: int):
conversation = _conversation_for_user(request.user, conversation_id)
after = request.GET.get("after") or "0"
try:
after_id = int(after)
except ValueError:
after_id = 0
messages = list(conversation.messages.filter(pk__gt=after_id).order_by("id"))
latest_message_id = (
conversation.messages.order_by("-id").values_list("id", flat=True).first() or 0
)
logger.info(
"Conversation incremental messages requested",
extra={
"conversation_id": conversation.pk,
"after_id": after_id,
"message_count": len(messages),
"latest_message_id": latest_message_id,
},
)
return JsonResponse(
{
"conversation_id": conversation.pk,
"latest_message_id": latest_message_id,
"messages": [_serialize_message(message) for message in messages],
}
)
@require_http_methods(["GET"])
@login_required
def batch_status(request, batch_id: int):
@@ -107,6 +148,7 @@ def batch_status(request, batch_id: int):
"success_files": batch.success_files,
"failed_files": batch.failed_files,
"total_pages": batch.total_pages,
"error_message": batch.error_message,
},
"nodes": [
{