fix(application-form-fill): 新附件先汇总再填表
This commit is contained in:
@@ -10,7 +10,7 @@ from django.utils import timezone
|
||||
from .file_summary.skills.attachment_reader import AttachmentReaderSkill
|
||||
from .file_summary.workflow import create_file_summary_batch, start_file_summary_workflow
|
||||
from .llm import LLMConfigurationError, LLMRequestError, generate_reply, stream_reply
|
||||
from .models import Conversation, FileAttachment, FileSummaryBatch, Message
|
||||
from .models import Conversation, FileAttachment, FileSummaryBatch, FileSummaryBatchAttachment, Message
|
||||
from .application_form_fill.workflow import (
|
||||
create_application_form_fill_batch,
|
||||
find_latest_successful_summary_batch as find_latest_successful_form_fill_summary_batch,
|
||||
@@ -231,6 +231,8 @@ def stream_message(conversation: Conversation, content: str):
|
||||
|
||||
if route.starts_application_form_fill:
|
||||
source_summary_batch = find_latest_successful_form_fill_summary_batch(conversation)
|
||||
if source_summary_batch and not _summary_covers_active_attachments(conversation, source_summary_batch):
|
||||
source_summary_batch = None
|
||||
if not source_summary_batch:
|
||||
if not _has_active_attachments(conversation):
|
||||
reply_content = "请先在当前对话右侧上传需要填表的产品资料或压缩包,我会先自动汇总再继续生成申报模板。"
|
||||
@@ -480,6 +482,20 @@ def _has_active_attachments(conversation: Conversation) -> bool:
|
||||
)
|
||||
|
||||
|
||||
def _summary_covers_active_attachments(conversation: Conversation, batch: FileSummaryBatch) -> bool:
|
||||
active_ids = set(
|
||||
FileAttachment.objects.filter(conversation=conversation, is_active=True)
|
||||
.exclude(upload_status=FileAttachment.UploadStatus.DELETED)
|
||||
.values_list("id", flat=True)
|
||||
)
|
||||
if not active_ids:
|
||||
return True
|
||||
bound_ids = set(
|
||||
FileSummaryBatchAttachment.objects.filter(batch=batch).values_list("attachment_id", flat=True)
|
||||
)
|
||||
return active_ids.issubset(bound_ids)
|
||||
|
||||
|
||||
def _format_attachment_reader_reply(attachments: list[dict[str, object]], message: str) -> str:
|
||||
if not attachments:
|
||||
return message or "当前对话没有可读取的附件。"
|
||||
|
||||
Reference in New Issue
Block a user