Allen пре 4 месеци
родитељ
комит
a4be8e67f2

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/assets/FileSaver.min-EA9Zgbvn.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/assets/index-B4sGi5WB.css


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/assets/index-DzHlI3uv.js


+ 1 - 1
dist/assets/jszip.min-B8mxB0JC.js → dist/assets/jszip.min-CCsLEdGQ.js

@@ -1 +1 @@
-import{r as a,g as p}from"./index-CEyr_2JT.js";function f(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const i=Object.getOwnPropertyDescriptor(e,r);i&&Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var s=a();const c=p(s),g=f({__proto__:null,default:c},[s]);export{c as J,g as j};
+import{r as a,g as p}from"./index-DzHlI3uv.js";function f(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const i=Object.getOwnPropertyDescriptor(e,r);i&&Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var s=a();const c=p(s),g=f({__proto__:null,default:c},[s]);export{c as J,g as j};

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
dist/assets/pptxgen.es-D-yvXyx0.js


+ 2 - 2
dist/index.html

@@ -6,8 +6,8 @@
     <link rel="icon" href="/favicon.ico" sizes="any">
     <link rel="icon" href="/favicon.ico" sizes="any">
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
     <title>蜀道安全管理AI智能助手</title>
     <title>蜀道安全管理AI智能助手</title>
-    <script type="module" crossorigin src="/assets/index-CEyr_2JT.js"></script>
-    <link rel="stylesheet" crossorigin href="/assets/index-do3o3H5j.css">
+    <script type="module" crossorigin src="/assets/index-DzHlI3uv.js"></script>
+    <link rel="stylesheet" crossorigin href="/assets/index-B4sGi5WB.css">
   </head>
   </head>
   <body>
   <body>
     <div id="app"></div>
     <div id="app"></div>

+ 1 - 1
shudao-chat-go/conf/app.conf

@@ -53,7 +53,7 @@ base_url = "https://aqai.shudaodsj.com:22000"
 # auth_api_url = "https://aqai.shudaodsj.com:22000/api/auth/verify"
 # auth_api_url = "https://aqai.shudaodsj.com:22000/api/auth/verify"
 
 
 # 测试环境:如果认证服务在本地
 # 测试环境:如果认证服务在本地
-auth_api_url = "https://aqai.shudaodsj.com:22000/api/auth/verify"
+auth_api_url = "http://127.0.0.1:28004/api/auth/verify"
 
 
 # oss配置
 # oss配置
 
 

+ 1 - 1
src/services/audioTranscription.js

@@ -2,7 +2,7 @@ import axios from 'axios'
 import { getToken, getTokenType } from '@/utils/auth'
 import { getToken, getTokenType } from '@/utils/auth'
 
 
 const DEFAULT_TEST_BASE = 'http://172.16.35.50:8000'
 const DEFAULT_TEST_BASE = 'http://172.16.35.50:8000'
-const DEFAULT_PROD_BASE = 'http://aqai.shudaodsj.com:22001'
+const DEFAULT_PROD_BASE = 'https://aqai.shudaodsj.com:22001'
 
 
 function resolveBaseURL() {
 function resolveBaseURL() {
   if (import.meta.env?.VITE_AUDIO_API_BASE) {
   if (import.meta.env?.VITE_AUDIO_API_BASE) {

+ 1 - 1
src/utils/ticketAuth.js

@@ -4,7 +4,7 @@
  */
  */
 
 
 // 票据处理接口(直接使用完整URL)测试环境
 // 票据处理接口(直接使用完整URL)测试环境
-const TICKET_PROCESS_API = 'https://aqai.shudaodsj.com:22001/api/ticket/process'
+const TICKET_PROCESS_API = 'http://aqai.shudaodsj.com:22001/api/ticket/process'
 
 
 // ===== 关键修复:在模块加载时立即保存原始 URL =====
 // ===== 关键修复:在模块加载时立即保存原始 URL =====
 // 防止其他请求(如 axios 拦截器)在认证完成前跳转导致票据丢失
 // 防止其他请求(如 axios 拦截器)在认证完成前跳转导致票据丢失

+ 0 - 168
src/views/SafetyHazard.vue

@@ -10183,175 +10183,7 @@ const generateNewOutline = async () => {
 
 
 }
 }
 
 
-// 生成考题
-const generateExam = async () => {
-  try {
-    // 检查是否有大纲数据
-    if (!outlineData.value || outlineData.value.length === 0) {
-      ElMessage.warning('请先生成大纲内容')
-      return
-    }
-
-    // 设置生成状态
-    isGeneratingExam.value = true
-    isProcessing.value = true
-
-    // 将大纲数据转换为markdown格式
-    const markdownContent = convertOutlineToMarkdown(outlineData.value, outlineTitle.value)
-
-    // 构建考试生成提示词
-    const prompt = `请基于以下安全培训大纲内容生成一份考试试卷:
-
-大纲标题:${outlineTitle.value}
-
-大纲内容:
-${markdownContent}
-
-请生成一份包含以下题型的考试试卷:
-- 单选题:5题,每题5分,共25分
-- 判断题:5题,每题3分,共15分  
-- 多选题:5题,每题8分,共40分
-- 简答题:2题,每题10分,共20分
-
-试卷总分:100分
-
-请严格按照以下JSON格式返回试卷内容,不要包含任何其他文字:
-
-{
-  "title": "${outlineTitle.value} - 安全培训考试",
-  "totalScore": 100,
-  "totalQuestions": 17,
-  "singleChoice": {
-    "scorePerQuestion": 5,
-    "totalScore": 25,
-    "count": 5,
-    "questions": [
-      {
-        "text": "题目内容",
-        "options": [
-          {"key": "A", "text": "选项A内容"},
-          {"key": "B", "text": "选项B内容"},
-          {"key": "C", "text": "选项C内容"},
-          {"key": "D", "text": "选项D内容"}
-        ],
-        "selectedAnswer": "正确答案选项(A/B/C/D)"
-      }
-    ]
-  },
-  "judge": {
-    "scorePerQuestion": 3,
-    "totalScore": 15,
-    "count": 5,
-    "questions": [
-      {
-        "text": "题目内容",
-        "selectedAnswer": "正确答案(正确/错误)"
-      }
-    ]
-  },
-  "multiple": {
-    "scorePerQuestion": 8,
-    "totalScore": 40,
-    "count": 5,
-    "questions": [
-      {
-        "text": "题目内容",
-        "options": [
-          {"key": "A", "text": "选项A内容"},
-          {"key": "B", "text": "选项B内容"},
-          {"key": "C", "text": "选项C内容"},
-          {"key": "D", "text": "选项D内容"}
-        ],
-        "selectedAnswers": ["正确答案选项1", "正确答案选项2"]
-      }
-    ]
-  },
-  "short": {
-    "scorePerQuestion": 10,
-    "totalScore": 20,
-    "count": 2,
-    "questions": [
-      {
-        "text": "题目内容",
-        "outline": {
-          "keyFactors": "答题要点、关键因素、示例答案"
-        }
-      }
-    ]
-  }
-}
-
-注意:
-1. 所有题目内容必须基于提供的大纲内容
-2. 题目难度适中,符合安全培训考试要求
-3. 严格按照JSON格式返回,不要有多余字符
-4. 单选题和判断题的选项要合理
-5. 多选题至少要有2个正确答案
-6. 简答题要提供清晰的答题要点
-7. 必须为每道题设置正确答案
-8. 简答题答案字数不超过500字`
-
-    console.log('发送给AI的考试生成提示词:', prompt)
-
-    // 调用AI接口
-    const response = await apis.reProduceSingleQuestion({
-
-      message: prompt
-
-    })
-
-    if (response.statusCode === 200) {
-      const aiReply = response.data.reply
-      const aiConversationId = response.data.ai_conversation_id
-      console.log('AI生成的考试试卷:', aiReply)
-      console.log('AI对话ID:', aiConversationId)
-
-      // 保存对话ID
-      ai_conversation_id.value = aiConversationId
-
-      // 解析AI回复并生成试卷
-      const generatedExam = parseAIExamResponse(aiReply)
-
-      // 直接导出考试文件
-      exportExamToFile(generatedExam)
-
-      ElMessage.success('考试试卷生成完成!')
-
-    } else {
-      throw new Error('AI接口调用失败')
-    }
-
-  } catch (error) {
-    console.error('生成考题失败:', error)
-    ElMessage.error('生成考题失败,请重试')
-  } finally {
-    // 重置生成状态
-    isGeneratingExam.value = false
-    isProcessing.value = false
-  }
-}
-
-// 解析AI考试回复
-const parseAIExamResponse = (aiReply) => {
-  try {
-    // 尝试提取JSON内容
-    const jsonMatch = aiReply.match(/\{[\s\S]*\}/)
-    if (jsonMatch) {
-      const examData = JSON.parse(jsonMatch[0])
 
 
-      // 确保所有题目都有正确的初始值
-      ensureQuestionInitialValues(examData)
-
-      return examData
-    } else {
-      throw new Error('未找到有效的JSON数据')
-    }
-  } catch (error) {
-    console.error('解析AI回复失败:', error)
-    // 返回默认试卷结构
-    return generateDefaultExam()
-  }
-}
 
 
 // 确保题目初始值正确
 // 确保题目初始值正确
 const ensureQuestionInitialValues = (examData) => {
 const ensureQuestionInitialValues = (examData) => {

+ 5 - 5
src/views/mobile/m-AIWriting.vue

@@ -235,8 +235,8 @@ const tabs = [
   { key: "all", name: "全部" },
   { key: "all", name: "全部" },
   { key: "announcement", name: "公告" },
   { key: "announcement", name: "公告" },
   { key: "notification", name: "通知" },
   { key: "notification", name: "通知" },
-  { key: "summary", name: "总结报告" },
-  { key: "meeting", name: "会议纪要" },
+  { key: "summary", name: "总结" },
+  { key: "meeting", name: "会议" },
   { key: "speech", name: "决定" },
   { key: "speech", name: "决定" },
 ];
 ];
 
 
@@ -290,13 +290,13 @@ const filteredTemplates = computed(() => {
 const getDescription = (name) => {
 const getDescription = (name) => {
   switch (name) {
   switch (name) {
     case '公告模板':
     case '公告模板':
-      return '适用于公开发布的各类信息公告'
+      return '适用于各类信息公告'
     case '通知模板':
     case '通知模板':
-      return '适用于各类通知公文,快速生成规范通知'
+      return '适用于各类通知公文'
     case '工作汇报模板':
     case '工作汇报模板':
       return '适用于各类工作汇报'
       return '适用于各类工作汇报'
     case '会议纪要模版':
     case '会议纪要模版':
-      return '适用于正式会议的记录与事项梳理'
+      return '适用于正式会议的记录'
     case '决定模版':
     case '决定模版':
       return '适用于各类专业的决定文稿'
       return '适用于各类专业的决定文稿'
     default:
     default:

+ 0 - 143
src/views/mobile/m-SafetyHazard.vue

@@ -1734,149 +1734,6 @@ const getDisplayChapterTitle = (title, index) => {
   return title.includes('第') ? title : `第${index + 1}章 ${title}`
   return title.includes('第') ? title : `第${index + 1}章 ${title}`
 }
 }
 
 
-const generateExam = async () => {
-  try {
-    // 检查是否有大纲内容
-    if (!aiOutlineContent.value) {
-      showToastMessage('请先生成大纲内容')
-      return
-    }
-
-    // 设置生成状态
-    isGeneratingExam.value = true
-
-    // 将大纲HTML内容转换为markdown格式
-    const markdownContent = convertOutlineToMarkdownFromHTML(aiOutlineContent.value, outlineTitle.value || '安全培训大纲')
-
-    // 构建考试生成提示词(使用PC端相同的格式)
-    const prompt = `请基于以下安全培训大纲内容生成一份考试试卷:
-
-大纲标题:${outlineTitle.value || '安全培训大纲'}
-
-大纲内容:
-${markdownContent}
-
-请生成一份包含以下题型的考试试卷:
-- 单选题:5题,每题5分,共25分
-- 判断题:5题,每题3分,共15分  
-- 多选题:5题,每题8分,共40分
-- 简答题:2题,每题10分,共20分
-
-试卷总分:100分
-
-请严格按照以下JSON格式返回试卷内容,不要包含任何其他文字:
-
-{
-  "title": "${outlineTitle.value || '安全培训大纲'} - 安全培训考试",
-  "totalScore": 100,
-  "totalQuestions": 17,
-  "singleChoice": {
-    "scorePerQuestion": 5,
-    "totalScore": 25,
-    "count": 5,
-    "questions": [
-      {
-        "text": "题目内容",
-        "options": [
-          {"key": "A", "text": "选项A内容"},
-          {"key": "B", "text": "选项B内容"},
-          {"key": "C", "text": "选项C内容"},
-          {"key": "D", "text": "选项D内容"}
-        ],
-        "selectedAnswer": "正确答案选项(A/B/C/D)"
-      }
-    ]
-  },
-  "judge": {
-    "scorePerQuestion": 3,
-    "totalScore": 15,
-    "count": 5,
-    "questions": [
-      {
-        "text": "题目内容",
-        "selectedAnswer": "正确答案(正确/错误)"
-      }
-    ]
-  },
-  "multiple": {
-    "scorePerQuestion": 8,
-    "totalScore": 40,
-    "count": 5,
-    "questions": [
-      {
-        "text": "题目内容",
-        "options": [
-          {"key": "A", "text": "选项A内容"},
-          {"key": "B", "text": "选项B内容"},
-          {"key": "C", "text": "选项C内容"},
-          {"key": "D", "text": "选项D内容"}
-        ],
-        "selectedAnswers": ["正确答案选项1", "正确答案选项2"]
-      }
-    ]
-  },
-  "short": {
-    "scorePerQuestion": 10,
-    "totalScore": 20,
-    "count": 2,
-    "questions": [
-      {
-        "text": "题目内容",
-        "outline": {
-          "keyFactors": "答题要点、关键因素、示例答案"
-        }
-      }
-    ]
-  }
-}
-
-注意:
-1. 所有题目内容必须基于提供的大纲内容
-2. 题目难度适中,符合安全培训考试要求
-3. 严格按照JSON格式返回,不要有多余字符
-4. 单选题和判断题的选项要合理
-5. 多选题至少要有2个正确答案
-6. 简答题要提供清晰的答题要点
-7. 必须为每道题设置正确答案
-8. 简答题答案字数不超过500字`
-
-    console.log('发送给AI的考试生成提示词:', prompt)
-
-    // 调用AI接口(使用PC端相同的参数)
-    const response = await apis.reProduceSingleQuestion({
-
-message: prompt
-
-})
-    if (response.statusCode === 200) {
-      const aiReply = response.data.reply
-      const aiConversationId = response.data.ai_conversation_id
-      console.log('AI生成的考试试卷:', aiReply)
-      console.log('AI对话ID:', aiConversationId)
-
-      // 保存对话ID
-      ai_conversation_id.value = aiConversationId
-
-      // 解析AI回复并生成试卷(使用PC端相同的函数)
-      const generatedExam = parseAIExamResponse(aiReply)
-
-      // 直接导出考试文件(PC端安全培训逻辑)
-      exportExamToFile(generatedExam)
-
-      showToastMessage('考试试卷生成完成!')
-
-    } else {
-      throw new Error('AI接口调用失败')
-    }
-
-  } catch (error) {
-    console.error('生成考题失败:', error)
-    showToastMessage('生成考题失败,请重试')
-  } finally {
-    // 重置生成状态
-    isGeneratingExam.value = false
-  }
-}
 
 
 // 复制整个大纲(完全按PC端实现)
 // 复制整个大纲(完全按PC端实现)
 // 复制整个大纲(按PC端逻辑处理所有层级)
 // 复制整个大纲(按PC端逻辑处理所有层级)

Неке датотеке нису приказане због велике количине промена