'use client' import AudioPlayer from '@/components/training/AudioPlayer' import VideoPlayer from '@/components/training/VideoPlayer' import ScriptPreview from '@/components/training/ScriptPreview' import type { TrainingModule, ModuleContent, TrainingMedia, TrainingBlockConfig, CanonicalControlMeta, BlockPreview, BlockGenerateResult, } from '@/lib/sdk/training/types' import { TARGET_AUDIENCE_LABELS, ROLE_LABELS, REGULATION_LABELS } from '@/lib/sdk/training/types' export function ContentTab({ modules, blocks, canonicalMeta, selectedModuleId, onSelectedModuleIdChange, generatedContent, generating, bulkGenerating, bulkResult, moduleMedia, interactiveGenerating, blockPreview, blockPreviewId, blockGenerating, blockResult, showBlockCreate, onShowBlockCreate, onGenerateContent, onGenerateQuiz, onGenerateInteractiveVideo, onPublishContent, onBulkContent, onBulkQuiz, onPreviewBlock, onGenerateBlock, onDeleteBlock, onCreateBlock, }: { modules: TrainingModule[] blocks: TrainingBlockConfig[] canonicalMeta: CanonicalControlMeta | null selectedModuleId: string onSelectedModuleIdChange: (id: string) => void generatedContent: ModuleContent | null generating: boolean bulkGenerating: boolean bulkResult: { generated: number; skipped: number; errors: string[] } | null moduleMedia: TrainingMedia[] interactiveGenerating: boolean blockPreview: BlockPreview | null blockPreviewId: string blockGenerating: boolean blockResult: BlockGenerateResult | null showBlockCreate: boolean onShowBlockCreate: (show: boolean) => void onGenerateContent: () => void onGenerateQuiz: () => void onGenerateInteractiveVideo: () => void onPublishContent: (id: string) => void onBulkContent: () => void onBulkQuiz: () => void onPreviewBlock: (id: string) => void onGenerateBlock: (id: string) => void onDeleteBlock: (id: string) => void onCreateBlock: (data: { name: string; description?: string; domain_filter?: string; category_filter?: string; severity_filter?: string; target_audience_filter?: string; regulation_area: string; module_code_prefix: string; max_controls_per_module?: number; }) => void }) { return (
Canonical Controls nach Kriterien filtern und automatisch Schulungsmodule generieren {canonicalMeta && ({canonicalMeta.total} Controls verfuegbar)}
| Name | Domain | Zielgruppe | Severity | Prefix | Letzte Generierung | Aktionen |
|---|---|---|---|---|---|---|
|
{block.name}
{block.description && {block.description} }
|
{block.domain_filter || 'Alle'} | {block.target_audience_filter ? (TARGET_AUDIENCE_LABELS[block.target_audience_filter] || block.target_audience_filter) : 'Alle'} | {block.severity_filter || 'Alle'} | {block.module_code_prefix} |
{block.last_generated_at ? new Date(block.last_generated_at).toLocaleString('de-DE') : 'Noch nie'} |
|
{ctrl.control_id}
{ctrl.title}
{ctrl.severity}
Generiere Inhalte und Quiz-Fragen fuer alle Module auf einmal
Generiere Schulungsinhalte und Quiz-Fragen automatisch via KI
Generiert von: {generatedContent.generated_by} ({generatedContent.llm_model})
{generatedContent.content_body}
Video mit Narrator-Persona und Checkpoint-Quizzes
Dauer: {Math.round(m.duration_seconds / 60)} Min | Groesse: {(m.file_size_bytes / 1024 / 1024).toFixed(1)} MB
Generiert: {new Date(m.created_at).toLocaleString('de-DE')}