|
@@ -165,7 +165,16 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div
|
|
|
- :class="['refresh',(loading ||aggregateLoading ||aiLoading ||teacherLoading ||contrastLoading)?'refreshDisabled':'']"
|
|
|
+ :class="[
|
|
|
+ 'refresh',
|
|
|
+ loading ||
|
|
|
+ aggregateLoading ||
|
|
|
+ aiLoading ||
|
|
|
+ teacherLoading ||
|
|
|
+ contrastLoading
|
|
|
+ ? 'refreshDisabled'
|
|
|
+ : '',
|
|
|
+ ]"
|
|
|
@click.stop="refresh()"
|
|
|
v-loading="
|
|
|
loading ||
|
|
@@ -197,6 +206,7 @@ export default {
|
|
|
checkUrl: "",
|
|
|
doUrl: "",
|
|
|
},
|
|
|
+ bmData:null,
|
|
|
editorBarData: {
|
|
|
type: 0,
|
|
|
content: "",
|
|
@@ -251,11 +261,18 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
refresh() {
|
|
|
- if(this.loading || this.aggregateLoading || this.aiLoading || this.teacherLoading || this.contrastLoading)return;
|
|
|
- this.getData();
|
|
|
+ if (
|
|
|
+ this.loading ||
|
|
|
+ this.aggregateLoading ||
|
|
|
+ this.aiLoading ||
|
|
|
+ this.teacherLoading ||
|
|
|
+ this.contrastLoading
|
|
|
+ )
|
|
|
+ return;
|
|
|
+ this.getData(true);
|
|
|
},
|
|
|
// 获取绑定的testId
|
|
|
- getBindTestId() {
|
|
|
+ getBindTestId(flag = false) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
if (this.loading || !this.tid) return;
|
|
|
this.loading = true;
|
|
@@ -270,9 +287,20 @@ export default {
|
|
|
if (_result) {
|
|
|
let _jsonData = JSON.parse(_result);
|
|
|
let baseMessage = _jsonData[0];
|
|
|
- let _bmJsonData = JSON.parse(baseMessage.jsonData);
|
|
|
- let _testData = _bmJsonData.testData;
|
|
|
- this.editorBarData = _bmJsonData.editorBarData;
|
|
|
+ baseMessage.jsonData = JSON.parse(baseMessage.jsonData);
|
|
|
+ let _testData = baseMessage.jsonData.testData;
|
|
|
+ this.editorBarData = baseMessage.jsonData.editorBarData;
|
|
|
+ this.bmData = baseMessage;
|
|
|
+ if(!flag){//判断是否是需要生成数据
|
|
|
+ if(baseMessage.jsonData.contrastObservationData){//如果有这个字段则只取里面的数据
|
|
|
+ let _data = baseMessage.jsonData.contrastObservationData;
|
|
|
+ this.aggregateData=_data.aggregateData;
|
|
|
+ this.aiData=_data.aiData;
|
|
|
+ this.teacherData=_data.teacherData;
|
|
|
+ this.contrastData=_data.contrastData;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
if (_testData) {
|
|
|
this.testId = _testData;
|
|
|
resolve();
|
|
@@ -332,7 +360,7 @@ export default {
|
|
|
getTeacherResultData() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
if (this.teacherLoading || !this.testData) return;
|
|
|
- if(!this.testData>0)return this.$message.error("绑定的表单无数据")
|
|
|
+ if (!this.testData > 0) return this.$message.error("绑定的表单无数据");
|
|
|
this.teacherLoading = true;
|
|
|
this.teacherData = [];
|
|
|
let _workData = [];
|
|
@@ -504,8 +532,7 @@ export default {
|
|
|
_workText += `问答题:\n总分:${i.score}分\n题目:${i.title}\n答案:${i.answer}\n答题与次数:\n${_userAnswerText}\n\n`;
|
|
|
}
|
|
|
});
|
|
|
- let _msg =
|
|
|
-`NOTICE
|
|
|
+ let _msg = `NOTICE
|
|
|
Role: 你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。
|
|
|
Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
|
|
|
ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
|
|
@@ -598,8 +625,8 @@ ${this.editorBarData.type == 0 ? this.editorBarData.content : ""}
|
|
|
"basis":["基于【课堂观察报告】中每个模块的分析数据,提供对应的评分依据,也就是支持你结论的数据。列举出至少3个依据。使用"]
|
|
|
},
|
|
|
]`;
|
|
|
-// console.log("👇教师观察")
|
|
|
-// console.log(_msg)
|
|
|
+ // console.log("👇教师观察")
|
|
|
+ // console.log(_msg)
|
|
|
const _uuid = uuidv4();
|
|
|
let params = {
|
|
|
model: "gpt-3.5-turbo",
|
|
@@ -659,29 +686,28 @@ ${this.editorBarData.type == 0 ? this.editorBarData.content : ""}
|
|
|
getAiResultData() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
if (this.aiLoading || this.loading) return;
|
|
|
- if (!this.classroomObservationData.length > 0){
|
|
|
- return this.getClassroomObservationData().then(_=>{
|
|
|
- this.getAiResultData().then(_=>{
|
|
|
+ if (!this.classroomObservationData.length > 0) {
|
|
|
+ return this.getClassroomObservationData().then((_) => {
|
|
|
+ this.getAiResultData().then((_) => {
|
|
|
resolve();
|
|
|
});
|
|
|
- })
|
|
|
- };
|
|
|
+ });
|
|
|
+ }
|
|
|
this.aiLoading = true;
|
|
|
this.aiData = [];
|
|
|
let _workText = ``; //转换的提示词
|
|
|
let _sum = 0;
|
|
|
- this.classroomObservationData.forEach(i=>{
|
|
|
- if([0,1,2].includes(i.Type)){
|
|
|
+ this.classroomObservationData.forEach((i) => {
|
|
|
+ if ([0, 1, 2].includes(i.Type)) {
|
|
|
let _jsonObj = JSON.parse(i.jsonData);
|
|
|
- if(!_jsonObj.courseName){
|
|
|
- if(_jsonObj.name!=="课堂记录"){
|
|
|
- _workText+=`名称:${_jsonObj.name}\n分析内容:${_jsonObj.content}\n\n`
|
|
|
- }
|
|
|
+ if (!_jsonObj.courseName) {
|
|
|
+ if (_jsonObj.name !== "课堂记录") {
|
|
|
+ _workText += `名称:${_jsonObj.name}\n分析内容:${_jsonObj.content}\n\n`;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- })
|
|
|
- let _msg =
|
|
|
-`NOTICE
|
|
|
+ });
|
|
|
+ let _msg = `NOTICE
|
|
|
Role: 你是专业的教育评估专家,熟悉教学评估的六个维度,了解如何从课堂观察报告中提取关键信息,并进行深入分析。
|
|
|
Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
|
|
|
ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
|
|
@@ -969,10 +995,11 @@ ${_aiWorkText}
|
|
|
let _result = JSON.parse(_jsonData);
|
|
|
|
|
|
this.contrastData = _result;
|
|
|
+ resolve();
|
|
|
})
|
|
|
.catch((e) => {
|
|
|
console.log(e);
|
|
|
- this.$message.error("生成ai观察结果失败");
|
|
|
+ this.$message.error("生成对比观察结果失败");
|
|
|
})
|
|
|
.finally((_) => {
|
|
|
this.contrastLoading = false;
|
|
@@ -1069,6 +1096,7 @@ ${_aiWorkText}
|
|
|
let _data = res.data.FunctionResponse.choices[0];
|
|
|
let _result = _data.message.content;
|
|
|
this.aggregateData.message = _result;
|
|
|
+ resolve();
|
|
|
// let _jsonData = _data.message.content;
|
|
|
// _jsonData = _jsonData.replaceAll("```json", "").replaceAll("```", "");
|
|
|
// let _result = JSON.parse(_jsonData);
|
|
@@ -1076,7 +1104,7 @@ ${_aiWorkText}
|
|
|
})
|
|
|
.catch((e) => {
|
|
|
console.log(e);
|
|
|
- this.$message.error("生成总结数据对比");
|
|
|
+ this.$message.error("生成总结数据对比失败");
|
|
|
})
|
|
|
.finally((_) => {
|
|
|
this.aggregateLoading = false;
|
|
@@ -1112,14 +1140,14 @@ ${_aiWorkText}
|
|
|
this.teacherData.forEach((i) => {
|
|
|
if (i.title in _titleList) {
|
|
|
let _scoreStr = i.score;
|
|
|
- _scoreStr=parseInt(_scoreStr.replaceAll('分',''))
|
|
|
+ _scoreStr = parseInt(_scoreStr.replaceAll("分", ""));
|
|
|
_teacherData.value[_titleList[i.title]] = parseInt(_scoreStr);
|
|
|
}
|
|
|
});
|
|
|
this.aiData.forEach((i) => {
|
|
|
if (i.title in _titleList) {
|
|
|
let _scoreStr = i.score;
|
|
|
- _scoreStr=parseInt(_scoreStr.replaceAll('分',''))
|
|
|
+ _scoreStr = parseInt(_scoreStr.replaceAll("分", ""));
|
|
|
_aiData.value[_titleList[i.title]] = parseInt(_scoreStr);
|
|
|
}
|
|
|
});
|
|
@@ -1127,20 +1155,51 @@ ${_aiWorkText}
|
|
|
this.aggregateData.chartData = _chartData;
|
|
|
},
|
|
|
//获取
|
|
|
- getData() {
|
|
|
+ getData(flag = false) {
|
|
|
// 获取观察所绑定的表单
|
|
|
- this.getBindTestId().then((_) => {
|
|
|
+ this.getBindTestId(flag).then((_) => {
|
|
|
// 后去表单的数据
|
|
|
this.getBindTestData().then((_) => {
|
|
|
- Promise.all([
|
|
|
- this.getTeacherResultData(),
|
|
|
- this.getAiResultData(),
|
|
|
- ]).then((_) => {
|
|
|
- this.getAggregateChartData();
|
|
|
- this.getContrastResultData();
|
|
|
- this.getAggregateResultData();
|
|
|
+ Promise.all([
|
|
|
+ this.getTeacherResultData(),
|
|
|
+ this.getAiResultData(),
|
|
|
+ ]).then((_) => {
|
|
|
+ this.getAggregateChartData();
|
|
|
+ Promise.all([this.getContrastResultData(),this.getAggregateResultData()]).then(_=>{
|
|
|
+ this.saveData()
|
|
|
+ })
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //储存数据
|
|
|
+ saveData() {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ let _saveData = JSON.parse(JSON.stringify(this.bmData));
|
|
|
+ _saveData.jsonData.contrastObservationData = {
|
|
|
+ aggregateData: this.aggregateData,
|
|
|
+ aiData: this.aiData,
|
|
|
+ teacherData: this.teacherData,
|
|
|
+ contrastData: this.contrastData,
|
|
|
+ }
|
|
|
+ let params = {
|
|
|
+ id: _saveData.id,
|
|
|
+ json_data: JSON.stringify(_saveData.jsonData),
|
|
|
+ };
|
|
|
+ // console.log(params)
|
|
|
+ // return resolve();
|
|
|
+ this.ajax
|
|
|
+ .post(
|
|
|
+ "https://gpt4.cocorobo.cn/update_classroom_observation",
|
|
|
+ params
|
|
|
+ )
|
|
|
+ .then((res) => {
|
|
|
+ this.$message.success("保存数据成功")
|
|
|
+ resolve();
|
|
|
+ }).catch(e=>{
|
|
|
+ console.log(e);
|
|
|
+ this.$message.info('保存数据失败')
|
|
|
});
|
|
|
- });
|
|
|
});
|
|
|
},
|
|
|
},
|
|
@@ -1182,7 +1241,7 @@ ${_aiWorkText}
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
|
|
|
-.refreshDisabled{
|
|
|
+.refreshDisabled {
|
|
|
cursor: not-allowed;
|
|
|
}
|
|
|
|