浏览代码

优化诗词提示词加入小节进度

liyanbo 2 周之前
父节点
当前提交
f40c64dc51
共有 1 个文件被更改,包括 94 次插入91 次删除
  1. 94 91
      src/components/study/SelfDirectedLearning.vue

+ 94 - 91
src/components/study/SelfDirectedLearning.vue

@@ -189,80 +189,6 @@ const checkImagesCompleteTimer = ref(null) // 图片完成检查定时器
 // 单个脚本数据的缓存键(用于存储最终生成的脚本数据)
 const SCRIPT_DATA_KEY = 'scriptData'
 
-// 小节列表(包含详细讲解要求,适用于所有课程类型)
-const lessonList = ref([
-  {
-    id: '1',
-    name: '课程引入',
-    description: '作为课程的开篇,建立学习背景,引发学生兴趣',
-    requirements: `
-      1. 介绍课程主题的背景知识(如相关历史、文化背景或基本概念)
-      2. 用生动有趣的方式引发学生兴趣(可以讲一个小故事或提一个有趣的问题)
-      3. 明确本节课程的学习目标和预期收获
-      4. 简单介绍课程内容的整体框架和重点
-      5. 结尾用自然的过渡语引导到正式讲解
-      要求:语言亲切自然,符合学生认知水平,篇幅适中,结构为:问候→背景介绍→学习目标→过渡语
-    `.trim()
-  },
-  {
-    id: '2',
-    name: '知识讲解',
-    description: '深入解析课程内容,详细讲解知识点',
-    requirements: `
-      1. 详细讲解课程核心内容(如知识点、概念、原理等,确保覆盖所有关键内容)
-      2. 分析内容中的重点和难点,结合实例进行说明
-      3. 解读内容所表达的思想、情感或核心价值
-      4. 介绍关键术语的含义、用法和相关知识
-      5. 设计1-2个互动问题引导学生思考和应用知识点
-      要求:讲解详细透彻,逻辑清晰,确保学生理解每一个知识点,结构为:内容解析→重点分析→实例说明→互动提问
-    `.trim()
-  },
-  {
-    id: '3',
-    name: '课程总结',
-    description: '回顾课程内容,总结要点,拓展延伸',
-    requirements: `
-      1. 回顾本节课的核心知识点(重点内容复述)
-      2. 概括课程的主旨思想和核心要点
-      3. 总结学习方法和要点(帮助记忆)
-      4. 联系生活实际,进行拓展延伸
-      5. 布置简单的课后思考或练习建议
-      要求:条理清晰,重点突出,语言简洁,易于记忆,篇幅适中,结构为:回顾要点→总结方法→拓展延伸→课后建议
-    `.trim()
-  },
-
-
-  {
-    id: '4',
-    name: '初识诗境',
-    description: '读·共读辨情,初识诗境',
-    requirements: ``.trim()
-  },
-  {
-    id: '5',
-    name: '解码精神',
-    description: '悟·深究共情,解码精神',
-    requirements: ``.trim()
-  },
-  {
-    id: '6',
-    name: '联结现实',
-    description: '用·印证文脉,联结现实',
-    requirements: ``.trim()
-  },
-  {
-    id: '7',
-    name: '创意表达',
-    description: '创·汲智明志,创意表达',
-    requirements: ``.trim()
-  },
-  {
-    id: '8',
-    name: '知行合一',
-    description: '评·多元评价,知行合一',
-    requirements: ``.trim()
-  },
-])
 // 主讲人、助讲人
 const selectedMainTeacher = ref('')
 const selectedAssistants = ref([''])
