Explorar o código

修改组件中未判断的数学公式格式化,修改ai应用评分提示词,修改上课模式与ai模式共用一个评分弹框

11wqe1 hai 1 mes
pai
achega
2a6be75875

+ 49 - 2
src/components/components/askStatic2.vue

@@ -203,7 +203,41 @@ export default {
     renderedFormula() {
       return function(val){
         try {
-          return katex.renderToString(val,{ throwOnError: false });
+           // 判断是否含有HTML标签,<tag ...>...</tag>
+            const hasTag = /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g.test(val);
+            if (!hasTag) {
+              val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
+
+              // 纯文本,整体渲染
+              try {
+                return katex.renderToString(val.trim(), {
+                  throwOnError: false,
+                  strict: false,
+                  output: "htmlAndMathml"
+                });
+              } catch (e) {
+                return val; // 渲染失败原样输出
+              }
+            } else {
+              // 有标签,对每个标签内容渲染
+              return val.replace(
+                /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g,
+                (match, tag, attrs, inner) => {
+                  let html;
+                  val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
+                  try {
+                    html = katex.renderToString(inner.trim(), {
+                      throwOnError: false,
+                      strict: false,
+                      output: "htmlAndMathml"
+                    });
+                  } catch (e) {
+                    html = inner;
+                  }
+                  return `<${tag}${attrs}>${html}</${tag}>`;
+                }
+              );
+            }
         } catch (e) {
           console.error('KaTeX渲染错误:', e);
           return val;
@@ -279,8 +313,21 @@ export default {
   font-size: 18px;
   width: 100%;
 }
-.a_add_head >>> .katex{
+
+.a_add_head >>> .katex {
   font-size: 16px;
+  display: block;
+  width: 100%;
+  white-space: normal;
+}
+.a_add_head >>> .katex .base{
+  display: inline !important;
+  display: contents !important;
+}
+
+.a_add_head >>> .katex .base .cjk_fallback{
+    white-space: normal !important;
+    display: inline !important;
 }
 .a_add_head .a_add_head_input {
   width: 300px;

+ 50 - 3
src/components/components/choseWorksDetailDialog.vue

@@ -1524,7 +1524,41 @@ export default {
     renderedFormula() {
       return function(val){
         try {
-          return katex.renderToString(val,{ throwOnError: false });
+           // 判断是否含有HTML标签,<tag ...>...</tag>
+            const hasTag = /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g.test(val);
+            if (!hasTag) {
+              val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
+
+              // 纯文本,整体渲染
+              try {
+                return katex.renderToString(val.trim(), {
+                  throwOnError: false,
+                  strict: false,
+                  output: "htmlAndMathml"
+                });
+              } catch (e) {
+                return val; // 渲染失败原样输出
+              }
+            } else {
+              // 有标签,对每个标签内容渲染
+              return val.replace(
+                /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g,
+                (match, tag, attrs, inner) => {
+                  let html;
+                  val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
+                  try {
+                    html = katex.renderToString(inner.trim(), {
+                      throwOnError: false,
+                      strict: false,
+                      output: "htmlAndMathml"
+                    });
+                  } catch (e) {
+                    html = inner;
+                  }
+                  return `<${tag}${attrs}>${html}</${tag}>`;
+                }
+              );
+            }
         } catch (e) {
           console.error('KaTeX渲染错误:', e);
           return val;
@@ -4353,7 +4387,20 @@ ol {
   color: rgb(80, 80, 80);
   margin-bottom: 20px;
 }
-.a_add_head >>> .katex{
-  font-size: 14px;
+
+.a_add_head >>> .katex {
+  font-size: 16px;
+  display: block;
+  width: 100%;
+  white-space: normal;
+}
+.a_add_head >>> .katex .base{
+  display: inline !important;
+  display: contents !important;
+}
+
+.a_add_head >>> .katex .base .cjk_fallback{
+    white-space: normal !important;
+    display: inline !important;
 }
 </style>

+ 26 - 0
src/components/components/sortToolWorkShow.vue

@@ -0,0 +1,26 @@
+<template>
+    <div>
+        {{ people }}
+    </div>
+</template>
+
+<script>
+    export default {
+        props: ["people"],
+        data(){
+            return {
+
+            }
+        },
+        methods:{
+
+        },
+        mounted(){
+
+        }
+    }
+</script>
+
+<style scoped>
+
+</style>

+ 51 - 4
src/components/components/studentWorkPreviewDialog.vue

@@ -402,8 +402,42 @@ export default {
   computed: {
     renderedFormula() {
       return function(val){
-        try {
-          return katex.renderToString(val,{ throwOnError: false });
+       try {
+           // 判断是否含有HTML标签,<tag ...>...</tag>
+            const hasTag = /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g.test(val);
+            if (!hasTag) {
+              val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
+
+              // 纯文本,整体渲染
+              try {
+                return katex.renderToString(val.trim(), {
+                  throwOnError: false,
+                  strict: false,
+                  output: "htmlAndMathml"
+                });
+              } catch (e) {
+                return val; // 渲染失败原样输出
+              }
+            } else {
+              // 有标签,对每个标签内容渲染
+              return val.replace(
+                /<([a-zA-Z][\w\-]*)([^>]*)>([\s\S]*?)<\/\1>/g,
+                (match, tag, attrs, inner) => {
+                  let html;
+                  val = val.trim().replace(/[\u200B-\u200D\uFEFF]/g, '');
+                  try {
+                    html = katex.renderToString(inner.trim(), {
+                      throwOnError: false,
+                      strict: false,
+                      output: "htmlAndMathml"
+                    });
+                  } catch (e) {
+                    html = inner;
+                  }
+                  return `<${tag}${attrs}>${html}</${tag}>`;
+                }
+              );
+            }
         } catch (e) {
           console.error('KaTeX渲染错误:', e);
           return val;
@@ -474,8 +508,21 @@ export default {
   width: 100vw;
   overflow: auto;
 }
-.studentWorkPreviewDialog >>> .katex{
-  font-size: 20px;
+
+.studentWorkPreviewDialog >>> .katex {
+  font-size: 16px;
+  display: block;
+  width: 100%;
+  white-space: normal;
+}
+.studentWorkPreviewDialog >>> .katex .base{
+  display: inline !important;
+  display: contents !important;
+}
+
+.studentWorkPreviewDialog >>> .katex .base .cjk_fallback{
+    white-space: normal !important;
+    display: inline !important;
 }
 .s_body {
   width: 100%;

+ 172 - 34
src/components/easy2/commpont/markDialog.vue

@@ -723,8 +723,75 @@ export default {
         }
       }
 
-      let messages = `
-      #NOTICE#
+      let messages = ''
+      if (this.currentUid.type == 20) {
+        messages = `#NOTICE#
+                Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+          - 深入理解教育评价标准,准确判断对话内容是否符合要求。
+          - 具备较强的文本分析能力,从对话中有效提取评价相关信息。
+          - 拥有客观公正的态度,确保评分结果公平合理。
+          - 能够清晰准确地表达评语,使学生和教师易于理解。
+          - 熟悉各类学习作业的要求和重点,为评价提供依据。
+          - 掌握一定的教育教学知识,更好地分析对话在教育场景中的意义。 
+                Language: ${this.getLang()}
+                ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+                Instruction: Based on the context, follow "Format example", write content.
+
+                #目标#
+                你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
+          ${this.currentUid.type == 1 ? "提取图片内容进行评价" : ""} 
+                #评分资料#
+                评价标准:${std}
+                评价细则:${laws}
+                等级:${sco}
+                作业内容:${_fileid ? "知识库中上传的文件内容" : con}
+        具体你步骤如下:
+        1. 作业内容审查:仔细阅读需要评价的作业内容,标记出可能与评价相关的部分,如知识点的回答准确性、回答的完整性、语言表达的规范性等。
+        2. 掌握评价标准:阅读理解并掌握评价标准的结构与内容,包括评价维度、不同等级以及对应的评价细则的内容为评价标准。
+        3. 评分计算:针对提取的作业内容按照确定的评价标准,对标记出的评价相关部分进行量化打分,输出评分结果。
+        4. 评语生成:根据评分结果和对话中的具体情况,撰写评语,指出优点和不足之处,以帮助学生自查作业并为教师提供评价和指导依据。
+
+        ### 理论框架
+        ### 教育目标分类理论
+        1. 基本原理:
+        - 将教育目标按照不同的层次分类,如认知领域、情感领域和动作技能领域等。
+        - 有助于明确教学活动期望达成的目标类型。
+        - 为评价教学成果提供了分类框架。
+        2. 具体应用:
+        - 分析对话中涉及的目标类型,判断是否符合预期的教育目标。
+        - 依据不同目标类型的要求,评估对话对学生相应能力的促进作用。
+        - 对比不同对话内容在目标达成度上的差异进行评分。
+
+        ### 教学评价理论
+        1. 基本原理:
+        - 关注教学过程和结果的评价,包括对教师教学行为和学生学习成果的评价。
+        - 从多个维度进行评价,如教学内容、教学方法、学习效果等。
+        - 强调评价的客观性、全面性和发展性。
+        2. 具体应用:
+        - 从对话中提取与教学内容、方法相关的信息进行评价。
+        - 考量对话对学生学习效果的影响来给出评分。
+        - 根据评价结果提出改进和发展的建议。
+
+        ### 对话分析理论
+        1. 基本原理:
+        - 着重对对话结构、话语功能、交互模式等进行分析。
+        - 揭示对话中的信息流动、话语权分配等情况。
+        - 有助于理解对话参与者之间的关系和互动效果。
+        2. 具体应用:
+        - 剖析“小可ai助手”与学生对话的结构合理性。
+        - 分析话语功能是否有助于学习和评价目的。
+        - 根据交互模式判断对话是否有利于学生参与和学习,从而给出评分。
+            
+          #输出格式#
+        [{'comment':'评语(150个汉字左右)'}]
+
+
+        #输出范例#
+        [{'comment':'学生能够全面且正确地描述光合作用中氧气和葡萄糖的生成过程,涵盖光反应和暗反应的每个阶段和主要反应物及产物。同时,学生也能够全面、准确地解释氧气和葡萄糖在植物生命活动中的重要作用,并展示了对光合作用的深入理解。论文结构良好,内容详实,逻辑清晰,论据充分。'}]
+        注意检查输出评语不超过50字`
+
+      }else{
+        messages = `#NOTICE#
         Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
         Language: ${this.getLang()}
         ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
@@ -755,6 +822,8 @@ export default {
         #输出范例#
         [{'comment':'学生能够全面且正确地描述光合作用中氧气和葡萄糖的生成过程,涵盖光反应和暗反应的每个阶段和主要反应物及产物。同时,学生也能够全面、准确地解释氧气和葡萄糖在植物生命活动中的重要作用,并展示了对光合作用的深入理解。论文结构良好,内容详实,逻辑清晰,论据充分。'}]
         `;
+      }
+      
       // console.log("messages", messages);
 
       let params = {
@@ -1018,7 +1087,7 @@ export default {
         }
       }
 
-      console.log("tit", JSON.parse(JSON.stringify(tit)));
+      // console.log("tit", JSON.parse(JSON.stringify(tit)));
 
       let con = this.cuScoCon;
 
@@ -1102,38 +1171,107 @@ export default {
           }
         }
       }
-
-      let msg = `NOTICE
-     Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
-      Language: ${this.getLang()}
-      ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
-      Instruction: Based on the context, follow "Format example", write content.
-
-      #目标#
-      你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
-      你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
-      你要结合<评价标准><评价细则>和<你判断的等级>写评语。
-      如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
-      ${work.type == 1 ? "提取图片内容进行评价" : ""}
-
-      #评分资料#
-      评价标准:${std}
-      评价细则:${laws}
-      作业内容:${_fileid ? "上传的文件内容" : con}
-      任务描述:${this.taskDetail ? this.taskDetail : ""}
-      工具描述:${this.tool.toolDetail ? this.tool.toolDetail : ""}
+      console.log('con',con);
       
-   
-      #输出要求#
-      输出每个评价标准角度的“等级”和作业的综合性“评语”。
-      “评语”控制在150字左右。
-      评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
-
-      #输出格式#
-      [${text}{'comment':'评语(150个汉字左右)'${
-        work.type == 1 ? "{'pic':'提取图片内容'}" : ""
-      }}]
-      `;
+      let msg = ''
+      if (work.type == 20) {
+              msg =  `#NOTICE#
+                    Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+              - 深入理解教育评价标准,准确判断对话内容是否符合要求。
+              - 具备较强的文本分析能力,从对话中有效提取评价相关信息。
+              - 拥有客观公正的态度,确保评分结果公平合理。
+              - 能够清晰准确地表达评语,使学生和教师易于理解。
+              - 熟悉各类学习作业的要求和重点,为评价提供依据。
+              - 掌握一定的教育教学知识,更好地分析对话在教育场景中的意义。 
+                    Language: ${this.getLang()}
+                    ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+                    Instruction: Based on the context, follow "Format example", write content.
+
+                    #目标#
+                    你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
+              ${this.currentUid.type == 1 ? "提取图片内容进行评价" : ""} 
+                    #评分资料#
+                    评价标准:${std}
+                    评价细则:${laws}
+                    等级:${text}
+                    作业内容:${_fileid ? "知识库中上传的文件内容" : con}
+            具体你步骤如下:
+            1. 作业内容审查:仔细阅读需要评价的作业内容,标记出可能与评价相关的部分,如知识点的回答准确性、回答的完整性、语言表达的规范性等。
+            2. 掌握评价标准:阅读理解并掌握评价标准的结构与内容,包括评价维度、不同等级以及对应的评价细则的内容为评价标准。
+            3. 评分计算:针对提取的作业内容按照确定的评价标准,对标记出的评价相关部分进行量化打分,输出评分结果。
+            4. 评语生成:根据评分结果和对话中的具体情况,撰写评语,指出优点和不足之处,以帮助学生自查作业并为教师提供评价和指导依据。
+
+            ### 理论框架
+            ### 教育目标分类理论
+            1. 基本原理:
+            - 将教育目标按照不同的层次分类,如认知领域、情感领域和动作技能领域等。
+            - 有助于明确教学活动期望达成的目标类型。
+            - 为评价教学成果提供了分类框架。
+            2. 具体应用:
+            - 分析对话中涉及的目标类型,判断是否符合预期的教育目标。
+            - 依据不同目标类型的要求,评估对话对学生相应能力的促进作用。
+            - 对比不同对话内容在目标达成度上的差异进行评分。
+
+            ### 教学评价理论
+            1. 基本原理:
+            - 关注教学过程和结果的评价,包括对教师教学行为和学生学习成果的评价。
+            - 从多个维度进行评价,如教学内容、教学方法、学习效果等。
+            - 强调评价的客观性、全面性和发展性。
+            2. 具体应用:
+            - 从对话中提取与教学内容、方法相关的信息进行评价。
+            - 考量对话对学生学习效果的影响来给出评分。
+            - 根据评价结果提出改进和发展的建议。
+
+            ### 对话分析理论
+            1. 基本原理:
+            - 着重对对话结构、话语功能、交互模式等进行分析。
+            - 揭示对话中的信息流动、话语权分配等情况。
+            - 有助于理解对话参与者之间的关系和互动效果。
+            2. 具体应用:
+            - 剖析“小可ai助手”与学生对话的结构合理性。
+            - 分析话语功能是否有助于学习和评价目的。
+            - 根据交互模式判断对话是否有利于学生参与和学习,从而给出评分。
+                
+             #输出格式#
+                [${text}{'comment':'评语(150个汉字左右)'${
+                  work.type == 1 ? "{'pic':'提取图片内容'}" : ""
+                }}]
+            注意检查输出评语不超过50字`
+
+      }else{
+          msg = `NOTICE
+              Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+                Language: ${this.getLang()}
+                ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+                Instruction: Based on the context, follow "Format example", write content.
+
+                #目标#
+                你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
+                你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
+                你要结合<评价标准><评价细则>和<你判断的等级>写评语。
+                如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
+                ${work.type == 1 ? "提取图片内容进行评价" : ""}
+
+                #评分资料#
+                评价标准:${std}
+                评价细则:${laws}
+                作业内容:${_fileid ? "上传的文件内容" : con}
+                任务描述:${this.taskDetail ? this.taskDetail : ""}
+                工具描述:${this.tool.toolDetail ? this.tool.toolDetail : ""}
+                
+            
+                #输出要求#
+                输出每个评价标准角度的“等级”和作业的综合性“评语”。
+                “评语”控制在150字左右。
+                评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
+
+                #输出格式#
+                [${text}{'comment':'评语(150个汉字左右)'${
+                  work.type == 1 ? "{'pic':'提取图片内容'}" : ""
+                }}]
+                `;
+      }
+    
       // console.log(msg);
       this.aiGet2(msg, _fileid, work);
     },

+ 1 - 1
src/components/easy2/commpont/markScore.vue

@@ -429,7 +429,7 @@ export default {
               _this.ajax
                 .get(_this.$store.state.api + "updateWorksEvaTwo", params)
                 .then(res => {
-                  console.log('999999999999999999999999999999999999999999999999999');
+                  // console.log('999999999999999999999999999999999999999999999999999');
                   this.getData()
                   this.$emit('refreshOther',{tid:this.toolIndex,wid:this.wIndex})
                   

+ 101 - 25
src/components/easy2/studyStudent.vue

@@ -9285,6 +9285,11 @@
                       "
                       :people="checkJson[toolIndex]"
                     ></AnswerData>
+                      <!-- <sortToolWorkShow  v-if="
+                        checkJson[toolIndex].length &&
+                        (tool.sentenceList || tool.sentenceList.length > 0)
+                      "
+                      :people="checkJson[toolIndex]"></sortToolWorkShow> -->
                   </div>
                   <div
                     v-if="
@@ -16227,6 +16232,7 @@ import AskStatic from "../components/askStatic";
 import AskStatic2 from "../components/askStatic2";
 import AnswerData2 from "../components/answerData2";
 import AnswerData from "../components/answerData";
+import sortToolWorkShow from "../components/sortToolWorkShow.vue";
 import EditorBar from "../tools/wangEnduit.vue";
 import Table from "../tools/table.vue";
 import Time from "../tools/time.vue";
@@ -16339,6 +16345,7 @@ export default {
     SeeBoard,
     AnswerData2,
     AnswerData,
+    sortToolWorkShow,
     Audio,
     ImgDraw,
     Table,
@@ -16929,7 +16936,7 @@ export default {
       toolDetail,
       taskDetail,
       toolList
-    ) {
+    ) {      
       let jude = false;
       this.AIloading.forEach((e, index) => {
         if (index == toolIndex) {
@@ -17074,37 +17081,106 @@ export default {
           this.AIloading[toolIndex][i].loading = false;
           continue;
         }
-        let msg = `NOTICE
-        Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
-        Language: ${this.getLang()}
-        ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
-        Instruction: Based on the context, follow "Format example", write content.
 
-        #目标#
-        你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
-        你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
-        你要结合<评价标准><评价细则>和<你判断的等级>写评语。
-        如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
-        ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
+        let msg = ''
+        if(con[i].type == 20){
+           msg = `#NOTICE#
+                  Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+            - 深入理解教育评价标准,准确判断对话内容是否符合要求。
+            - 具备较强的文本分析能力,从对话中有效提取评价相关信息。
+            - 拥有客观公正的态度,确保评分结果公平合理。
+            - 能够清晰准确地表达评语,使学生和教师易于理解。
+            - 熟悉各类学习作业的要求和重点,为评价提供依据。
+            - 掌握一定的教育教学知识,更好地分析对话在教育场景中的意义。 
+                  Language: ${this.getLang()}
+                  ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+                  Instruction: Based on the context, follow "Format example", write content.
+
+                  #目标#
+                  你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
+            ${con[i].type == 0 ? "提取图片内容进行评价" : ""} 
+                  #评分资料#
+                  评价标准:${std}
+                  评价细则:${laws}
+                  等级:${text}
+                  作业内容:${_fileid ? "上传的文件内容" : con[i].works}
+          具体你步骤如下:
+          1. 作业内容审查:仔细阅读需要评价的作业内容,标记出可能与评价相关的部分,如知识点的回答准确性、回答的完整性、语言表达的规范性等。
+          2. 掌握评价标准:阅读理解并掌握评价标准的结构与内容,包括评价维度、不同等级以及对应的评价细则的内容为评价标准。
+          3. 评分计算:针对提取的作业内容按照确定的评价标准,对标记出的评价相关部分进行量化打分,输出评分结果。
+          4. 评语生成:根据评分结果和对话中的具体情况,撰写评语,指出优点和不足之处,以帮助学生自查作业并为教师提供评价和指导依据。
+
+          ### 理论框架
+          ### 教育目标分类理论
+          1. 基本原理:
+          - 将教育目标按照不同的层次分类,如认知领域、情感领域和动作技能领域等。
+          - 有助于明确教学活动期望达成的目标类型。
+          - 为评价教学成果提供了分类框架。
+          2. 具体应用:
+          - 分析对话中涉及的目标类型,判断是否符合预期的教育目标。
+          - 依据不同目标类型的要求,评估对话对学生相应能力的促进作用。
+          - 对比不同对话内容在目标达成度上的差异进行评分。
+
+          ### 教学评价理论
+          1. 基本原理:
+          - 关注教学过程和结果的评价,包括对教师教学行为和学生学习成果的评价。
+          - 从多个维度进行评价,如教学内容、教学方法、学习效果等。
+          - 强调评价的客观性、全面性和发展性。
+          2. 具体应用:
+          - 从对话中提取与教学内容、方法相关的信息进行评价。
+          - 考量对话对学生学习效果的影响来给出评分。
+          - 根据评价结果提出改进和发展的建议。
+
+          ### 对话分析理论
+          1. 基本原理:
+          - 着重对对话结构、话语功能、交互模式等进行分析。
+          - 揭示对话中的信息流动、话语权分配等情况。
+          - 有助于理解对话参与者之间的关系和互动效果。
+          2. 具体应用:
+          - 剖析“小可ai助手”与学生对话的结构合理性。
+          - 分析话语功能是否有助于学习和评价目的。
+          - 根据交互模式判断对话是否有利于学生参与和学习,从而给出评分。
+              
+          #输出格式#
+
+          [${text}{'comment':'评语(150个汉字左右)'}]
+          注意检查输出评语不超过50字`
+        }else{
+          msg = `NOTICE
+            Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+            Language: ${this.getLang()}
+            ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+            Instruction: Based on the context, follow "Format example", write content.
 
+            #目标#
+            你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
+            你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
+            你要结合<评价标准><评价细则>和<你判断的等级>写评语。
+            如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
+            ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
 
-        #评分资料#
-        评价标准:${std}
-        评价细则:${laws}
-        作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
-        任务描述:${taskDetail}
-        工具描述:${toolDetail}
 
+            #评分资料#
+            评价标准:${std}
+            评价细则:${laws}
+            作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
+            任务描述:${taskDetail}
+            工具描述:${toolDetail}
 
-        #输出要求#
-        输出每个评价标准角度的“等级”和作业的综合性“评语”。
-        “评语”控制在150字左右。
-        评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
 
-        #输出格式#
+            #输出要求#
+            输出每个评价标准角度的“等级”和作业的综合性“评语”。
+            “评语”控制在150字左右。
+            评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
 
-        [${text}{'comment':'评语(150个汉字左右)'}]
-        `;
+            #输出格式#
+
+            [${text}{'comment':'评语(150个汉字左右)'}]
+            `;
+        }
+
+
+        
 
         let mk = `markSco${toolIndex}${i}`;
         let mkAwit = this.$refs[mk][0].aiupdetaSco(

+ 8 - 0
src/components/easy3/studyStudent.vue

@@ -6644,6 +6644,12 @@
                       "
                       :people="checkJson[toolIndex]"
                     ></AnswerData>
+ 
+                    <!-- <sortToolWorkShow  v-if="
+                        checkJson[toolIndex].length &&
+                        (tool.sentenceList || tool.sentenceList.length > 0)
+                      "
+                      :people="checkJson[toolIndex]"></sortToolWorkShow> -->
                   </div>
                   <div
                     v-if="
@@ -12579,6 +12585,7 @@ import AskStatic from "../components/askStatic";
 import AskStatic2 from "../components/askStatic2";
 import AnswerData2 from "../components/answerData2";
 import AnswerData from "../components/answerData";
+import sortToolWorkShow from "../components/sortToolWorkShow.vue";
 import EditorBar from "../tools/wangEnduit.vue";
 import Table from "../tools/table.vue";
 import Time from "../tools/time.vue";
@@ -12686,6 +12693,7 @@ export default {
     SeeBoard,
     AnswerData2,
     AnswerData,
+    sortToolWorkShow,
     Audio,
     ImgDraw,
     Table,

+ 7 - 0
src/components/studyStudent.vue

@@ -6604,6 +6604,11 @@
                       "
                       :people="checkJson[toolIndex]"
                     ></AnswerData>
+                      <!-- <sortToolWorkShow  v-if="
+                        checkJson[toolIndex].length &&
+                        (tool.sentenceList || tool.sentenceList.length > 0)
+                      "
+                      :people="checkJson[toolIndex]"></sortToolWorkShow> -->
                   </div>
                   <div
                     v-if="
@@ -12518,6 +12523,7 @@ import AskStatic from "./components/askStatic";
 import AskStatic2 from "./components/askStatic2";
 import AnswerData2 from "./components/answerData2";
 import AnswerData from "./components/answerData";
+import sortToolWorkShow from "./components/sortToolWorkShow.vue";
 import EditorBar from "./tools/wangEnduit.vue";
 import Table from "./tools/table.vue";
 import Time from "./tools/time.vue";
@@ -12623,6 +12629,7 @@ export default {
     SeeBoard,
     AnswerData2,
     AnswerData,
+    sortToolWorkShow,
     Audio,
     ImgDraw,
     Table,

+ 99 - 28
src/components/studySutdentClass/studyStudent.vue

@@ -9281,6 +9281,11 @@
                       "
                       :people="checkJson[toolIndex]"
                     ></AnswerData>
+                      <!-- <sortToolWorkShow  v-if="
+                        checkJson[toolIndex].length &&
+                        (tool.sentenceList || tool.sentenceList.length > 0)
+                      "
+                      :people="checkJson[toolIndex]"></sortToolWorkShow> -->
                   </div>
                   <div
                     v-if="
@@ -15824,6 +15829,7 @@ import AskStatic from "../components/askStatic";
 import AskStatic2 from "../components/askStatic2";
 import AnswerData2 from "../components/answerData2";
 import AnswerData from "../components/answerData";
+import sortToolWorkShow from "../components/sortToolWorkShow.vue";
 import EditorBar from "../tools/wangEnduit.vue";
 import Table from "../tools/table.vue";
 import Time from "../tools/time.vue";
@@ -15855,9 +15861,9 @@ import MarkdownIt from "markdown-it";
 import statisticalAnalysis from '../components/statisticalAnalysis.vue'
 import choseWorksDetailDialog from '../components/choseWorksDetailDialog.vue'
 import { v4 as uuidv4 } from "uuid";
-import markScore from "./commpont/markScore";
-import markDialog from "./commpont/markDialog";
-import evaTable from "./commpont/evaTable";
+import markScore from "../easy2/commpont/markScore";
+import markDialog from "../easy2/commpont/markDialog";
+import evaTable from "../easy2/commpont/evaTable";
 import choseWordCloud from '../components/choseWordCloud.vue'
 import appStoreC from "../components/appStoreC.vue";
 import cocoFlowDia from "../components/cocoFlowDia.vue";
@@ -15934,6 +15940,7 @@ export default {
     SeeBoard,
     AnswerData2,
     AnswerData,
+    sortToolWorkShow,
     Audio,
     ImgDraw,
     Table,
@@ -16656,38 +16663,102 @@ export default {
           this.AIloading[toolIndex][i].loading = false;
           continue;
         }
-        let msg = `NOTICE
-        Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
-        Language: ${this.getLang()}
-        ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
-        Instruction: Based on the context, follow "Format example", write content.
-
-        #目标#
-        你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
-        你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
-        你要结合<评价标准><评价细则>和<你判断的等级>写评语。
-        如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
-        ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
+        let msg = ''
+        if(con[i].type == 20){
+           msg = `#NOTICE#
+                  Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+            - 深入理解教育评价标准,准确判断对话内容是否符合要求。
+            - 具备较强的文本分析能力,从对话中有效提取评价相关信息。
+            - 拥有客观公正的态度,确保评分结果公平合理。
+            - 能够清晰准确地表达评语,使学生和教师易于理解。
+            - 熟悉各类学习作业的要求和重点,为评价提供依据。
+            - 掌握一定的教育教学知识,更好地分析对话在教育场景中的意义。 
+                  Language: ${this.getLang()}
+                  ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+                  Instruction: Based on the context, follow "Format example", write content.
+
+                  #目标#
+                  你要结合<作业内容><评价标准>和该标准对应的<等级>写评语。
+            ${con[i].type == 0 ? "提取图片内容进行评价" : ""} 
+                  #评分资料#
+                  评价标准:${std}
+                  评价细则:${laws}
+                  等级:${text}
+                  作业内容:${_fileid ? "上传的文件内容" : con[i].works}
+          具体你步骤如下:
+          1. 作业内容审查:仔细阅读需要评价的作业内容,标记出可能与评价相关的部分,如知识点的回答准确性、回答的完整性、语言表达的规范性等。
+          2. 掌握评价标准:阅读理解并掌握评价标准的结构与内容,包括评价维度、不同等级以及对应的评价细则的内容为评价标准。
+          3. 评分计算:针对提取的作业内容按照确定的评价标准,对标记出的评价相关部分进行量化打分,输出评分结果。
+          4. 评语生成:根据评分结果和对话中的具体情况,撰写评语,指出优点和不足之处,以帮助学生自查作业并为教师提供评价和指导依据。
+
+          ### 理论框架
+          ### 教育目标分类理论
+          1. 基本原理:
+          - 将教育目标按照不同的层次分类,如认知领域、情感领域和动作技能领域等。
+          - 有助于明确教学活动期望达成的目标类型。
+          - 为评价教学成果提供了分类框架。
+          2. 具体应用:
+          - 分析对话中涉及的目标类型,判断是否符合预期的教育目标。
+          - 依据不同目标类型的要求,评估对话对学生相应能力的促进作用。
+          - 对比不同对话内容在目标达成度上的差异进行评分。
+
+          ### 教学评价理论
+          1. 基本原理:
+          - 关注教学过程和结果的评价,包括对教师教学行为和学生学习成果的评价。
+          - 从多个维度进行评价,如教学内容、教学方法、学习效果等。
+          - 强调评价的客观性、全面性和发展性。
+          2. 具体应用:
+          - 从对话中提取与教学内容、方法相关的信息进行评价。
+          - 考量对话对学生学习效果的影响来给出评分。
+          - 根据评价结果提出改进和发展的建议。
+
+          ### 对话分析理论
+          1. 基本原理:
+          - 着重对对话结构、话语功能、交互模式等进行分析。
+          - 揭示对话中的信息流动、话语权分配等情况。
+          - 有助于理解对话参与者之间的关系和互动效果。
+          2. 具体应用:
+          - 剖析“小可ai助手”与学生对话的结构合理性。
+          - 分析话语功能是否有助于学习和评价目的。
+          - 根据交互模式判断对话是否有利于学生参与和学习,从而给出评分。
+              
+          #输出格式#
+
+          [${text}{'comment':'评语(150个汉字左右)'}]
+          注意检查输出评语不超过50字`
+        }else{
+          msg = `NOTICE
+            Role: 你是一个资深的教师,你有丰富的项目式学习、跨学科学习、STEAM导师经验,你要对学生的评价高度负责。
+            Language: ${this.getLang()}
+            ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced the "Format example".
+            Instruction: Based on the context, follow "Format example", write content.
 
+            #目标#
+            你要根据“六级评价细则”点评学生作品,并生成需要的JSON数据。
+            你要根据<评价细则>和<作业内容>的相关性评价作业,判断该作业属于六级中的哪个等级。
+            你要结合<评价标准><评价细则>和<你判断的等级>写评语。
+            如果作业内容与评价细则无关,则直接评为0星。如果作业内容与<任务描述>或<工具描述>一致或者相似,则直接评为0星,并输出评语“期待看到你自己的想法!必要时,可以请教老师哦~”
+            ${con[i].type == 0 ? "提取图片内容进行评价" : ""}
 
-        #评分资料#
-        评价标准:${std}
-        评价细则:${laws}
-        作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
-        任务描述:${taskDetail}
-        工具描述:${toolDetail}
 
+            #评分资料#
+            评价标准:${std}
+            评价细则:${laws}
+            作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
+            任务描述:${taskDetail}
+            工具描述:${toolDetail}
 
-        #输出要求#
-        输出每个评价标准角度的“等级”和作业的综合性“评语”。
-        “评语”控制在150字左右。
-        评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
 
-        #输出格式#
+            #输出要求#
+            输出每个评价标准角度的“等级”和作业的综合性“评语”。
+            “评语”控制在150字左右。
+            评价标准要按原样输出,严格按照输出格式输出json格式。只输出json格式的内容,其他内容不要输出!
 
-        [${text}{'comment':'评语(150个汉字左右)'}]
-        `;
+            #输出格式#
 
+            [${text}{'comment':'评语(150个汉字左右)'}]
+            `;
+        }
         let mk = `markSco${toolIndex}${i}`;
         let mkAwit = this.$refs[mk][0].aiupdetaSco(
           msg,