refactor(ocr): move person-name enrichment from OcrController into OcrTrainingService
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,6 @@ import org.raddatz.familienarchiv.service.OcrBatchService;
|
||||
import org.raddatz.familienarchiv.service.OcrProgressService;
|
||||
import org.raddatz.familienarchiv.service.OcrService;
|
||||
import org.raddatz.familienarchiv.service.OcrTrainingService;
|
||||
import org.raddatz.familienarchiv.service.PersonService;
|
||||
import org.raddatz.familienarchiv.service.SegmentationTrainingExportService;
|
||||
import org.raddatz.familienarchiv.service.TrainingDataExportService;
|
||||
import org.raddatz.familienarchiv.service.UserService;
|
||||
@@ -41,7 +40,6 @@ public class OcrController {
|
||||
private final OcrBatchService ocrBatchService;
|
||||
private final OcrProgressService ocrProgressService;
|
||||
private final UserService userService;
|
||||
private final PersonService personService;
|
||||
private final TrainingDataExportService trainingDataExportService;
|
||||
private final SegmentationTrainingExportService segmentationTrainingExportService;
|
||||
private final OcrTrainingService ocrTrainingService;
|
||||
@@ -136,18 +134,6 @@ public class OcrController {
|
||||
public Map<String, Object> getTrainingInfo() {
|
||||
OcrTrainingService.TrainingInfoResponse info = ocrTrainingService.getTrainingInfo();
|
||||
|
||||
Map<String, String> personNames = new HashMap<>();
|
||||
for (OcrTrainingRun run : info.runs()) {
|
||||
if (run.getPersonId() != null && !personNames.containsKey(run.getPersonId().toString())) {
|
||||
try {
|
||||
personNames.put(run.getPersonId().toString(),
|
||||
personService.getById(run.getPersonId()).getDisplayName());
|
||||
} catch (Exception e) {
|
||||
log.debug("Could not resolve display name for person {}: {}", run.getPersonId(), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("availableBlocks", info.availableBlocks());
|
||||
result.put("totalOcrBlocks", info.totalOcrBlocks());
|
||||
@@ -156,7 +142,7 @@ public class OcrController {
|
||||
result.put("ocrServiceAvailable", info.ocrServiceAvailable());
|
||||
result.put("lastRun", info.lastRun() != null ? info.lastRun() : Map.of());
|
||||
result.put("runs", info.runs());
|
||||
result.put("personNames", personNames);
|
||||
result.put("personNames", info.personNames());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,9 @@ import org.springframework.transaction.support.TransactionTemplate;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.time.Instant;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@@ -34,6 +36,7 @@ public class OcrTrainingService {
|
||||
private final OcrHealthClient ocrHealthClient;
|
||||
private final TranscriptionBlockRepository blockRepository;
|
||||
private final TransactionTemplate txTemplate;
|
||||
private final PersonService personService;
|
||||
|
||||
public record TrainingInfoResponse(
|
||||
int availableBlocks,
|
||||
@@ -42,7 +45,8 @@ public class OcrTrainingService {
|
||||
int availableSegBlocks,
|
||||
boolean ocrServiceAvailable,
|
||||
OcrTrainingRun lastRun,
|
||||
List<OcrTrainingRun> runs
|
||||
List<OcrTrainingRun> runs,
|
||||
Map<String, String> personNames
|
||||
) {}
|
||||
|
||||
private void assertNoRunningTraining() {
|
||||
@@ -198,6 +202,18 @@ public class OcrTrainingService {
|
||||
List<OcrTrainingRun> recentRuns = trainingRunRepository.findTop20ByOrderByCreatedAtDesc();
|
||||
OcrTrainingRun lastRun = recentRuns.isEmpty() ? null : recentRuns.get(0);
|
||||
|
||||
Map<String, String> personNames = new HashMap<>();
|
||||
for (OcrTrainingRun run : recentRuns) {
|
||||
if (run.getPersonId() != null && !personNames.containsKey(run.getPersonId().toString())) {
|
||||
try {
|
||||
personNames.put(run.getPersonId().toString(),
|
||||
personService.getById(run.getPersonId()).getDisplayName());
|
||||
} catch (Exception e) {
|
||||
log.debug("Could not resolve display name for person {}: {}", run.getPersonId(), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new TrainingInfoResponse(
|
||||
eligibleBlocks.size(),
|
||||
totalOcrBlocks,
|
||||
@@ -205,7 +221,8 @@ public class OcrTrainingService {
|
||||
availableSegBlocks,
|
||||
ocrHealthClient.isHealthy(),
|
||||
lastRun,
|
||||
recentRuns
|
||||
recentRuns,
|
||||
personNames
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user