Commit Graph

  • 2459408930 refactor(ocr): move person-name enrichment from OcrController into OcrTrainingService Marcel 2026-04-17 20:18:21 +02:00
  • 09f4601d15 test(ocr): verify triggerSenderTraining upserts SenderModel with correct path and cer Marcel 2026-04-17 20:13:21 +02:00
  • 1b34a36a77 fix(ocr): eliminate race window in runOrQueueSenderTraining by creating RUNNING row atomically Marcel 2026-04-17 20:11:56 +02:00
  • 8d041a377d fix(ocr): correct trainSenderModel URI from /train to /train-sender Marcel 2026-04-17 20:08:18 +02:00
  • 18cf839fac feat(ocr): wire SenderModelService into OcrAsyncRunner; stage missing foundational files Marcel 2026-04-17 19:27:02 +02:00
  • 78eca8e9a1 docs(ocr): add Admin OCR overview & model-detail UI spec Marcel 2026-04-17 19:11:07 +02:00
  • 386dc83958 refactor(ocr): move sender training methods from OcrTrainingService to SenderModelService Marcel 2026-04-17 19:08:10 +02:00
  • 60c1ec7b5f refactor(ocr): delete buildTrainingInfoMap() dead code Marcel 2026-04-17 18:52:51 +02:00
  • 10a4a4d94b fix(ocr): log debug instead of silently swallowing person name resolution errors Marcel 2026-04-17 18:51:15 +02:00
  • e0b7cfdada feat(frontend): wire personNames to TrainingHistory in OcrTrainingCard Marcel 2026-04-17 18:25:59 +02:00
  • b5e1a8ac2f chore: regenerate API types for per-sender model additions Marcel 2026-04-17 18:10:04 +02:00
  • 64d27d6d61 feat(ocr): per-sender model registry and /train-sender endpoint Marcel 2026-04-17 18:05:39 +02:00
  • 7a342a07cf test: add unit tests for SenderModelService, runOrQueueSenderTraining, and updateBlock hook Marcel 2026-04-17 18:00:59 +02:00
  • bd23a76330 test: fix broken tests after per-sender model integration Marcel 2026-04-17 17:56:51 +02:00
  • c5e6ed922b test(ocr): decouple correction tests from exact library dictionary state Marcel 2026-04-17 17:23:09 +02:00
  • ec85f228c1 refactor(ocr): document > 50 frequency threshold rationale Marcel 2026-04-17 17:21:37 +02:00
  • fea24aee25 refactor(ocr): make collapse_adjacent_markers a public function Marcel 2026-04-17 17:20:31 +02:00
  • 68b57918eb ci: add ocr-tests job for spell_check and confidence unit tests Marcel 2026-04-17 16:55:07 +02:00
  • 77100ab1e6 feat(ocr): integrate spell-check post-processing for handwriting script types Marcel 2026-04-17 16:54:17 +02:00
  • 092131930c feat(ocr): add spell_check module with German spellchecker and historical wordlist Marcel 2026-04-17 16:52:50 +02:00
  • 47f9a0bf73 test(ocr): add failing tests for spell_check module Marcel 2026-04-17 16:51:38 +02:00
  • 30a6cbeb7f feat(ocr): add DTA-derived historical German wordlist and generation script Marcel 2026-04-17 16:48:26 +02:00
  • 6faaa3b7d6 feat(ocr): add pyspellchecker dependency Marcel 2026-04-17 16:41:24 +02:00
  • 77747aa556 refactor(ocr): extract _collapse_adjacent_markers helper and add CORRECTION_MARKER Marcel 2026-04-17 16:40:39 +02:00
  • 9a64c0698f fix(pdf): make isLoaded reactive so nav buttons are enabled after load Marcel 2026-04-17 15:55:42 +02:00
  • 4cb7c975f5 test(ocr): add resilience tests for tiny image and unexpected exception propagation Marcel 2026-04-17 15:16:17 +02:00
  • 97c94c91f8 test(ocr): guard translateOcrProgress fallback for PREPROCESSING_PAGE with missing colon parts Marcel 2026-04-17 15:13:52 +02:00
  • eaefd4091e feat(ocr): add PREPROCESSING_PAGE progress translation and i18n strings Marcel 2026-04-17 14:27:42 +02:00
  • ba36a88b65 feat(ocr): add Preprocessing NDJSON event to Java stream pipeline Marcel 2026-04-17 14:21:00 +02:00
  • b310caaeeb feat(ocr): integrate preprocessing into stream and batch endpoints Marcel 2026-04-17 14:16:47 +02:00
  • 615d404ba9 chore(ocr): add opencv-python-headless, libglib2.0-0, and CLAHE env vars Marcel 2026-04-17 14:14:47 +02:00
  • 7183fc4428 feat(ocr): add image preprocessing module with CLAHE + grayscale + blur Marcel 2026-04-17 14:13:42 +02:00
  • bf010a23c3 docs(tag-input): add clarifying comments for non-obvious design decisions Marcel 2026-04-17 12:17:22 +02:00
  • b01761d800 test(tag-input): add regression guard for allowCreation=false + Enter on suggestion Marcel 2026-04-17 12:14:35 +02:00
  • 6b7829d5c8 test(tag-input): rename waitForDebounce to waitForFetch and reduce to 50ms Marcel 2026-04-17 12:11:54 +02:00
  • 1b617aa08b fix(tag-input): increase suggestion item padding to py-3 for 44px touch target Marcel 2026-04-17 12:09:20 +02:00
  • 5120dd19a1 feat(tag-input): tree-aware DFS ordering, depth indentation, and direct-match styling Marcel 2026-04-17 11:54:28 +02:00
  • d075bf390a feat(tag-search): expand children and surface ancestor path in search results Marcel 2026-04-17 11:27:41 +02:00
  • 59b7f7cddf docs(specs): add tag-typeahead-tree-aware design spec Marcel 2026-04-17 11:09:38 +02:00
  • 3b1317af98 fix(admin-tags): name clears after save and wrong confirmation text Marcel 2026-04-17 10:22:54 +02:00
  • 4442b25a7a fix(#248): add confirmation dialog before tag delete Marcel 2026-04-17 09:39:33 +02:00
  • 47d57b96c8 fix(#248): show merge success banner via PRG pattern (?merged=1 redirect) Marcel 2026-04-17 09:15:29 +02:00
  • 902172e4e2 fix(#248): fix 3 merge zone bugs — stale state, wrong placeholder, missing success feedback Marcel 2026-04-17 08:12:35 +02:00
  • 654575bf16 feat(#248): add admin_tag_merge_target_placeholder and admin_tag_merge_success i18n keys Marcel 2026-04-17 08:05:50 +02:00
  • b5ea04e47a feat(#248): add optional placeholder prop to TagParentPicker Marcel 2026-04-17 08:04:16 +02:00
  • 4ec4062274 refactor(#248): simplify TagService.buildTree() to single-pass LinkedHashMap approach Marcel 2026-04-17 07:45:40 +02:00
  • 3cd6483042 fix(#248): replace focus:outline-none with focus-visible ring on TagParentPicker clear button Marcel 2026-04-17 07:43:38 +02:00
  • aff7afa7cb fix(#248): resolve parent UUID to name in TagParentPicker dropdown subtitle Marcel 2026-04-17 07:42:13 +02:00
  • be7009f9ed fix(#248): replace document.querySelectorAll with page.getByRole in TagDeleteGuard spec Marcel 2026-04-17 07:39:06 +02:00
  • e6497ebff4 fix(#248): add @Schema(REQUIRED) to TagTreeNodeDTO, improve mergeTags log, add comments Marcel 2026-04-17 01:01:09 +02:00
  • ba8758c085 fix(#248): mode-aware delete button text in TagDeleteGuard and fix document.querySelector in spec Marcel 2026-04-17 00:58:50 +02:00
  • 61976e9479 fix(#248): increase tree-node indent from 12px to 16px for better scanability Marcel 2026-04-17 00:43:44 +02:00
  • 901483ab73 fix(#248): complete ARIA combobox pattern in TagParentPicker — role="option", aria-activedescendant, keyboard nav Marcel 2026-04-17 00:42:54 +02:00
  • 6f6ff8e9ed fix(#248): add console.error to typeahead catch block and expose setActiveIndex Marcel 2026-04-17 00:37:18 +02:00
  • 7919ba3a57 fix(#248): address PR review concerns — i18n, aria-label, stable keys, test selectors Marcel 2026-04-17 00:24:53 +02:00
  • d7a46de1cc refactor(#248): address PR review concerns — TagOperator enum, typed projection, bean validation Marcel 2026-04-17 00:24:04 +02:00
  • 172c5613ed feat(#248): overhaul tag edit page — TagParentPicker, new components, merge+subtree actions Marcel 2026-04-16 23:46:06 +02:00
  • f1889ff20c feat(#248): add TagDeleteGuard component and brand-warning CSS token Marcel 2026-04-16 23:34:29 +02:00
  • 4d670de156 feat(#248): add TagMergeZone component with 2-step merge flow Marcel 2026-04-16 23:30:28 +02:00
  • b6b1b142dc feat(#248): add TagAncestry and TagChildrenPreview components Marcel 2026-04-16 23:26:02 +02:00
  • a3660a79e1 feat(#248): add TagParentPicker combobox component with excludeIds filtering Marcel 2026-04-16 23:16:18 +02:00
  • 53d89a44fc refactor(#248): extract typeahead logic into createTypeahead composable, use in PersonTypeahead Marcel 2026-04-16 23:07:59 +02:00
  • 83629e0c6e feat(#248): add createTypeahead composable with debounced fetch and selection state Marcel 2026-04-16 23:01:33 +02:00
  • 97fbf1e4ca feat(#248): replace flat TagsListPanel with collapsible ARIA tree (TagTreeNode) Marcel 2026-04-16 22:57:45 +02:00
  • 9b5af67780 feat(#248): switch layout load to GET /api/tags/tree, expose tree + flat tags Marcel 2026-04-16 22:40:23 +02:00
  • e01733eaf2 feat(#248): add TAG_NOT_FOUND/MERGE_SELF/MERGE_INVALID_TARGET to errors.ts and all i18n keys Marcel 2026-04-16 22:38:28 +02:00
  • a669f6368d feat(#248): expose parentId in TagTreeNodeDTO OpenAPI schema and regenerate TypeScript types Marcel 2026-04-16 22:33:12 +02:00
  • 5e5c249aba feat(#248): add POST /api/tags/{id}/merge and DELETE /api/tags/{id}/subtree endpoints Marcel 2026-04-16 22:27:41 +02:00
  • 609d242f5d feat(#248): enrich TagTreeNodeDTO with parentId and populate documentCount via single aggregate query Marcel 2026-04-16 22:24:50 +02:00
  • c03c391879 test(#248): add deleteWithDescendants test coverage to TagServiceTest Marcel 2026-04-16 22:20:19 +02:00
  • f921284db6 feat(#248): add TagService.mergeTags() with validateNotSelf/validateNotDescendant/transferDocuments helpers Marcel 2026-04-16 22:18:41 +02:00
  • b9b572436a feat(#248): add merge/delete/count native queries to TagRepository Marcel 2026-04-16 22:15:14 +02:00
  • a05d9c22ae fix(#248): TagService.getById() throws DomainException(TAG_NOT_FOUND) instead of ResponseStatusException Marcel 2026-04-16 22:13:45 +02:00
  • de7c48117b feat(#248): add TAG_NOT_FOUND, TAG_MERGE_SELF, TAG_MERGE_INVALID_TARGET error codes Marcel 2026-04-16 22:10:52 +02:00
  • 06fd5ae2da fix(#221): resolve inherited color on child tags in document responses Marcel 2026-04-16 19:28:21 +02:00
  • 171f06da22 fix(#221): reset parent/color/delete state when navigating between tag edit pages Marcel 2026-04-16 19:14:28 +02:00
  • 89949977c7 fix(#221): suppress tagQ when tags are already selected Marcel 2026-04-16 18:18:25 +02:00
  • 532692e0fb fix(#221): bypass debounce on AND/OR operator toggle to prevent race condition Marcel 2026-04-16 17:24:30 +02:00
  • 39ed66c97f feat(#221): add i18n keys and error codes for tag hierarchy errors Marcel 2026-04-16 16:51:03 +02:00
  • 7f53651f13 feat(#221): render tag list hierarchically with indentation and color dots Marcel 2026-04-16 16:46:55 +02:00
  • d900480920 feat(#221): add parent selector and color picker to admin tag edit form Marcel 2026-04-16 16:39:02 +02:00
  • abba85a451 feat(#221): wire tagOp URL param from server to SearchFilterBar Marcel 2026-04-16 16:25:27 +02:00
  • b54d2b0125 feat(#221): add AND/OR pill toggle to SearchFilterBar tag filter Marcel 2026-04-16 16:20:21 +02:00
  • e03fb38274 feat(#221): add color dot to tag chips in DocumentList Marcel 2026-04-16 16:14:32 +02:00
  • e8e54cc282 feat(#221): change TagInput binding to Tag[], add color dots and hierarchy grouping Marcel 2026-04-16 16:11:38 +02:00
  • e4f21bd896 feat(#221): add --c-tag-* CSS custom properties for 10 semantic tag color tokens Marcel 2026-04-16 15:50:13 +02:00
  • c3e007d421 chore(#221): regenerate TypeScript API types with Tag hierarchy fields Marcel 2026-04-16 15:48:37 +02:00
  • 57dc72b51d feat(#221): add AND/OR tag filtering with hierarchy expansion in document search Marcel 2026-04-16 15:44:18 +02:00
  • 3fba740469 feat(#221): tag entity hierarchy fields, service, repository, controller Marcel 2026-04-16 15:26:23 +02:00
  • f9ac963b9f feat(#221): add V39 migration for tag hierarchy and colors Marcel 2026-04-16 15:15:17 +02:00
  • b0c6d15f99 fix(#240): rename transcription column heading to "Text transkribieren" Marcel 2026-04-16 13:37:46 +02:00
  • e808525312 fix(#240): rename segmentation column heading to "Text markieren" Marcel 2026-04-16 13:35:56 +02:00
  • da5c92fe39 fix(#240): remove readyCount from weekly stats DTO and SQL query Marcel 2026-04-16 13:19:53 +02:00
  • 6c2da648db fix(#240): remove weekly pulse badge from ReadyColumn Marcel 2026-04-16 13:12:46 +02:00
  • ca660f103d test(#240): add component tests for all four Mission Control Strip components Marcel 2026-04-16 12:36:33 +02:00
  • 06eb1cada8 refactor(#240): deduplicate formatDate, use generated types, always-visible strip Marcel 2026-04-16 12:28:20 +02:00
  • d78685c5a4 fix(#240): accessibility, color consistency, and reviewedPct denominator Marcel 2026-04-16 12:25:36 +02:00
  • 23410aa4b8 fix(#240): rename V37→V38 (V37 was already applied); regenerate api.ts Marcel 2026-04-16 12:23:14 +02:00
  • e041c75793 test(#240): add Testcontainers integration tests for native SQL queue queries Marcel 2026-04-16 12:15:21 +02:00
  • adea7d498f fix(#240): add @Schema(requiredMode=REQUIRED) to both queue DTOs; add V37 indexes Marcel 2026-04-16 12:09:09 +02:00