feat(#240): Mission Control Strip — backend + frontend implementation #245

Merged
marcel merged 26 commits from feat/issue-240-mission-control-strip into main 2026-04-16 13:41:34 +02:00
2 changed files with 91 additions and 0 deletions
Showing only changes of commit 53c5d90340 - Show all commits

View File

@@ -676,6 +676,32 @@ export interface paths {
patch?: never;
trace?: never;
};
"/api/transcription/segmentation-queue": {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
get: operations["getSegmentationQueue"];
put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never;
};
"/api/transcription/transcription-queue": {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
get: operations["getTranscriptionQueue"];
put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never;
};
"/api/transcription/ready-to-read": {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
get: operations["getReadyToRead"];
put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never;
};
"/api/transcription/weekly-stats": {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
get: operations["getTranscriptionWeeklyStats"];
put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never;
};
"/api/documents/{id}/needs-expert": {
parameters: { query?: never; header?: never; path: { id: string; }; cookie?: never; };
get?: never; put?: never; post?: never; delete?: never; options?: never; head?: never;
patch: operations["toggleNeedsExpert"];
trace?: never;
};
"/api/stats": {
parameters: {
query?: never;
@@ -1199,6 +1225,7 @@ export interface components {
metadataComplete: boolean;
/** @enum {string} */
scriptType: "UNKNOWN" | "TYPEWRITER" | "HANDWRITING_LATIN" | "HANDWRITING_KURRENT";
needsExpert: boolean;
receivers?: components["schemas"]["Person"][];
sender?: components["schemas"]["Person"];
tags?: components["schemas"]["Tag"][];
@@ -1456,6 +1483,28 @@ export interface components {
/** Format: int64 */
totalDocuments?: number;
};
TranscriptionQueueItemDTO: {
/** Format: uuid */
id: string;
title: string;
/** Format: date */
documentDate?: string;
needsExpert: boolean;
/** Format: int32 */
annotationCount: number;
/** Format: int32 */
textedBlockCount: number;
/** Format: int32 */
reviewedBlockCount: number;
};
TranscriptionWeeklyStatsDTO: {
/** Format: int64 */
segmentationCount: number;
/** Format: int64 */
transcriptionCount: number;
/** Format: int64 */
readyCount: number;
};
PersonSummaryDTO: {
title?: string;
/** Format: uuid */
@@ -3116,6 +3165,46 @@ export interface operations {
};
};
};
getSegmentationQueue: {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
requestBody?: never;
responses: {
/** @description OK */
200: { headers: { [name: string]: unknown; }; content: { "*/*": components["schemas"]["TranscriptionQueueItemDTO"][]; }; };
};
};
getTranscriptionQueue: {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
requestBody?: never;
responses: {
/** @description OK */
200: { headers: { [name: string]: unknown; }; content: { "*/*": components["schemas"]["TranscriptionQueueItemDTO"][]; }; };
};
};
getReadyToRead: {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
requestBody?: never;
responses: {
/** @description OK */
200: { headers: { [name: string]: unknown; }; content: { "*/*": components["schemas"]["TranscriptionQueueItemDTO"][]; }; };
};
};
getTranscriptionWeeklyStats: {
parameters: { query?: never; header?: never; path?: never; cookie?: never; };
requestBody?: never;
responses: {
/** @description OK */
200: { headers: { [name: string]: unknown; }; content: { "*/*": components["schemas"]["TranscriptionWeeklyStatsDTO"]; }; };
};
};
toggleNeedsExpert: {
parameters: { query?: never; header?: never; path: { id: string; }; cookie?: never; };
requestBody?: never;
responses: {
/** @description OK */
200: { headers: { [name: string]: unknown; }; content: { "*/*": components["schemas"]["Document"]; }; };
};
};
getStats: {
parameters: {
query?: never;

View File

@@ -38,6 +38,8 @@ const makeDoc = (overrides: Record<string, unknown> = {}) => ({
documentDate: '1923-04-12',
location: 'Berlin',
metadataComplete: false,
scriptType: 'UNKNOWN' as const,
needsExpert: false,
sender: { id: 'p1', firstName: 'Hans', lastName: 'Müller' },
receivers: [{ id: 'p2', firstName: 'Anna', lastName: 'Schmidt' }],
tags: [],