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;
|
package org.raddatz.familienarchiv.dto;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -9,10 +11,10 @@ import java.util.UUID;
|
|||||||
* in the Transkription column and the percentage label in Lesefertig.
|
* in the Transkription column and the percentage label in Lesefertig.
|
||||||
*/
|
*/
|
||||||
public record TranscriptionQueueItemDTO(
|
public record TranscriptionQueueItemDTO(
|
||||||
UUID id,
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) UUID id,
|
||||||
String title,
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) String title,
|
||||||
LocalDate documentDate,
|
LocalDate documentDate,
|
||||||
int annotationCount,
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) int annotationCount,
|
||||||
int textedBlockCount,
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) int textedBlockCount,
|
||||||
int reviewedBlockCount
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) int reviewedBlockCount
|
||||||
) {}
|
) {}
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package org.raddatz.familienarchiv.dto;
|
package org.raddatz.familienarchiv.dto;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Weekly activity pulse for the Mission Control Strip column headers.
|
* Weekly activity pulse for the Mission Control Strip column headers.
|
||||||
* Counts documents that received new work in each pipeline stage
|
* Counts documents that received new work in each pipeline stage
|
||||||
* during the last 7 days.
|
* during the last 7 days.
|
||||||
*/
|
*/
|
||||||
public record TranscriptionWeeklyStatsDTO(
|
public record TranscriptionWeeklyStatsDTO(
|
||||||
long segmentationCount,
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) long segmentationCount,
|
||||||
long transcriptionCount,
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED) long transcriptionCount,
|
||||||
long readyCount
|
@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