All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m19s
CI / OCR Service Tests (pull_request) Successful in 21s
CI / Backend Unit Tests (pull_request) Successful in 3m33s
CI / fail2ban Regex (pull_request) Successful in 43s
CI / Semgrep Security Scan (pull_request) Successful in 21s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m2s
CI / Unit & Component Tests (push) Successful in 3m24s
CI / OCR Service Tests (push) Successful in 20s
CI / Backend Unit Tests (push) Successful in 3m32s
CI / fail2ban Regex (push) Successful in 44s
CI / Semgrep Security Scan (push) Successful in 21s
CI / Compose Bucket Idempotency (push) Successful in 1m2s
nightly / deploy-staging (push) Successful in 3m47s
Mirror the useTranscriptionBlocks pattern: makeCsrfFetch(options.fetchImpl ?? fetch) wraps both the default and any injected fetch, so CSRF protection holds regardless of how the hook is constructed — defense-in-depth against a future caller injecting a bare fetch. Simplifies the CSRF test to assert on the injected path instead of stubbing global fetch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ocr (frontend)
UI for OCR job management, progress display, and sender-model training in the admin/enrichment panel.
What this domain owns
Components: OcrProgress.svelte, OcrTrigger.svelte, OcrTrainingCard.svelte, SegmentationTrainingCard.svelte, TrainingHistory.svelte.
Utilities: translateOcrProgress.ts (progress-state → display-string mapping), training.ts (training API helpers).
What this domain does NOT own
- OCR processing — all text recognition runs in the Python
ocr-service/container. The frontend shows job state; it does not run OCR. - Transcription block display — rendered by
document/transcription/components.
Key components
| Component | Used in | Notes |
|---|---|---|
OcrProgress.svelte |
document header, enrich panel | Progress bar and status label for an active OCR job |
OcrTrigger.svelte |
enrich panel, document detail | Button to start an OCR job; disabled when one is running |
OcrTrainingCard.svelte |
/admin/ocr |
Trigger sender-model training; shows training history |
SegmentationTrainingCard.svelte |
/admin/ocr |
Trigger segmentation training |
TrainingHistory.svelte |
/admin/ocr |
List of past training runs with status |
Backend counterpart
backend/src/main/java/org/raddatz/familienarchiv/ocr/README.md