Repository navigation
DocIr UX harvest from papermerge-core: page identity, field schema - #283
AdaWorldAPI wants to merge 1 commit into
Conversation
…hema Extracted the UX-facing (not infra) architectural lessons from papermerge/papermerge-core (the real source; ciur/papermerge is a now-empty meta-repo) for ogar-doc-ir specifically, per the operator's explicit scope: page-level editing as a first-class capability (pages have no independent identity today, addressed only by Vec position), and document-type/custom-field schema. Deliberately excludes the infra-shaped findings from the same research (search-as-projection, folder+permission design, dead checksum columns, the Celery boundary) as archive-layer-not-doc-ir concerns. Findings are expressed as concrete Rust type sketches against the crate's actual current shape (DocPage/TypedField), not paraphrase of the Python source. Citations verified against papermerge-core commit 4a69d097 (FastAPI + SQLAlchemy 2.0 async + Alembic + Celery/Redis + PostgreSQL, confirmed from pyproject.toml). Written against a stale ogar-doc-ir/DISCOVERY-MAP.md snapshot; synced to origin/main (which had just landed the document_actions.rs W4 council ruling) before finalizing, and corrected every reference this surfaced: no separate ogar-doc crate exists, persistence ActionDefs live in ogar-vocab::document_actions with the executor in tesseract-paperless/paperless-kv; two struct citations re-verified against the post-sync line numbers.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_a9eb7579-2f42-42e1-ad69-3cfc3d8fdc1d) |
|
Closing — wrong layer. Re-doing it in the right repo, aimed at usability rather than data-model archaeology. Generated by Claude Code |
Summary
papermerge/papermerge-core(the real source —ciur/papermergeis a now-empty meta-repo, worth knowing if anyone else goes looking) for UX-facing architectural lessons applicable toogar-doc-ir, scoped deliberately to exclude infra concerns (search indexing, folders/permissions, the task-queue boundary — those are archive-layer, not this crate's).docs/DOCIR-UX-HARVEST.md: two proposals, each adoc.v2-scale design sketch (not a live code change) —DocPagetoday is addressed only byVecposition, no stable id. Papermerge's actual mechanism (real citations, not README paraphrase): a structural page edit mints a whole new document version and copies forward unaffected pages' already-recognized content by explicit old-id→new-id mapping, never re-running OCR. ProposesPageId+PageOp+CarriedForward.FieldKind/FieldSchema/DocumentType, mirroring papermerge's converged "one JSONB value + typed generated columns" design for custom fields, to validate a document'sTypedFields against an expected schema.D-DOCIR-UX-HARVESTentry todocs/DISCOVERY-MAP.md.origin/mainhad just landed thedocument_actions.rsW4 council ruling (no separateogar-doccrate — persistenceActionDefs live inogar-vocab::document_actions, executed bytesseract-paperless/paperless-kv). Synced tomainfirst, then corrected every reference in the new doc that assumed a nonexistentogar-doccrate, and re-verified the two struct-citation line numbers against the post-sync file.Test plan
papermerge-coresource (file:line), not the READMEogar-doc-ircitation re-verified against the current (post-sync)lib.rsline numbers`ogar-doc`crate references remain after the sync-driven correctiondocs/DISCOVERY-MAP.mddiff reviewed — purely additive, one entry appended at the true tail, upstream's own new content intact🤖 Generated with Claude Code
Generated by Claude Code