Per-page join row keyed by (file_uuid, page_number).
Rows reference the file (cascade on file hard delete) and the
phoenix_kit_cat_pdf_page_contents cache by content_hash.
No text column here — the actual page text lives in the dedup
cache. To read page text, join to :content.
No updated_at — pages are write-once; re-extraction means
deleting and re-inserting (or hard-deleting the file and
re-uploading).