feat: 完善模板对比持久化与附件版本处理
This commit is contained in:
@@ -532,19 +532,41 @@ async def _load_run_context(run_id: int) -> dict[str, Any]:
|
||||
if not document_file:
|
||||
raise ValueError(f"未找到 document_file_id={run.documentFileId} 对应的文件记录")
|
||||
|
||||
resolver = FileSourceResolver()
|
||||
payload = await resolver.ResolvePayload(document_file)
|
||||
attachmentResult = await session.execute(
|
||||
mergedPdfResult = await session.execute(
|
||||
select(LeauditDocumentFile)
|
||||
.where(
|
||||
LeauditDocumentFile.documentId == document.Id,
|
||||
LeauditDocumentFile.isActive.is_(True),
|
||||
LeauditDocumentFile.fileRole == "attachment",
|
||||
LeauditDocumentFile.fileRole == "merged_pdf",
|
||||
)
|
||||
.order_by(LeauditDocumentFile.Id.asc())
|
||||
.order_by(LeauditDocumentFile.Id.desc())
|
||||
.limit(1)
|
||||
)
|
||||
attachmentFiles = list(attachmentResult.scalars().all())
|
||||
attachmentPayloads = await resolver.ResolvePayloads(attachmentFiles) if attachmentFiles else []
|
||||
mergedPdfFile = mergedPdfResult.scalar_one_or_none()
|
||||
effective_document_file = mergedPdfFile or document_file
|
||||
|
||||
resolver = FileSourceResolver()
|
||||
payload = await resolver.ResolvePayload(effective_document_file)
|
||||
attachmentFiles: list[LeauditDocumentFile] = []
|
||||
attachmentPayloads = []
|
||||
if mergedPdfFile is not None:
|
||||
attachmentFiles = []
|
||||
elif str(getattr(document_file, "fileRole", "") or "").lower() != "primary":
|
||||
attachmentFiles = []
|
||||
elif str(getattr(document_file, "fileExt", "") or "").lower() not in {"pdf", "docx"}:
|
||||
attachmentFiles = []
|
||||
else:
|
||||
attachmentResult = await session.execute(
|
||||
select(LeauditDocumentFile)
|
||||
.where(
|
||||
LeauditDocumentFile.documentId == document.Id,
|
||||
LeauditDocumentFile.isActive.is_(True),
|
||||
LeauditDocumentFile.fileRole == "attachment",
|
||||
)
|
||||
.order_by(LeauditDocumentFile.Id.asc())
|
||||
)
|
||||
attachmentFiles = list(attachmentResult.scalars().all())
|
||||
attachmentPayloads = await resolver.ResolvePayloads(attachmentFiles) if attachmentFiles else []
|
||||
|
||||
return {
|
||||
"document_id": document.Id,
|
||||
|
||||
Reference in New Issue
Block a user