aiPptInquiry.mjs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // 人工编写的渲染回归样例,不代表模型实测输出或已核验的教材原文。
  2. export function inquiryFixture() {
  3. const art = `<svg xmlns="http://www.w3.org/2000/svg" width="740" height="720" viewBox="0 0 740 720"><rect width="740" height="720" rx="32" fill="#E8E1CF"/><circle cx="550" cy="140" r="75" fill="#EBC16E"/><path d="M0 560Q150 460 350 560T740 530V720H0Z" fill="#648E90"/><path d="M0 620Q170 530 380 620T740 610" fill="none" stroke="#FAF8F2" stroke-width="12"/><g stroke="#203345" stroke-width="14" stroke-linecap="round" fill="none"><path d="M270 420L200 390L150 410M280 450L190 460L160 490M480 420L550 390L600 410M470 450L560 460L590 490"/><path d="M300 350L210 290M450 350L520 270"/></g><g fill="#BF513B" stroke="#203345" stroke-width="9"><ellipse cx="375" cy="400" rx="125" ry="88"/><path d="M220 300Q130 310 150 210L195 260L235 205Q280 285 220 300Z"/><path d="M510 290Q465 235 500 185L530 240L570 195Q600 290 510 290Z"/></g><g fill="#FAF8F2" stroke="#203345" stroke-width="8"><circle cx="330" cy="326" r="25"/><circle cx="420" cy="326" r="25"/></g><g fill="#203345"><circle cx="333" cy="330" r="8"/><circle cx="417" cy="330" r="8"/></g><path d="M350 402Q375 427 400 402" fill="none" stroke="#203345" stroke-width="9" stroke-linecap="round"/></svg>`
  4. const image = { url: `data:image/svg+xml;charset=utf-8,${encodeURIComponent(art)}`, width: 740, height: 720 }
  5. const page = (pageNo, type, title, headline, points, composition, extra = {}) => ({
  6. pageNo, type, title, bullets: [], imageKeywords: [],
  7. teachingPurpose: '比较声音的表现差异,并在演唱中尝试运用。',
  8. teachingBrief: '围绕歌曲表现问题,提供具体听辨与模仿任务。',
  9. learningEvidence: '能说明听到的差别,并在自己的演唱中展示一种变化。',
  10. durationMinutes: pageNo === 1 ? 1 : pageNo === 9 ? 4 : 5,
  11. objectiveIds: ['1'], optional: false, requiredVisual: false,
  12. studentContent: { headline, points },
  13. classroomAction: {
  14. teacherInstruction: '先示范两种表现,请学生选择并说明理由,再请一组尝试。',
  15. studentTask: headline,
  16. modelExample: '选择教材歌曲中的同一句,保持音高和速度一致,分别轻巧与有力地演唱。',
  17. successCriteria: '学生能指出力度差别,尝试改变唱法,声音保持自然。'
  18. },
  19. speakerNotes: '先让学生表达听感,再请他们用声音说明。接着将发现带回歌曲中验证。',
  20. visualPlan: { composition, visualMode: 'text_only', visualShare: .55, textPresentation: 'plain', imageNecessity: 'none', imagePurpose: 'none', layout: pageNo === 1 ? 'cover_scene' : 'text_focus' },
  21. ...extra
  22. })
  23. return {
  24. title: '螃蟹歌', chapterName: '螃蟹歌', gradeName: '三年级', textbookName: '音乐课堂 · 设计样例', unitName: '', courseType: 'singing', templateId: 'blank', style: 'clean',
  25. teachingDesign: { approach: '从声音差异出发,尝试有表现力的演唱。', drivingQuestion: '怎样把螃蟹唱得有趣?', learningPath: ['听见特点', '比较唱法', '尝试表现', '交流发现'] },
  26. visualBible: { artStyle: '纸本插画与简洁音乐图示', palette: ['#203345', '#FAF8F2', '#BF513B'], environment: '河边音乐课堂' },
  27. textbookResearch: { exactMatch: true, confidence: 'HIGH', sources: [{ url: 'https://example.com/test-fixture', title: '测试专用,不是教材来源' }], teachingObjectives: ['比较不同唱法并尝试有表现力地演唱'] },
  28. pages: [
  29. page(1, 'cover', '螃蟹歌', '怎样把螃蟹唱得有趣?', ['听见特点,再唱出自己的发现'], 'image_right', { image,
  30. visualPlan: { composition: 'image_right', visualMode: 'generated_image', visualShare: .55, textPresentation: 'plain', imageNecessity: 'supporting', imagePurpose: 'scene', layout: 'cover_scene' } }),
  31. page(2, 'first_listen', '先用耳朵认识它', '哪一句最让你想学?', ['记住一句最有趣的声音', '用表情或动作回应它', '说说你为什么选这一句'], 'image_left', { image,
  32. visualPlan: { composition: 'image_left', visualMode: 'generated_image', visualShare: .5, textPresentation: 'plain', imageNecessity: 'supporting', imagePurpose: 'scene', layout: 'split_content' } }),
  33. page(3, 'music_knowledge', '我们的发现路线', '听到的特点,怎样变成唱法?', [], 'steps', {
  34. diagram: { kind: 'sequence', caption: '每一次尝试,都用声音说明理由', items: [{ label: '听见不同' }, { label: '比较唱法' }, { label: '尝试表现' }, { label: '交流发现' }] },
  35. visualPlan: { composition: 'steps', visualMode: 'native_diagram', textPresentation: 'plain', imageNecessity: 'none', imagePurpose: 'none', layout: 'diagram_focus' } }),
  36. page(4, 'rhythm_practice', '同样的拍子,不同的力量', '哪一下听起来更突出?', ['先模仿,再换一种强弱顺序'], 'concept_grid', {
  37. diagram: { kind: 'beats', caption: '教师自编强弱练习 · 圆的大小表示相对力度', items: [{ label: '强', value: 1 }, { label: '弱', value: .35 }, { label: '强', value: 1 }, { label: '弱', value: .35 }] },
  38. visualPlan: { composition: 'concept_grid', visualMode: 'native_diagram', textPresentation: 'plain', imageNecessity: 'none', imagePurpose: 'none', layout: 'diagram_focus' } }),
  39. page(5, 'phrase_sing', '一句歌,两种表情', '你更喜欢哪种唱法?', [], 'comparison', {
  40. studentContent: { headline: '你更喜欢哪种唱法?', points: [], comparisonGroups: [
  41. { label: '轻巧地唱', points: ['声音轻一些,字句仍清楚', '听起来像怎样的螃蟹?'] },
  42. { label: '有力地唱', points: ['声音更饱满,保持自然', '同一句的表情改变了吗?'] }
  43. ] } }),
  44. page(6, 'melody_score', '把发现放进歌里', '选一句,唱出你想表现的样子', ['先跟着老师唱准', '再尝试一种力度变化', '说说你改变了哪里'], 'steps', {
  45. studentContent: { headline: '选一句,唱出你想表现的样子', points: [], steps: ['先跟着老师唱准', '再尝试一种力度变化', '说说你改变了哪里'] },
  46. visualPlan: { composition: 'steps', visualMode: 'text_only', textPresentation: 'steps', imageNecessity: 'none', imagePurpose: 'none', layout: 'activity' } }),
  47. page(7, 'performance_activity', '小组的螃蟹舞台', '让别人听懂你们的设计', ['选一句最想表现的乐句', '商量唱法,试唱一次', '一组表演,另一组说出听到的变化'], 'concept_grid'),
  48. page(8, 'practice_check', '谁听出了变化?', '同一句唱了两次,哪里不同?', [], 'focus_question', {
  49. interaction: { type: 'question', question: '同一句唱了两次,哪里不同?', options: ['声音的力度', '演唱的速度'], answer: '声音的力度', explanation: '示范时保持音高、速度与字句一致,仅改变力度;以学生能指出并模仿差别为准。' } }),
  50. page(9, 'summary', '带走一个新发现', '我让这句歌更有趣的方法是……', ['唱给同伴听,让他猜一猜', '用一句话说明自己的唱法'], 'image_top', { image,
  51. visualPlan: { composition: 'image_top', visualMode: 'generated_image', visualShare: .55, textPresentation: 'plain', imageNecessity: 'supporting', imagePurpose: 'scene', layout: 'summary' } })
  52. ]
  53. }
  54. }