aiPptContentGate.mjs 3.9 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { inquiryFixture } from './aiPptInquiry.mjs'
  2. // 人工修正的回归数据:复现线上第5至10页结构,不作为模型输出质量证明。
  3. export function contentGateFixture() {
  4. const outline = inquiryFixture()
  5. outline.title = outline.chapterName = '凤鸣山谷的故事'
  6. outline.gradeName = '一年级'
  7. const base = outline.pages[1]
  8. const plan = { composition: 'concept_grid', visualMode: 'text_only', textPresentation: 'plain', imagePurpose: 'none', imageNecessity: 'none', layout: 'text_focus' }
  9. const page = (pageNo, title, headline, extra = {}) => ({ ...structuredClone(base), pageNo, title, type: 'music_knowledge', image: undefined,
  10. studentContent: { headline, points: [] }, classroomAction: { ...base.classroomAction, studentTask: headline }, visualPlan: { ...plan }, ...extra })
  11. const rhythm = sounds => ({ kind: 'rhythm', caption: `每格一拍 · 每拍${sounds === 1 ? '一' : '两'}声 · 保持相同拍速`, basis: '教师自编四拍练习,以每分钟80拍为共同拍速。',
  12. items: Array.from({ length: 4 }, (_, i) => ({ label: `第${i + 1}拍`, value: sounds })) })
  13. outline.pages = [
  14. page(1, outline.title, '一起找到声音的秘密', { type: 'cover' }),
  15. page(2, '声音的强弱和长短', '每次只比较一种变化', { visualPlan: { ...plan, composition: 'comparison' },
  16. studentContent: { headline: '每次只比较一种变化', points: [], comparisonGroups: [
  17. { label: '强', points: ['同样拍一次手,声音响一些'] }, { label: '弱', points: ['同样拍一次手,声音轻一些'] },
  18. { label: '长', points: ['用同样的声音,持续久一些'] }, { label: '短', points: ['用同样的声音,很快停下来'] }
  19. ] } }),
  20. page(3, '麒麟的脚步:一拍一声', '跟着相同的拍子拍手', { type: 'rhythm_practice', diagram: rhythm(1), visualPlan: { ...plan, visualMode: 'native_diagram' } }),
  21. page(4, '麒麟的脚步:一拍两声', '拍子不变,每拍均匀拍两下', { type: 'rhythm_practice', diagram: rhythm(2), visualPlan: { ...plan, visualMode: 'native_diagram' } }),
  22. page(5, '身体交响乐', '看指挥,让山谷响起来', { type: 'performance_activity',
  23. studentContent: { headline: '看指挥,让山谷响起来', points: ['风声组:轻声“呼”', '溪水组:轻声“哗啦”', '脚步组:均匀跺脚“咚”'], steps: ['各组先练习', '风→水→脚步依次加入', '看见握拳,一起停'] },
  24. visualPlan: { ...plan, composition: 'steps', textPresentation: 'steps' } }),
  25. page(6, '创编声音故事', '换一个顺序,讲一个新故事', { type: 'creative_activity',
  26. studentContent: { headline: '换一个顺序,讲一个新故事', example: '清晨鸟鸣“啾啾” → 溪水“哗啦” → 脚步“咚咚”', points: [], steps: ['选三种声音', '排好先后顺序', '一起演给同伴听'] },
  27. visualPlan: { ...plan, composition: 'steps', textPresentation: 'steps' } }),
  28. page(7, '声音侦探', '听两次拍手,哪次更响?', { type: 'practice_check', visualPlan: { ...plan, composition: 'focus_question' },
  29. interaction: { question: '听两次拍手,哪次更响?', options: ['第一次更响', '第二次更响'], answer: '第一次更响', explanation: '教师第一次重拍、第二次轻拍,保持声源和次数相同。' },
  30. classroomAction: { teacherInstruction: '依次拍手两次,等待学生选择后再揭晓。', studentTask: '听两次拍手,哪次更响?', modelExample: '用同样姿势,第一次重拍一下,停两秒,第二次轻拍一下。', successCriteria: '能选出第一次更响,并指出两次拍手的力度不同。' } }),
  31. page(8, '把声音的秘密带回家', '找一种声音,做出两种变化', { type: 'summary', studentContent: { headline: '找一种声音,做出两种变化', points: ['同一声音试试强和弱', '请同伴听听哪里不同'] } })
  32. ]
  33. return outline
  34. }