|
|
@@ -15,7 +15,7 @@
|
|
|
props.showData.choiceQuestionListData[props.showData.workIndex]
|
|
|
.teststitle
|
|
|
}}</div>
|
|
|
- <div class="c_t45_msg">
|
|
|
+ <div class="c_t45_msg" v-if="props.roleType == 1">
|
|
|
<div>{{ lang.ssAnswerCount }} {{ props.showData.workArray.length }}<span
|
|
|
v-if="props.showData.unsubmittedStudents.length > 0">/{{ props.showData.workArray.length +
|
|
|
props.showData.unsubmittedStudents.length
|
|
|
@@ -47,7 +47,7 @@
|
|
|
}">
|
|
|
<div id="echartsArea1" ref="echartsArea1"></div>
|
|
|
</div>
|
|
|
- <div class="aiAnalysis" v-if="props.workArray.length > 0">
|
|
|
+ <div class="aiAnalysis" v-if="props.workArray.length > 0 && props.roleType == 1">
|
|
|
<div class="ai_header">
|
|
|
<div class="ai_title">
|
|
|
<svg viewBox="0 0 1024 1024" width="200" height="200">
|
|
|
@@ -108,7 +108,7 @@
|
|
|
props.showData.choiceQuestionListData[props.showData.workIndex]
|
|
|
.teststitle
|
|
|
}}</div>
|
|
|
- <div class="c_t45_msg">
|
|
|
+ <div class="c_t45_msg" v-if="props.roleType == 1">
|
|
|
<div>{{ lang.ssAnswerCount }} {{ props.showData.workArray.length }}<span
|
|
|
v-if="props.showData.unsubmittedStudents.length > 0">/{{ props.showData.workArray.length +
|
|
|
props.showData.unsubmittedStudents.length
|
|
|
@@ -199,7 +199,7 @@
|
|
|
<div class="c_t15" v-if="workDetail && workDetail.type === '15' && props.showData">
|
|
|
<div class="c_t15_title">{{ workDetail.json.answerQ }}</div>
|
|
|
<span class="c_t15_type">{{ lang.ssQATest }}</span>
|
|
|
- <div class="c_t15_msg">
|
|
|
+ <div class="c_t15_msg" v-if="props.roleType == 1">
|
|
|
<div>{{ lang.ssAnswerCount }} {{ props.showData.workArray.length }}<span
|
|
|
v-if="props.showData.unsubmittedStudents.length > 0">/{{ props.showData.workArray.length +
|
|
|
props.showData.unsubmittedStudents.length
|
|
|
@@ -220,7 +220,7 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="aiAnalysis" style="margin-top:1rem ;"
|
|
|
- v-if="processedWorkArray.length > 0 && lookWorkData === null && workDetail.type === '15'"
|
|
|
+ v-if="processedWorkArray.length > 0 && lookWorkData === null && workDetail.type === '15' && props.roleType == 1"
|
|
|
@click.stop="clickContent(false)">
|
|
|
<div class="ai_header">
|
|
|
<div class="ai_title">
|
|
|
@@ -279,7 +279,7 @@
|
|
|
<div class="c_t15" v-if="workDetail && workDetail.type === '79' && props.showData">
|
|
|
<div class="c_t15_title">{{ workDetail.json.answerQ }}</div>
|
|
|
<span class="c_t15_type">{{ lang.ssPhoto }}</span>
|
|
|
- <div class="c_t15_msg">
|
|
|
+ <div class="c_t15_msg" v-if="props.roleType == 1">
|
|
|
<div>{{ lang.ssAnswerCount }} {{ props.showData.workArray.length }}<span
|
|
|
v-if="props.showData.unsubmittedStudents.length > 0">/{{ props.showData.workArray.length +
|
|
|
props.showData.unsubmittedStudents.length
|
|
|
@@ -342,7 +342,7 @@
|
|
|
<div class="c_t72" v-if="props.showData && props.showData.toolType === 72">
|
|
|
<div class="c_t72_title">{{ lang.ssAiApp }}</div>
|
|
|
<span class="c_t72_type">{{ lang.ssAiApp }}</span>
|
|
|
- <div class="c_t72_msg">
|
|
|
+ <div class="c_t72_msg" v-if="props.roleType == 1">
|
|
|
<div>{{ lang.ssAnswerCount }} {{ props.showData.workArray.length }}<span
|
|
|
v-if="props.showData.unsubmittedStudents.length > 0">/{{ props.showData.workArray.length +
|
|
|
props.showData.unsubmittedStudents.length
|
|
|
@@ -360,7 +360,7 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="aiAnalysis" style="margin-top:1rem ;"
|
|
|
- v-if="processedWorkArray.length > 0 && lookWorkData === null && props.showData.toolType === 72"
|
|
|
+ v-if="processedWorkArray.length > 0 && lookWorkData === null && props.showData.toolType === 72 && props.roleType == 1"
|
|
|
@click.stop="clickContent(false)">
|
|
|
<div class="ai_header">
|
|
|
<div class="ai_title">
|
|
|
@@ -442,7 +442,7 @@
|
|
|
<div class="c_t73" v-if="props.showData && props.showData.toolType === 73">
|
|
|
<div class="c_t73_title">{{ lang.ssPageImage }}</div>
|
|
|
<span class="c_t73_type">{{ lang.ssHPage }}</span>
|
|
|
- <div class="c_t73_msg">
|
|
|
+ <div class="c_t73_msg" v-if="props.roleType == 1">
|
|
|
<div>{{ lang.ssAnswerCount }} {{ props.showData.workArray.length }}<span
|
|
|
v-if="props.showData.unsubmittedStudents.length > 0">/{{ props.showData.workArray.length +
|
|
|
props.showData.unsubmittedStudents.length
|
|
|
@@ -504,6 +504,7 @@ const props = defineProps<{
|
|
|
workId: string;
|
|
|
cid: string;
|
|
|
workUrl: string;
|
|
|
+ roleType: number;
|
|
|
}>()
|
|
|
|
|
|
const emit = defineEmits<{
|
|
|
@@ -779,7 +780,7 @@ const setEchartsArea1 = () => {
|
|
|
fontSize: 17,
|
|
|
lineHeight: 20,
|
|
|
interval: 0,
|
|
|
- formatter: function (value: any, idx: number) {
|
|
|
+ formatter: function(value: any, idx: number) {
|
|
|
// 如果是字符串且格式为JSON(图片),则解析处理
|
|
|
if (typeof value === 'string') {
|
|
|
try {
|
|
|
@@ -1390,7 +1391,7 @@ const getWordCloud15 = () => {
|
|
|
const aiAnalysisRefresh72 = async () => {
|
|
|
|
|
|
let chatMsg = ``
|
|
|
- let agentId = 'a7741704-ba56-40b7-a6b8-62a423ef9376'
|
|
|
+ const agentId = 'a7741704-ba56-40b7-a6b8-62a423ef9376'
|
|
|
console.log('processedWorkArray.value', processedWorkArray.value)
|
|
|
processedWorkArray.value.forEach((i) => {
|
|
|
if (typeof i.content === 'object') {
|
|
|
@@ -1484,7 +1485,7 @@ ${a.content}\n`
|
|
|
}
|
|
|
else if (['6c56ec0e-2c74-11ef-bee5-005056b86db5', 'aea65da6-4399-11f1-9985-005056924926'].includes(props.userId)) {
|
|
|
|
|
|
- if(props.workUrl=='https://knowledge.cocorobo.cn/zh-CN/story-telling/a1a339d4-f522-4336-9aa9-e8394bea9731'){
|
|
|
+ if (props.workUrl == 'https://knowledge.cocorobo.cn/zh-CN/story-telling/a1a339d4-f522-4336-9aa9-e8394bea9731') {
|
|
|
msg = `# 角色定位
|
|
|
|
|
|
你是K-12阶段的AI课堂分析助手,负责基于学生对世界名画的英语宣传稿(promotional text)批改记录生成课堂学情分析报告。
|
|
|
@@ -1670,7 +1671,8 @@ ${a.content}\n`
|
|
|
当前页面答题数据(AI应用):【分析重点】
|
|
|
- AI应用
|
|
|
- 对话数据:${chatMsg}`
|
|
|
- }else if(props.workUrl=='https://knowledge.cocorobo.cn/zh-CN/story-telling/0d04cef1-876a-41b4-9768-6547088bc162'){
|
|
|
+ }
|
|
|
+ else if (props.workUrl == 'https://knowledge.cocorobo.cn/zh-CN/story-telling/0d04cef1-876a-41b4-9768-6547088bc162') {
|
|
|
msg = `# 角色定位
|
|
|
|
|
|
你是K-12阶段的AI课堂分析助手,负责基于学生词句训练对话记录生成课堂学情分析报告。
|
|
|
@@ -1832,110 +1834,110 @@ ${a.content}\n`
|
|
|
- 对话数据:${chatMsg}`
|
|
|
}
|
|
|
|
|
|
-// msg = `# 角色定位
|
|
|
-// 你是K-12阶段的AI课堂分析助手,负责基于学生词句训练对话记录生成课堂学情分析报告。
|
|
|
-// 本次分析的环节为:学生与AI就画作内容进行词句问答训练,分为 Level A、Level B、Level C 三个等级。
|
|
|
-// ---
|
|
|
-// # 重要:数据解读规则(必须在生成报告前完成)
|
|
|
-// 在输出任何报告内容之前,必须先完成以下两步结构化提取。
|
|
|
-// 所有报告数字必须来源于此,禁止前后矛盾。
|
|
|
-// ---
|
|
|
-// ## 第一步:逐学生提取数据
|
|
|
-// (此步骤为内部处理步骤,不输出提取结果。)
|
|
|
-// ### 等级识别
|
|
|
-// 从对话记录中的 sender 字段识别等级:
|
|
|
-// - sender 含"Level A" → Level A
|
|
|
-// - sender 含"Level B" → Level B
|
|
|
-// - sender 含"Level C" → Level C
|
|
|
-// ### 完成状态判断
|
|
|
-// - **完整完成**:所有句子/问题均有学生回应记录
|
|
|
-// - **部分完成**:至少一条学生回应,但未完成全部
|
|
|
-// - **未完成**:对话记录中仅有 AI 开场消息,无任何学生回应内容
|
|
|
-// ### Level A 提取项目
|
|
|
-// **主题覆盖性:** 检查学生是否主动提问了以下 6 个主题:
|
|
|
-// ① name ② artist ③ kind ④ scene ⑤ colours ⑥ why
|
|
|
-// - ✅ 已提问 / — 未提问
|
|
|
-// **问题准确性(语法):** 识别以下错误类型并记录人次:
|
|
|
-// - 疑问句结构错误 / 主谓一致错误 / 时态错误 / 其他
|
|
|
-// **创新性:** 6 个主题之外的问题,记录原文。
|
|
|
-// ### Level B 提取项目
|
|
|
-// **主题覆盖性:**(同 Level A,6个主题)
|
|
|
-// **问题准确性(语法):**(同 Level A)
|
|
|
-// ### Level C 提取项目
|
|
|
-// **流程完成性:** 逐句核对学生是否跟读了全部 6 个问句。
|
|
|
-// - ✅ 跟读基本正确 / ⚠️ 跟读明显偏差 / — 未跟读
|
|
|
-// **创新亮点:** 学生是否有自发延伸表达,记录原文。
|
|
|
-// ---
|
|
|
-// ## 第二步:汇总数据
|
|
|
-// 将所有学生数据按等级分组汇总。
|
|
|
-// **报告中所有数字必须与汇总表严格一致,禁止前后矛盾。**
|
|
|
-// ---
|
|
|
-// # 输出格式
|
|
|
-// ## 第一步输出
|
|
|
-// 输出以下一句话,然后立即继续输出完整报告,不得停止:
|
|
|
-// "正在逐个提取学生数据中,请稍候……"
|
|
|
-// ## 第二步输出:完整报告
|
|
|
-// 紧接上一句,输出以下完整报告内容:
|
|
|
-// ---
|
|
|
-// ## 词句问答训练 课堂学情分析报告
|
|
|
-// **数据来源:** 学生对话记录 | **统计人数:** X 人
|
|
|
-// ---
|
|
|
-// ### 一、分层总览
|
|
|
-// | 等级 | 人数 | 完整完成 | 主题覆盖率均值 | 语法问题人数 | 创新提问/亮点 |
|
|
|
-// |---|---|---|---|---|---|
|
|
|
-// | Level A | X | X人(XX%) | XX% | X人 | X人 |
|
|
|
-// | Level B | X | X人(XX%) | XX% | X人 | — |
|
|
|
-// | Level C | X | X人(XX%) | — | — | X人 |
|
|
|
-// [若有未完成学生:<span style="color:red">⚠️ 未完成学生:[姓名列表]</span>]
|
|
|
-// ---
|
|
|
-// ### 二、主题覆盖明细(Level A / B)
|
|
|
-// | 主题 | A 覆盖率 | B 覆盖率 |
|
|
|
-// |---|---|---|
|
|
|
-// | name | XX% | XX% |
|
|
|
-// | artist | XX% | XX% |
|
|
|
-// | kind | XX% | XX% |
|
|
|
-// | scene | XX% | XX% |
|
|
|
-// | colours | XX% | XX% |
|
|
|
-// | why | XX% | XX% |
|
|
|
-// *若本次无某等级学生,对应列填"—"。*
|
|
|
-// ---
|
|
|
-// ### 三、语法问题(Level A / B)
|
|
|
-// | 问题类型 | A 出现人次 | B 出现人次 |
|
|
|
-// |---|---|---|
|
|
|
-// | 疑问句结构错误 | X | X |
|
|
|
-// | 主谓一致错误 | X | X |
|
|
|
-// | 时态错误 | X | X |
|
|
|
-// | 其他 | X | X |
|
|
|
-// *若无语法问题,写:"本次无明显语法问题。✅"*
|
|
|
-// ---
|
|
|
-// ### 四、创新与亮点
|
|
|
-// **Level A 创新提问:**
|
|
|
-// [列出学生姓名及原文;若无,写"本次暂无。"]
|
|
|
-// **Level C 自发延伸:**
|
|
|
-// [列出学生姓名及原文;若无,写"本次暂无。"]
|
|
|
-// ---
|
|
|
-// ### 五、总结
|
|
|
-// **整体:** [1句,简述全班完成情况。]
|
|
|
-// **突出:** [1句,指出表现最好的维度或等级。]
|
|
|
-// **关注:** <span style="color:red">[1句,指出覆盖率最低的主题或问题最集中的点。]</span>
|
|
|
-// **跟进:** <span style="color:red">[列出需个别跟进的学生姓名及原因;若无,写"全员表现均衡,暂无需特别跟进。"]</span>
|
|
|
-// ---
|
|
|
-// # 注意事项
|
|
|
-// - 所有数字来源于结构化提取,输出前核对一致性,禁止前后矛盾。
|
|
|
-// - 对需要教师重点关注的内容使用 <span style="color:red"> 内容 </span> 高亮。
|
|
|
-// - 若某等级无学生数据,相关行/列填"—",不单独输出该等级报告。
|
|
|
-// - 禁止输出"如需进一步生成"等对话式内容。
|
|
|
-// - 不输出教学建议或干预措施。
|
|
|
-
|
|
|
-// #INPUT#
|
|
|
-// 课程数据:
|
|
|
-// - 课程名称:${props.courseDetail.title}
|
|
|
-// - 课程学科:${props.courseDetail.name}
|
|
|
-// - 需要提交人数:${props.showData.workArray.length + props.showData.unsubmittedStudents.length}
|
|
|
-// - 已提交人数:${props.showData.workArray.length}
|
|
|
-// 当前页面答题数据(AI应用):【分析重点】
|
|
|
-// - AI应用
|
|
|
-// - 对话数据:${chatMsg}`
|
|
|
+ // msg = `# 角色定位
|
|
|
+ // 你是K-12阶段的AI课堂分析助手,负责基于学生词句训练对话记录生成课堂学情分析报告。
|
|
|
+ // 本次分析的环节为:学生与AI就画作内容进行词句问答训练,分为 Level A、Level B、Level C 三个等级。
|
|
|
+ // ---
|
|
|
+ // # 重要:数据解读规则(必须在生成报告前完成)
|
|
|
+ // 在输出任何报告内容之前,必须先完成以下两步结构化提取。
|
|
|
+ // 所有报告数字必须来源于此,禁止前后矛盾。
|
|
|
+ // ---
|
|
|
+ // ## 第一步:逐学生提取数据
|
|
|
+ // (此步骤为内部处理步骤,不输出提取结果。)
|
|
|
+ // ### 等级识别
|
|
|
+ // 从对话记录中的 sender 字段识别等级:
|
|
|
+ // - sender 含"Level A" → Level A
|
|
|
+ // - sender 含"Level B" → Level B
|
|
|
+ // - sender 含"Level C" → Level C
|
|
|
+ // ### 完成状态判断
|
|
|
+ // - **完整完成**:所有句子/问题均有学生回应记录
|
|
|
+ // - **部分完成**:至少一条学生回应,但未完成全部
|
|
|
+ // - **未完成**:对话记录中仅有 AI 开场消息,无任何学生回应内容
|
|
|
+ // ### Level A 提取项目
|
|
|
+ // **主题覆盖性:** 检查学生是否主动提问了以下 6 个主题:
|
|
|
+ // ① name ② artist ③ kind ④ scene ⑤ colours ⑥ why
|
|
|
+ // - ✅ 已提问 / — 未提问
|
|
|
+ // **问题准确性(语法):** 识别以下错误类型并记录人次:
|
|
|
+ // - 疑问句结构错误 / 主谓一致错误 / 时态错误 / 其他
|
|
|
+ // **创新性:** 6 个主题之外的问题,记录原文。
|
|
|
+ // ### Level B 提取项目
|
|
|
+ // **主题覆盖性:**(同 Level A,6个主题)
|
|
|
+ // **问题准确性(语法):**(同 Level A)
|
|
|
+ // ### Level C 提取项目
|
|
|
+ // **流程完成性:** 逐句核对学生是否跟读了全部 6 个问句。
|
|
|
+ // - ✅ 跟读基本正确 / ⚠️ 跟读明显偏差 / — 未跟读
|
|
|
+ // **创新亮点:** 学生是否有自发延伸表达,记录原文。
|
|
|
+ // ---
|
|
|
+ // ## 第二步:汇总数据
|
|
|
+ // 将所有学生数据按等级分组汇总。
|
|
|
+ // **报告中所有数字必须与汇总表严格一致,禁止前后矛盾。**
|
|
|
+ // ---
|
|
|
+ // # 输出格式
|
|
|
+ // ## 第一步输出
|
|
|
+ // 输出以下一句话,然后立即继续输出完整报告,不得停止:
|
|
|
+ // "正在逐个提取学生数据中,请稍候……"
|
|
|
+ // ## 第二步输出:完整报告
|
|
|
+ // 紧接上一句,输出以下完整报告内容:
|
|
|
+ // ---
|
|
|
+ // ## 词句问答训练 课堂学情分析报告
|
|
|
+ // **数据来源:** 学生对话记录 | **统计人数:** X 人
|
|
|
+ // ---
|
|
|
+ // ### 一、分层总览
|
|
|
+ // | 等级 | 人数 | 完整完成 | 主题覆盖率均值 | 语法问题人数 | 创新提问/亮点 |
|
|
|
+ // |---|---|---|---|---|---|
|
|
|
+ // | Level A | X | X人(XX%) | XX% | X人 | X人 |
|
|
|
+ // | Level B | X | X人(XX%) | XX% | X人 | — |
|
|
|
+ // | Level C | X | X人(XX%) | — | — | X人 |
|
|
|
+ // [若有未完成学生:<span style="color:red">⚠️ 未完成学生:[姓名列表]</span>]
|
|
|
+ // ---
|
|
|
+ // ### 二、主题覆盖明细(Level A / B)
|
|
|
+ // | 主题 | A 覆盖率 | B 覆盖率 |
|
|
|
+ // |---|---|---|
|
|
|
+ // | name | XX% | XX% |
|
|
|
+ // | artist | XX% | XX% |
|
|
|
+ // | kind | XX% | XX% |
|
|
|
+ // | scene | XX% | XX% |
|
|
|
+ // | colours | XX% | XX% |
|
|
|
+ // | why | XX% | XX% |
|
|
|
+ // *若本次无某等级学生,对应列填"—"。*
|
|
|
+ // ---
|
|
|
+ // ### 三、语法问题(Level A / B)
|
|
|
+ // | 问题类型 | A 出现人次 | B 出现人次 |
|
|
|
+ // |---|---|---|
|
|
|
+ // | 疑问句结构错误 | X | X |
|
|
|
+ // | 主谓一致错误 | X | X |
|
|
|
+ // | 时态错误 | X | X |
|
|
|
+ // | 其他 | X | X |
|
|
|
+ // *若无语法问题,写:"本次无明显语法问题。✅"*
|
|
|
+ // ---
|
|
|
+ // ### 四、创新与亮点
|
|
|
+ // **Level A 创新提问:**
|
|
|
+ // [列出学生姓名及原文;若无,写"本次暂无。"]
|
|
|
+ // **Level C 自发延伸:**
|
|
|
+ // [列出学生姓名及原文;若无,写"本次暂无。"]
|
|
|
+ // ---
|
|
|
+ // ### 五、总结
|
|
|
+ // **整体:** [1句,简述全班完成情况。]
|
|
|
+ // **突出:** [1句,指出表现最好的维度或等级。]
|
|
|
+ // **关注:** <span style="color:red">[1句,指出覆盖率最低的主题或问题最集中的点。]</span>
|
|
|
+ // **跟进:** <span style="color:red">[列出需个别跟进的学生姓名及原因;若无,写"全员表现均衡,暂无需特别跟进。"]</span>
|
|
|
+ // ---
|
|
|
+ // # 注意事项
|
|
|
+ // - 所有数字来源于结构化提取,输出前核对一致性,禁止前后矛盾。
|
|
|
+ // - 对需要教师重点关注的内容使用 <span style="color:red"> 内容 </span> 高亮。
|
|
|
+ // - 若某等级无学生数据,相关行/列填"—",不单独输出该等级报告。
|
|
|
+ // - 禁止输出"如需进一步生成"等对话式内容。
|
|
|
+ // - 不输出教学建议或干预措施。
|
|
|
+
|
|
|
+ // #INPUT#
|
|
|
+ // 课程数据:
|
|
|
+ // - 课程名称:${props.courseDetail.title}
|
|
|
+ // - 课程学科:${props.courseDetail.name}
|
|
|
+ // - 需要提交人数:${props.showData.workArray.length + props.showData.unsubmittedStudents.length}
|
|
|
+ // - 已提交人数:${props.showData.workArray.length}
|
|
|
+ // 当前页面答题数据(AI应用):【分析重点】
|
|
|
+ // - AI应用
|
|
|
+ // - 对话数据:${chatMsg}`
|
|
|
|
|
|
|
|
|
}
|