generated from john/python-template
V1 mostly complete except for some testing. Linting in the last step changed nearly every file which is why this commit is so larger.
This commit is contained in:
+32
-31
@@ -1,56 +1,57 @@
|
||||
## Document Transcription System
|
||||
## Document Transcription System (V1)
|
||||
|
||||
This project is a production application for transcribing and preserving historical family documents. It is intentionally designed for personal-scale use, with a simplicity-first architecture that is easy to operate and easy to extend.
|
||||
This project is a personal-scale application for transcribing and preserving historical family documents.
|
||||
|
||||
## Start Here
|
||||
|
||||
Read [architecture.md](architecture.md) first.
|
||||
|
||||
The architecture page is the primary technical reference and defines:
|
||||
The architecture page is the primary technical reference for:
|
||||
|
||||
- deployed topology and infrastructure limits
|
||||
- runtime topology and infrastructure assumptions
|
||||
- module boundaries and dependency flow
|
||||
- processing life cycle and data ownership
|
||||
- test strategy, risk controls, and extension path
|
||||
- processing lifecycle and data ownership
|
||||
- test strategy and extension path
|
||||
|
||||
## What The Application Does
|
||||
|
||||
At a high level, users upload images or PDFs as content sources for handwritten, typed, or typeset documents, run asynchronous transcription jobs, review optional revisions, and search across accepted text.
|
||||
At a high level, users upload images/PDFs, jobs are processed asynchronously, and users review original transcriptions plus optional revisions.
|
||||
|
||||
Core capabilities:
|
||||
Core V1 capabilities:
|
||||
|
||||
- document grouping with one or more content sources and metadata capture
|
||||
- asynchronous transcription with visible job status
|
||||
- immutable original transcription persisted with each job (plus provider/model/prompt metadata)
|
||||
- transcription prompt management with one Markdown file per prompt for human refinement over time
|
||||
- optional revisions for user-authored edits of original immutable transcription text
|
||||
- full-text search over accepted transcripts
|
||||
- export of transcript data
|
||||
- upload supported source files (`.jpg`, `.jpeg`, `.png`, `.tif`, `.tiff`, `.pdf`)
|
||||
- asynchronous job processing with visible status (`queued`, `processing`, `transcribed`, `failed`)
|
||||
- immutable original transcription stored on `Job.text`
|
||||
- optional single user-authored revision per source (`0..1`)
|
||||
- prompt artifacts stored as Markdown files in `prompts/`
|
||||
|
||||
## Production Operating Model
|
||||
## Current Operating Model (V1 Baseline)
|
||||
|
||||
The system runs with minimal operational overhead:
|
||||
- application service: FastAPI + NiceGUI
|
||||
- persistence baseline: SQLModel with SQLite
|
||||
- worker: in-process async background loop
|
||||
- deployment baseline: lightweight Docker Compose app runtime
|
||||
|
||||
- PostgreSQL in a dedicated Docker container is considered extremely lightweight and simple for this system
|
||||
- MongoDB in a dedicated Docker container is also considered extremely lightweight and simple for document-centric persistence
|
||||
- a three-container deployment (app, PostgreSQL, MongoDB) is a simple and acceptable baseline
|
||||
- no required queue or search-engine containers in the baseline setup
|
||||
|
||||
This operating model keeps deployment and maintenance simple while preserving clean boundaries for future scale.
|
||||
> Planned persistence evolution (PostgreSQL and optional MongoDB) belongs to V2 planning and is tracked separately.
|
||||
|
||||
## Documentation Map
|
||||
|
||||
- Architecture and technical design: [architecture.md](architecture.md)
|
||||
- Runtime and deployment requirements: [requirements.md](requirements.md)
|
||||
- V1 runtime and requirement baseline: [requirements.md](requirements.md)
|
||||
- Data model and constraints: [schema.md](schema.md)
|
||||
- Error handling policy and operational guidance: [error_handling.md](error_handling.md)
|
||||
- V1 requirement evidence matrix: [traceability_v1.md](traceability_v1.md)
|
||||
- Operations runbook: [runbook.md](runbook.md)
|
||||
- V1 migration and rollback guidance: [migration_v1.md](migration_v1.md)
|
||||
- V1 release checklist: [release_checklist_v1.md](release_checklist_v1.md)
|
||||
- Domain context and transcription policy: [intent.md](intent.md)
|
||||
- Transcription Methodology: [transcription_methodology.md](transcription_methodology.md)
|
||||
- Data model: [schema.md](schema.md)
|
||||
|
||||
|
||||
- Transcription methodology: [transcription_methodology.md](transcription_methodology.md)
|
||||
- V1 execution plan: [ver1/ver1.md](ver1/ver1.md)
|
||||
- V2 roadmap: [ver2/ver2.md](ver2/ver2.md)
|
||||
|
||||
## Glossary
|
||||
|
||||
- Document-oriented persistence: Storing data as flexible records instead of fixed relational rows.
|
||||
- Prompt artifact: A single Markdown file that defines one transcription prompt and is edited independently.
|
||||
- System of record: The authoritative persistent store for canonical data.
|
||||
- Prompt artifact: a Markdown file containing one transcription prompt.
|
||||
- Original transcription: immutable provider output stored on `Job.text`.
|
||||
- Revision: optional user-authored text linked to a `Source`.
|
||||
- System of record: the authoritative persistent store for canonical application data.
|
||||
|
||||
Reference in New Issue
Block a user