"""Storage key conventions for MinIO and local working paths.""" from __future__ import annotations import uuid from pathlib import Path from app.config import settings def work_dir_for(document_id: uuid.UUID | str) -> Path: p = Path(settings.app_work_dir) / str(document_id) p.mkdir(parents=True, exist_ok=True) return p def key_original_pdf(document_id: uuid.UUID | str, sha256: str) -> str: return f"docs/{document_id}/original/{sha256}.pdf" def key_ocr_pdf(document_id: uuid.UUID | str) -> str: return f"docs/{document_id}/ocr/ocr.pdf" def key_docling_json(document_id: uuid.UUID | str) -> str: return f"docs/{document_id}/docling/document.json" def key_markdown(document_id: uuid.UUID | str) -> str: return f"docs/{document_id}/docling/document.md" def key_page_image(document_id: uuid.UUID | str, page_number: int) -> str: return f"docs/{document_id}/pages/p{page_number:05d}.png" def key_figure_crop(document_id: uuid.UUID | str, page_number: int, figure_index: int) -> str: return f"docs/{document_id}/figures/p{page_number:05d}_f{figure_index:03d}.png" def key_table_json(document_id: uuid.UUID | str, table_index: int) -> str: return f"docs/{document_id}/tables/t{table_index:04d}.json"