feat(backend): dispatch thumbnail generation from MassImportService

ODS/Excel imports that actually upload a file (file.isPresent()) now
trigger thumbnail generation alongside hash/metadata. Metadata-only
import rows produce no thumbnail — nothing to render.

Refs #307

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-22 21:58:24 +02:00
parent 7d0e13c591
commit 0344a0c7ff
2 changed files with 7 additions and 2 deletions

View File

@@ -59,6 +59,7 @@ public class MassImportService {
private final PersonService personService; private final PersonService personService;
private final TagService tagService; private final TagService tagService;
private final S3Client s3Client; private final S3Client s3Client;
private final ThumbnailAsyncRunner thumbnailAsyncRunner;
@Value("${app.s3.bucket}") @Value("${app.s3.bucket}")
private String bucketName; private String bucketName;
@@ -332,7 +333,10 @@ public class MassImportService {
if (tag != null) doc.getTags().add(tag); if (tag != null) doc.getTags().add(tag);
doc.setMetadataComplete(metadataComplete); doc.setMetadataComplete(metadataComplete);
documentRepository.save(doc); Document saved = documentRepository.save(doc);
if (file.isPresent()) {
thumbnailAsyncRunner.dispatchAfterCommit(saved.getId());
}
log.info("Importiert{}: {}", file.isEmpty() ? " (nur Metadaten)" : "", originalFilename); log.info("Importiert{}: {}", file.isEmpty() ? " (nur Metadaten)" : "", originalFilename);
} }

View File

@@ -39,12 +39,13 @@ class MassImportServiceTest {
@Mock PersonService personService; @Mock PersonService personService;
@Mock TagService tagService; @Mock TagService tagService;
@Mock S3Client s3Client; @Mock S3Client s3Client;
@Mock ThumbnailAsyncRunner thumbnailAsyncRunner;
MassImportService service; MassImportService service;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
service = new MassImportService(documentRepository, personService, tagService, s3Client); service = new MassImportService(documentRepository, personService, tagService, s3Client, thumbnailAsyncRunner);
ReflectionTestUtils.setField(service, "bucketName", "test-bucket"); ReflectionTestUtils.setField(service, "bucketName", "test-bucket");
ReflectionTestUtils.setField(service, "colIndex", 0); ReflectionTestUtils.setField(service, "colIndex", 0);
ReflectionTestUtils.setField(service, "colBox", 1); ReflectionTestUtils.setField(service, "colBox", 1);