feat: Dashboard-Pipeline, AudioHub, WordGenerator, reviewed-Status

- Dashboard: Pipeline-Übersicht (Counts pro Status) + Werkzeug-Kacheln
- AudioHub (/audio): Coverage-Matrix je Tabelle×Sprache, Generieren-Buttons, Player
- WordGenerator (/content/words): Thema→KI-Vorschau→Übernehmen als translated
- reviewed in STATUS_COLORS + Status-Optionen (objects/questions/statements/pairs)
- audios-Tabelle um source_*/language erweitert

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-02 21:30:03 +02:00
parent 232ba1ece5
commit 465c6e4954
7 changed files with 454 additions and 29 deletions

View File

@@ -85,7 +85,7 @@ export const TABLES = {
editableFields: {
notes: { type: 'textarea' },
blocked_topic:{ type: 'text' },
status: { type: 'select', options: ['draft', 'published', 'blocked'] },
status: { type: 'select', options: ['draft', 'reviewed', 'published', 'blocked'] },
},
fetchRelated: [
{
@@ -127,7 +127,7 @@ export const TABLES = {
answer_type: { type: 'select', options: ['yes_no', 'text', 'question', 'word'] },
difficulty_level: { type: 'number', min: 1, max: 50 },
blocked_topic: { type: 'text' },
status: { type: 'select', options: ['draft', 'published', 'blocked'] },
status: { type: 'select', options: ['draft', 'reviewed', 'published', 'blocked'] },
},
fetchRelated: [],
},
@@ -145,7 +145,7 @@ export const TABLES = {
sentence_en: { type: 'textarea' },
sentence_sv: { type: 'textarea' },
blocked_topic:{ type: 'text' },
status: { type: 'select', options: ['draft', 'published', 'blocked'] },
status: { type: 'select', options: ['draft', 'reviewed', 'published', 'blocked'] },
},
fetchRelated: [],
},
@@ -167,7 +167,7 @@ export const TABLES = {
negative_sentence_sv: { type: 'textarea' },
answer: { type: 'boolean' },
blocked_topic: { type: 'text' },
status: { type: 'select', options: ['draft', 'published', 'blocked'] },
status: { type: 'select', options: ['draft', 'reviewed', 'published', 'blocked'] },
},
fetchRelated: [],
},
@@ -280,14 +280,18 @@ export const TABLES = {
endpoint: '/audios',
statusField: 'status',
primaryLabel: 'text',
columns: ['text', 'voice_id', 'status', 'audio_link', 'created_at'],
columns: ['text', 'language', 'source_table', 'source_field', 'status', 'audio_link', 'voice_id', 'created_at'],
linkedFields: {},
editableFields: {
text: { type: 'textarea' },
status: { type: 'select', options: ['generated', 'published', 'blocked'] },
voice_id: { type: 'text' },
model_id: { type: 'text' },
audio_link: { type: 'text' },
text: { type: 'textarea' },
status: { type: 'select', options: ['generated', 'published', 'blocked'] },
language: { type: 'select', options: ['de', 'en', 'sv'] },
source_table: { type: 'select', options: ['words', 'questions', 'statements'] },
source_id: { type: 'text' },
source_field: { type: 'text' },
voice_id: { type: 'text' },
model_id: { type: 'text' },
audio_link: { type: 'text' },
},
fetchRelated: [],
},
@@ -297,6 +301,7 @@ export const STATUS_COLORS = {
published: 'bg-violet-100 text-violet-800',
blocked: 'bg-red-100 text-red-800',
draft: 'bg-gray-100 text-gray-600',
reviewed: 'bg-teal-100 text-teal-800',
uploaded: 'bg-blue-100 text-blue-800',
requested: 'bg-yellow-100 text-yellow-800',
translated: 'bg-indigo-100 text-indigo-800',