@@ -568,15 +494,22 @@ const generateScript = async () => {
         const courseLessons = []
         scriptData.lessons = []
 
+        // 根据选中的主题获取对应的课程小节列表
+        const selectedTheme = themeOptions.value.find(item => item.value === courseDropdown.value.value)
+        if (!selectedTheme || !selectedTheme.lessonList || selectedTheme.lessonList.length === 0) {
+          throw new Error('未找到对应主题的课程小节配置')
+        }
+        const currentLessonList = selectedTheme.lessonList
+
         // 循环生成每节课程内容(从第0节开始)
-        for (let i = 0; i < lessonList.value.length; i++) {
+        for (let i = 0; i < currentLessonList.length; i++) {
           // 检查是否已取消或组件已卸载
           if (isCancelled.value || isUnmounted.value) {
             throw new Error('生成已取消')
           }
 
-          let lesson = lessonList.value[i]
-          progressSteps.value[1].text = "生成课程小节【" + lesson.name + "】..."
+          let lesson = currentLessonList[i]
+          progressSteps.value[1].text = "生成课程小节【" + lesson.name + "】(" + (i+1) + "/" + currentLessonList.length + ")..."
 
           // 构建当前小节的专属提示词(只针对当前小节)
           let content = `${baseContent}。这是系列课程的第${i+1}节,本节主题:【${lesson.name}】。${lesson.requirements}`
@@ -1349,7 +1282,7 @@ const showNewContainer = ref(false);
 
 // 生成进度步骤(4个步骤)
 const progressSteps = ref([
-  { text: '生成课程脚本...', completed: false, active: false, visible: false, progress: 0 },
+  { text: '生成课程主题...', completed: false, active: false, visible: false, progress: 0 },
   { text: '生成课程小节...', completed: false, active: false, visible: false, progress: 0 },
   { text: '生成背景图...', completed: false, active: false, visible: false, progress: 0 },
   { text: '生成配音...', completed: false, active: false, visible: false, progress: 0 }
@@ -1388,7 +1321,7 @@ const themeOptions = ref([
   {
     name: '课程封面',
     value: 255,
-    sections: [],
+    lessonList: [],
     show: false,
     get label() {
       return '课程封面'
@@ -1397,14 +1330,47 @@ const themeOptions = ref([
   {
     name: '诗词课',
     value: 256,
-    sections: [4, 5, 6, 7, 8],
+    lessonList: [
+      {
+        id: '1',
+        name: '初识诗境',
+        description: '读·共读辨情,初识诗境',
+        requirements: `课程围绕「共读辨情,初识诗境」展开,教学重点:组织集体朗读、分层诵读,引导学生从字音节奏、词句表层分辨诗人喜怒哀乐的情感基调,不带深度解读,仅带领学生初步感知诗词画面与意境;
+        受众为中小学诗词学习者,脚本包含课堂导入、齐读环节、分句品读、意境浅感知、课堂小结,语言温润有书卷气,流程完整可直接授课`.trim()
+      },
+      {
+        id: '2',
+        name: '解码精神',
+        description: '悟·深究共情,解码精神',
+        requirements: `课程围绕「深究共情,解码精神」展开,教学重点:深挖创作背景、诗人境遇,引导学生换位思考与古人共情,拆解文字背后蕴藏的品格、理想、家国情怀等精神内核,跳出字面读懂诗文主旨;
+        设置背景拓展、词句深挖、共情问答、主旨解析模块,逻辑层层递进,适配深度诗词赏析课堂。`.trim()
+      },
+      {
+        id: '3',
+        name: '联结现实',
+        description: '用·印证文脉,联结现实',
+        requirements: `课程围绕「印证文脉,联结现实」展开,教学重点:梳理诗词传承文脉,挖掘诗文道理、价值内涵,搭建古代诗意与当代生活的桥梁,引导学生用古人智慧看待当下生活、社会现象;
+        设计古今对照案例、生活情境讨论、文脉梳理小任务,实现古诗文学以致用,弱化单纯赏析,侧重现实关联。`.trim()
+      },
+      {
+        id: '4',
+        name: '创意表达',
+        description: '创·汲智明志,创意表达',
+        requirements: `课程围绕「汲智明志,创意表达」展开,教学重点:汲取经典诗词的意象、手法、情志智慧,引导学生借鉴古人笔法,结合自身志向、生活感悟进行创意文字创作,包含短句仿写、意象活用、原创小诗、抒怀习作环节;
+        课堂鼓励个性化表达,兼顾格律基础与自由创意,激发文字创作能力。`.trim()
+      },
+      {
+        id: '5',
+        name: '知行合一',
+        description: '评·多元评价,知行合一',
+        requirements: `课程围绕「多元评价,知行合一」展开,教学重点:采用朗读、赏析、运用、创作多维度多元评价方式,复盘前四节课诵读、体悟、活用、创作全部知识点,引导学生内化诗意精神,并落实到日常言行;
+        设置作品互评、自我复盘、知行践行任务、整体课堂总结,实现学诗、悟诗、践行诗意融为一体。`.trim()
+      }
+    ],
     show: true,
     get label() {
-      const lessonNames = this.sections
-          .map(sectionId => {
-            const lesson = lessonList.value.find(l => l.id === sectionId.toString())
-            return lesson ? lesson.name : ''
-          })
+      const lessonNames = this.lessonList
+          .map(lesson => lesson.name)
           .filter(Boolean)
       return `诗词课(${lessonNames.join(', ')})`
     }
@@ -1412,14 +1378,51 @@ const themeOptions = ref([
   {
     name: '通用课程',
     value: 13,
-    sections: [1, 2, 3] ,
+    lessonList: [
+      {
+        id: '1',
+        name: '课程引入',
+        description: '作为课程的开篇,建立学习背景,引发学生兴趣',
+        requirements: `
+      1. 介绍课程主题的背景知识(如相关历史、文化背景或基本概念)
+      2. 用生动有趣的方式引发学生兴趣(可以讲一个小故事或提一个有趣的问题)
+      3. 明确本节课程的学习目标和预期收获
+      4. 简单介绍课程内容的整体框架和重点
+      5. 结尾用自然的过渡语引导到正式讲解
+      要求:语言亲切自然,符合学生认知水平,篇幅适中,结构为:问候→背景介绍→学习目标→过渡语
+    `.trim()
+      },
+      {
+        id: '2',
+        name: '知识讲解',
+        description: '深入解析课程内容,详细讲解知识点',
+        requirements: `
+      1. 详细讲解课程核心内容(如知识点、概念、原理等,确保覆盖所有关键内容)
+      2. 分析内容中的重点和难点,结合实例进行说明
+      3. 解读内容所表达的思想、情感或核心价值
+      4. 介绍关键术语的含义、用法和相关知识
+      5. 设计1-2个互动问题引导学生思考和应用知识点
+      要求:讲解详细透彻,逻辑清晰,确保学生理解每一个知识点,结构为:内容解析→重点分析→实例说明→互动提问
+    `.trim()
+      },
+      {
+        id: '3',
+        name: '课程总结',
+        description: '回顾课程内容,总结要点,拓展延伸',
+        requirements: `
+      1. 回顾本节课的核心知识点(重点内容复述)
+      2. 概括课程的主旨思想和核心要点
+      3. 总结学习方法和要点(帮助记忆)
+      4. 联系生活实际,进行拓展延伸
+      5. 布置简单的课后思考或练习建议
+      要求:条理清晰,重点突出,语言简洁,易于记忆,篇幅适中,结构为:回顾要点→总结方法→拓展延伸→课后建议
+    `.trim()
+      }
+    ],
     show: true,
     get label() {
-      const lessonNames = this.sections
-          .map(sectionId => {
-            const lesson = lessonList.value.find(l => l.id === sectionId.toString())
-            return lesson ? lesson.name : ''
-          })
+      const lessonNames = this.lessonList
+          .map(lesson => lesson.name)
           .filter(Boolean)
       return `通用课程(${lessonNames.join(', ')})`
     }