feat: OCR pipeline with NDJSON streaming and real-time progress (#226, #227, #231) #229

Merged
marcel merged 74 commits from feat/issue-226-227-ocr-pipeline-polygon into main 2026-04-13 12:39:04 +02:00
3 changed files with 11 additions and 3 deletions
Showing only changes of commit 6a0fd25662 - Show all commits

View File

@@ -8,6 +8,7 @@ import org.raddatz.familienarchiv.dto.IncompleteDocumentDTO;
import org.raddatz.familienarchiv.model.Document;
import org.raddatz.familienarchiv.dto.DocumentSort;
import org.raddatz.familienarchiv.model.DocumentStatus;
import org.raddatz.familienarchiv.model.ScriptType;
import org.raddatz.familienarchiv.model.Person;
import org.raddatz.familienarchiv.model.Tag;
import org.raddatz.familienarchiv.repository.DocumentRepository;
@@ -377,6 +378,13 @@ public class DocumentService {
return documentRepository.findAll(conversation, Sort.by(Sort.Direction.ASC, "documentDate"));
}
@Transactional
public void updateScriptType(UUID documentId, ScriptType scriptType) {
Document doc = getDocumentById(documentId);
doc.setScriptType(scriptType);
documentRepository.save(doc);
}
public Document getDocumentById(UUID id) {
return documentRepository.findById(id)
.orElseThrow(() -> DomainException.notFound(ErrorCode.DOCUMENT_NOT_FOUND, "Document not found: " + id));

View File

@@ -65,7 +65,7 @@ public class OcrService {
}
if (scriptTypeOverride != null) {
doc.setScriptType(scriptTypeOverride);
documentService.updateScriptType(documentId, scriptTypeOverride);
}
OcrJob job = OcrJob.builder()

View File

@@ -146,7 +146,7 @@ class OcrServiceTest {
}
@Test
void startOcr_setsScriptTypeOnDocument_whenProvided() {
void startOcr_updatesScriptType_whenProvided() {
UUID docId = UUID.randomUUID();
Document doc = Document.builder().id(docId).status(DocumentStatus.UPLOADED)
.filePath("test.pdf").scriptType(ScriptType.UNKNOWN).build();
@@ -160,6 +160,6 @@ class OcrServiceTest {
ocrService.startOcr(docId, ScriptType.HANDWRITING_LATIN, UUID.randomUUID());
assertThat(doc.getScriptType()).isEqualTo(ScriptType.HANDWRITING_LATIN);
verify(documentService).updateScriptType(docId, ScriptType.HANDWRITING_LATIN);
}
}