feat: 完善模板对比持久化与附件版本处理

This commit is contained in:
wren
2026-05-20 10:55:28 +08:00
parent 7c6f134808
commit a2c2bf1969
14 changed files with 1701 additions and 77 deletions
@@ -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,