feat: add bulk download, cloud OCR, and basic OCR quality filter

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-01 13:38:42 +00:00
parent e8ed375bba
commit 705b970522
5 changed files with 595 additions and 0 deletions
+11
View File
@@ -34,6 +34,7 @@ def files_page(
date_to: Optional[str] = Query(None),
storage_provider: Optional[str] = Query(None),
tags: Optional[str] = Query(None),
ocr_quality: Optional[str] = Query(None),
):
"""
Return the 'files.html' template with server-side pagination, sorting, and filtering
@@ -94,6 +95,15 @@ def files_page(
escaped_tag = tag.replace("%", r"\%").replace("_", r"\_")
query = query.filter(FileRecord.ai_metadata.ilike(f"%{escaped_tag}%"))
# Apply OCR quality filter
if ocr_quality == "no_ocr":
query = query.filter((FileRecord.ocr_text.is_(None)) | (FileRecord.ocr_text == ""))
elif ocr_quality == "has_ocr":
query = query.filter(
FileRecord.ocr_text.isnot(None),
FileRecord.ocr_text != "",
)
# Apply status filter (before pagination for correct counts)
query = apply_status_filter(query, db, status)
@@ -158,6 +168,7 @@ def files_page(
"date_to": date_to or "",
"storage_provider": storage_provider or "",
"tags": tags or "",
"ocr_quality": ocr_quality or "",
"mime_types": mime_types,
"upload_concurrency": settings.upload_concurrency,
"upload_queue_delay_ms": settings.upload_queue_delay_ms,