fix(file-summary): 同步压缩包工作流状态与结果刷新
This commit is contained in:
@@ -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": [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user