fix(#240): add @Schema(requiredMode=REQUIRED) to both queue DTOs; add V37 indexes
All non-null DTO fields are now marked required so the generated api.ts emits required (non-optional) types for callers. V37 migration adds created_at/updated_at indexes on document_annotations and transcription_blocks to avoid full table scans in the weekly stats correlated subqueries. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package org.raddatz.familienarchiv.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -9,10 +11,10 @@ import java.util.UUID;
|
||||
* in the Transkription column and the percentage label in Lesefertig.
|
||||
*/
|
||||
public record TranscriptionQueueItemDTO(
|
||||
UUID id,
|
||||
String title,
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) UUID id,
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) String title,
|
||||
LocalDate documentDate,
|
||||
int annotationCount,
|
||||
int textedBlockCount,
|
||||
int reviewedBlockCount
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) int annotationCount,
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) int textedBlockCount,
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) int reviewedBlockCount
|
||||
) {}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package org.raddatz.familienarchiv.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
/**
|
||||
* Weekly activity pulse for the Mission Control Strip column headers.
|
||||
* Counts documents that received new work in each pipeline stage
|
||||
* during the last 7 days.
|
||||
*/
|
||||
public record TranscriptionWeeklyStatsDTO(
|
||||
long segmentationCount,
|
||||
long transcriptionCount,
|
||||
long readyCount
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) long segmentationCount,
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) long transcriptionCount,
|
||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) long readyCount
|
||||
) {}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
-- Indexes to support the weekly stats correlated subqueries in findWeeklyStats().
|
||||
-- Without these, COUNT(DISTINCT ...) with a date range filter performs a full table scan
|
||||
-- on every dashboard load.
|
||||
CREATE INDEX IF NOT EXISTS idx_document_annotations_created_at ON document_annotations(created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_transcription_blocks_created_at ON transcription_blocks(created_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_transcription_blocks_updated_at ON transcription_blocks(updated_at);
|
||||
Reference in New Issue
Block a user