| |
| |
| |
| |
| |
| |
|
|
| import type { ActionType } from './action'; |
| import type { MediaGenerationRequest } from '@/lib/media/types'; |
|
|
| |
|
|
| |
| |
| |
| export interface PdfImage { |
| id: string; |
| src: string; |
| pageNumber: number; |
| description?: string; |
| storageId?: string; |
| width?: number; |
| height?: number; |
| } |
|
|
| |
| |
| |
| export type ImageMapping = Record<string, string>; |
|
|
| |
|
|
| export interface UploadedDocument { |
| id: string; |
| name: string; |
| type: 'pdf' | 'docx' | 'pptx' | 'txt' | 'md' | 'image' | 'other'; |
| size: number; |
| uploadedAt: Date; |
| contentSummary?: string; |
| extractedTopics?: string[]; |
| pageCount?: number; |
| storageRef?: string; |
| } |
|
|
| |
| |
| |
| |
| export interface UserRequirements { |
| requirement: string; |
| userNickname?: string; |
| userBio?: string; |
| webSearch?: boolean; |
| interactiveMode?: boolean; |
| } |
|
|
| |
|
|
| |
| |
| |
| |
| export interface WidgetOutline { |
| |
| concept?: string; |
|
|
| |
| keyVariables?: string[]; |
| diagramType?: 'flowchart' | 'mindmap' | 'hierarchy' | 'system'; |
| language?: 'python' | 'javascript' | 'typescript' | 'java' | 'cpp'; |
| gameType?: 'quiz' | 'puzzle' | 'strategy' | 'card' | 'action'; |
| visualizationType?: 'molecular' | 'solar' | 'anatomy' | 'geometry' | 'physics' | 'custom'; |
| objects?: string[]; |
| interactions?: string[]; |
| challenge?: string; |
| playerControls?: string[]; |
| nodeCount?: number; |
| challengeType?: string; |
| } |
|
|
| |
| |
| |
| |
| export interface SceneOutline { |
| id: string; |
| type: 'slide' | 'quiz' | 'interactive' | 'pbl'; |
| title: string; |
| description: string; |
| keyPoints: string[]; |
| teachingObjective?: string; |
| estimatedDuration?: number; |
| order: number; |
| languageNote?: string; |
| |
| suggestedImageIds?: string[]; |
| |
| mediaGenerations?: MediaGenerationRequest[]; |
| |
| quizConfig?: { |
| questionCount: number; |
| difficulty: 'easy' | 'medium' | 'hard'; |
| questionTypes: ('single' | 'multiple' | 'text')[]; |
| }; |
| |
| |
| |
| |
| interactiveConfig?: { |
| conceptName: string; |
| conceptOverview: string; |
| designIdea: string; |
| subject?: string; |
| }; |
| |
| pblConfig?: { |
| projectTopic: string; |
| projectDescription: string; |
| targetSkills: string[]; |
| issueCount?: number; |
| }; |
| |
| widgetType?: WidgetType; |
| widgetOutline?: WidgetOutline; |
| } |
|
|
| |
|
|
| import type { PPTElement, SlideBackground } from './slides'; |
| import type { QuizQuestion } from './stage'; |
|
|
| |
| |
| |
| export interface GeneratedSlideContent { |
| elements: PPTElement[]; |
| background?: SlideBackground; |
| remark?: string; |
| } |
|
|
| |
| |
| |
| export interface GeneratedQuizContent { |
| questions: QuizQuestion[]; |
| } |
|
|
| |
|
|
| import type { PBLProjectConfig } from '@/lib/pbl/types'; |
|
|
| |
| |
| |
| export interface GeneratedPBLContent { |
| projectConfig: PBLProjectConfig; |
| } |
|
|
| |
|
|
| import type { WidgetConfig, TeacherAction, WidgetType } from './widgets'; |
|
|
| |
| |
| |
| export interface ScientificModel { |
| core_formulas: string[]; |
| mechanism: string[]; |
| constraints: string[]; |
| forbidden_errors: string[]; |
| } |
|
|
| |
| |
| |
| export interface GeneratedInteractiveContent { |
| html: string; |
| scientificModel?: ScientificModel; |
| widgetType?: WidgetType; |
| widgetConfig?: WidgetConfig; |
| teacherActions?: TeacherAction[]; |
| } |
|
|
| |
|
|
| export interface SuggestedSlideElement { |
| type: 'text' | 'image' | 'shape' | 'chart' | 'latex' | 'line'; |
| purpose: 'title' | 'subtitle' | 'content' | 'example' | 'diagram' | 'formula' | 'highlight'; |
| contentHint: string; |
| position?: 'top' | 'center' | 'bottom' | 'left' | 'right'; |
| chartType?: 'bar' | 'line' | 'pie' | 'radar'; |
| textOutline?: string[]; |
| } |
|
|
| export interface SuggestedQuizQuestion { |
| type: 'single' | 'multiple' | 'short_answer'; |
| questionOutline: string; |
| suggestedOptions?: string[]; |
| targetConceptId?: string; |
| difficulty: 'easy' | 'medium' | 'hard'; |
| } |
|
|
| export interface SuggestedAction { |
| type: ActionType; |
| description: string; |
| timing?: 'start' | 'middle' | 'end' | 'after-content'; |
| } |
|
|
| |
|
|
| export interface GenerationProgress { |
| currentStage: 1 | 2 | 3; |
| overallProgress: number; |
| stageProgress: number; |
| statusMessage: string; |
| scenesGenerated: number; |
| totalScenes: number; |
| errors?: string[]; |
| } |
|
|
| export interface GenerationSession { |
| id: string; |
| requirements: UserRequirements; |
| sceneOutlines?: SceneOutline[]; |
| progress: GenerationProgress; |
| startedAt: Date; |
| completedAt?: Date; |
| generatedStageId?: string; |
| } |
|
|