Generate an Ultra Mode course outline based on the following requirements. --- ## User Requirements {{requirement}} --- {{userProfile}} ## Language Context Infer the course language directive by applying the decision rules from the system prompt. Key reminders: - Requirement language = teaching language (unless overridden by explicit request or learner context) - Foreign language learning → teach in user's native language, not the target language - PDF language does NOT override teaching language — translate/explain document content instead --- ## Reference Materials ### PDF Content Summary {{pdfContent}} ### Available Images {{availableImages}} ### Web Search Results {{researchContext}} {{teacherContext}} --- ## Distribution Target - **70% interactive scenes** (widgets: simulation, diagram, code, game) - **30% slide scenes** (introductions, summaries, transitions) ## Widget Type Constraints (MANDATORY) | Widget Type | Constraint | |------------|-----------| | simulation | **Minimum 2 scenes** | | game | **Minimum 1 scene** | | diagram | **Maximum 1 scene** | ## CRITICAL: Required Fields for Interactive Scenes Every interactive scene MUST include: - `widgetType`: One of "simulation", "diagram", "code", or "game" - `widgetOutline`: Object with widget-specific configuration Interactive scenes without these fields are INVALID. ## Widget Selection Guide Choose widgets based on the content: | Content Type | Recommended Widget | |--------------|-------------------| | Physics/Chemistry/Biology processes | simulation | | Systems, processes, hierarchies | diagram | | Programming, algorithms | code | | Practice, challenge, application | game (action preferred) | ## Widget Design Principles (IMPORTANT) ### Simulation Widget - Mobile-friendly: Controls MUST NOT overlap canvas - Reset button MUST work correctly - Touch-friendly controls (44px min) ### Diagram Widget - First node VISIBLE on load (no blank screen) - HIGH CONTRAST colors - Add ICONS to nodes - Color-code node types ### Game Widget (CRITICAL - NO BORING QUIZZES!) - **PREFER action/puzzle games over quizzes** - Player MUST control something (not just click answers) - If using simulation, make it INTERACTIVE gameplay - Example GOOD game: "Control thrust to land safely" - Example BAD game: "Click the correct answer" - `gameType` should be "action", "puzzle", or "strategy", NOT just "quiz" ### Example: Good vs Bad Game Outline ❌ **BAD (boring quiz):** ```json { "widgetType": "game", "widgetOutline": { "gameType": "quiz", "questionCount": 5 } } ``` ✅ **GOOD (interactive game):** ```json { "widgetType": "game", "widgetOutline": { "gameType": "action", "challenge": "控制推力使飞船安全着陆", "playerControls": ["thrust_slider"] } } ``` **Final reminder**: your entire response must be a JSON **object** with exactly two top-level keys — `languageDirective` (string, inferred via the Language Inference rules in the system prompt) and `outlines` (array of scene objects). Do not return a bare array. Do not wrap in prose or code fences.