test: lock OCR phase5 role index contract

This commit is contained in:
Research Assistant 2026-06-05 12:11:51 +08:00
parent d25dd1857a
commit 4f6b250ca3
2 changed files with 52 additions and 0 deletions

View file

@ -543,3 +543,28 @@ def test_version_state_classifiable_from_meta_json(tmp_path: Path) -> None:
)
assert "raw_upgradable" in state
assert "derived_stale" in state
def test_postprocess_writes_role_index(tmp_path: Path) -> None:
import json
from paperforge.worker.ocr import postprocess_ocr_result
vault = tmp_path / "vault"
vault.mkdir()
(vault / "paperforge.json").write_text(
json.dumps({"vault_config": {"system_dir": "System", "resources_dir": "Resources"}}),
encoding="utf-8",
)
ocr_root = vault / "System" / "PaperForge" / "ocr"
ocr_root.mkdir(parents=True)
ocr_dir = ocr_root / "IDX001"
ocr_dir.mkdir()
(ocr_dir / "meta.json").write_text(
'{"zotero_key":"IDX001","ocr_status":"done","ocr_model":"PaddleOCR"}',
encoding="utf-8",
)
_, _, _, _ = postprocess_ocr_result(vault, "IDX001", [])
assert (ocr_dir / "index" / "role-index.json").exists()

27
tests/test_ocr_index.py Normal file
View file

@ -0,0 +1,27 @@
from __future__ import annotations
def test_role_index_separates_body_caption_table_metadata_reference() -> None:
from paperforge.worker.ocr_index import build_role_indexes
structured_blocks = [
{"paper_id": "KEY001", "page": 1, "block_id": "b1", "role": "body_paragraph", "text": "Methods body"},
{"paper_id": "KEY001", "page": 1, "block_id": "b2", "role": "figure_caption", "text": "Figure 1. Result"},
{"paper_id": "KEY001", "page": 1, "block_id": "b3", "role": "table_caption", "text": "Table 1. Data"},
{"paper_id": "KEY001", "page": 1, "block_id": "b4", "role": "reference_item", "text": "Smith et al. (2024)."},
]
resolved_metadata = {
"title": {"value": "Paper Title"},
"doi": {"value": "10.1000/xyz"},
}
indexes = build_role_indexes(
structured_blocks=structured_blocks,
resolved_metadata=resolved_metadata,
)
assert "body" in indexes
assert "captions" in indexes
assert "tables" in indexes
assert "metadata" in indexes
assert "references" in indexes