Ver código fonte

feat:行为记录增加对AI对话的记录

白白 1 ano atrás
pai
commit
20d6ff9fc0

+ 16 - 7
src/components/AIChatter/AIChatter.vue

@@ -59,6 +59,7 @@
               v-model="data.questionContent"
               ref="inputRef"
               :placeholder="`Message ${data.model} ...`"
+              @focus="handleFocus"
           >
           </el-input>
           <el-button
@@ -103,6 +104,7 @@
   import {ArrowDown, Top} from '@element-plus/icons-vue'
   import {ElMessage} from "element-plus";
   import emitter from "@/utils/emitter";
+  import dayjs from "dayjs";
 
   // const svg = `
   //       <path class="path" d="
@@ -231,13 +233,12 @@
   // 发送问题
   const handleSendQuestion = () => {
     // 触发行为记录
-    // emitter.emit("click-ai-send-button", {
-    //   date: Date.now(),
-    //   userId: store.user.id,
-    //   info: `第${AICount.value+1}次点击了AI提问按钮`,
-    //   eventId: `${store.user.id}_${Date.now()}`,
-    //   type: "AIChatter"
-    // })
+    emitter.emit("click-ai-send-button", {
+      insert: data.questionContent,
+      type: "AIChatter",
+      startTime: startTime,
+      endTime: dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss.SSS")
+    })
     //限制会话次数
     if(AICount.value<10){
       AICount.value++
@@ -332,6 +333,14 @@
   // }
 
 
+  let startTime = null;
+  // 用于记录AI对话的开始时间
+  const handleFocus = () => {
+    startTime = dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss.SSS")
+    console.log(startTime)
+  }
+
+
 </script>
 
 <script lang="ts">

+ 9 - 3
src/components/QuillEditor/QuillEditor.vue

@@ -33,11 +33,12 @@
   // 行为记录
   let changeRecordList = reactive([])
 
+  // 作文内容发生变化时,触发
   emitter.on('change-record', (value) => {
     changeRecordList.push(value)
   })
 
-  // 点击暂存按钮
+  // 点击暂存按钮时,触发行为记录保存
   emitter.on('click-stage', () => {
     if(changeRecordList.length > 0){
       download()
@@ -45,6 +46,11 @@
     }
   })
 
+  // 向AI发送问题后触发
+  emitter.on("click-ai-send-button", (event: any) => {
+    changeRecordList.push(event)
+  });
+
   const handleKeydown = (event: KeyboardEvent) => {
     // 增加对Shift组合键的识别
     // 在handleKeyup中增加对组合键的识别
@@ -212,13 +218,12 @@
       type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
     })
 
-    // 创建 File 对象并设置文件名(添加时间戳防止重复)
     const filename = `行为记录.xlsx`
     const file = new File([blob], filename, { type: blob.type })
     if(assignmentId != null){
       apis.addBehaviorRecord(assignmentId, file)
           .then(res => {
-            console.log(res.data.data)
+            // console.log(res.data.data)
           })
           .catch(err => {
             ElMessage.error("行为记录异常,请联系老师处理!")
@@ -230,6 +235,7 @@
   onUnmounted(() => {
     emitter.off("change-record")
     emitter.off("click-stage")
+    emitter.off("click-ai-send-button")
     if(changeRecordList.length > 0){
       download()
     }

+ 9 - 11
src/views/EditPage/userWritingRecord.ts

@@ -6,19 +6,17 @@ import {ref} from "vue";
 export let isModified = ref(false)
 
 // 处理word区鼠标移动的记录
-export const setupWordMouseMoveListener = (indexedDB: IndexedDB) => {
-    emitter.on("word-mouse-move", (event: any) => {
-        // indexedDB.addData(event)
-        // console.log(event);
-    });
-};
+// export const setupWordMouseMoveListener = (indexedDB: IndexedDB) => {
+//     emitter.on("word-mouse-move", (event: any) => {
+//         // indexedDB.addData(event)
+//         // console.log(event);
+//     });
+// };
 
 
 // 处理AI对话点击发送按钮事件的监听函数
 export const setupClickAISendButtonListener = (indexedDB: IndexedDB) => {
-    emitter.on("click-ai-send-button", (event: any) => {
-        // indexedDB.addData(event)
-    });
+
 };
 
 // 处理is-modified事件的监听函数
@@ -35,7 +33,7 @@ export const registerAllEventListeners = (indexedDB: IndexedDB) => {
     // 后续若有其他事件监听,在此处添加调用对应的设置函数即可
     setupClickAISendButtonListener(indexedDB);
     setupIsModifiedListener();
-    setupWordMouseMoveListener(indexedDB)
+    // setupWordMouseMoveListener(indexedDB)
 };
 
 // 统一移除所有事件监听的函数
@@ -43,5 +41,5 @@ export const removeAllEventListeners = () => {
     // 后续如有更多事件监听,在此处添加移除对应事件的代码
     emitter.off("click-ai-send-button");
     emitter.off("is-modified");
-    emitter.off("word-mouse-move");
+    // emitter.off("word-mouse-move");
 };