feat(file-summary): 生成汇总报告和导出下载
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.http import Http404, JsonResponse
|
||||
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, FileAttachment
|
||||
from review_agent.models import Conversation, ExportedSummaryFile, FileAttachment
|
||||
from review_agent.models import FileSummaryBatch, WorkflowEvent
|
||||
from .events import serialize_event
|
||||
|
||||
@@ -105,3 +107,18 @@ def batch_events(request, batch_id: int):
|
||||
after_id = 0
|
||||
events = WorkflowEvent.objects.filter(batch=batch, pk__gt=after_id).order_by("id")
|
||||
return JsonResponse({"events": [serialize_event(event) for event in events]})
|
||||
|
||||
|
||||
@require_http_methods(["GET"])
|
||||
@login_required
|
||||
def export_download(request, export_id: int):
|
||||
exported = ExportedSummaryFile.objects.filter(
|
||||
pk=export_id,
|
||||
batch__user=request.user,
|
||||
).first()
|
||||
if not exported:
|
||||
raise Http404("导出文件不存在。")
|
||||
path = Path(exported.storage_path)
|
||||
if not path.exists():
|
||||
return JsonResponse({"error": "文件不存在。"}, status=404)
|
||||
return FileResponse(path.open("rb"), as_attachment=True, filename=exported.file_name)
|
||||
|
||||
Reference in New Issue
Block a user