refactor(ai): 重构AI客户端类并添加句子分析接口

- 将 DifyArticleClient 重命名为 DifyClient,调整相关调用引用
- 增加 sendSentenceAnalyze 方法,实现批量词汇句子分析功能
- 更新配置文件,新增 analyzeKey 和 sentenceKey 两个AI接口密钥配置
- 修改LessonPlansServiceImpl中生成连词成句功能,调用新句子分析接口
- 优化LessonPlanConstant常量,调整部分键名格式,去除空格
- 修改相关测试类适配 DifyClient 改动
- 相关VO类添加学生姓名和试题名称字段,丰富展示数据
- 更新前端table组件,替换显示学生姓名、班级名、年级名等信息字段
- 调整路由首页路径为“/”,修改Header组件对应链接
- 其他若干细节修改,如异常日志优化、时间格式展示等
This commit is contained in:
lbw
2025-12-30 10:30:26 +08:00
parent 5ebf40101d
commit 0f5169c1d7
21 changed files with 147 additions and 59 deletions

View File

@@ -59,7 +59,7 @@
aria-current="page">Home</a>
</li>
<li>
<router-link to="/class"
<router-link to="/"
class="block py-2 pr-4 pl-3 text-gray-700 border-b border-gray-100 hover:bg-gray-50 lg:hover:bg-transparent lg:border-0 lg:hover:text-primary-700 lg:p-0 dark:text-gray-400 lg:dark:hover:text-white dark:hover:bg-gray-700 dark:hover:text-white lg:dark:hover:bg-transparent dark:border-gray-700">
班级
</router-link>

View File

@@ -155,7 +155,7 @@ async function userLogin() {
if (mode.value === 'login') {
try { setToken(data.data) } catch { }
ElMessage.success('登录成功')
router.push('/class')
router.push('/')
} else {
ElMessage.success('注册成功')
mode.value = 'login'

View File

@@ -13,7 +13,6 @@
<div class="text-lg font-semibold mb-4">班级列表</div>
<el-table ref="classTableRef" :data="classes" border class="w-full" v-loading="loading" highlight-current-row
row-key="id" :current-row-key="selectedClassId" @row-click="onClassRowClick">
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="title" label="班级名称" min-width="120" />
<el-table-column prop="gradeName" label="年级" min-width="120" />
<el-table-column label="操作" width="120" fixed="right">
@@ -57,10 +56,9 @@
<el-table ref="studentTableRef" :data="students" border class="w-full"
v-loading="studentLoading" @selection-change="onStudentSelectionChange">
<el-table-column type="selection" width="48" />
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="name" label="姓名" min-width="120" />
<el-table-column prop="classId" label="班级ID" width="100" />
<el-table-column prop="gradeId" label="年级ID" width="100" />
<el-table-column prop="className" label="班级" min-width="120" />
<el-table-column prop="gradeName" label="年级" min-width="120" />
<el-table-column label="操作" width="180" fixed="right">
<template #default="{ row }">
<el-button type="primary" size="small" @click.stop="onViewStudent(row)">详情</el-button>
@@ -94,7 +92,6 @@
<div class="text-lg font-semibold mb-4">年级列表</div>
<el-table ref="gradeTableRef" :data="grades" border class="w-full" highlight-current-row
row-key="id" :current-row-key="selectedGradeId" @row-click="onGradeRowClick">
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="title" label="年级名称" min-width="160" />
</el-table>
<div class="mt-4 flex justify-end">

View File

@@ -26,9 +26,8 @@
v-loading="loading"
@row-click="handleRowClick"
>
<el-table-column prop="id" label="ID" width="80" />
<el-table-column prop="studentId" label="学生ID" width="100" />
<el-table-column prop="examWordsId" label="试题ID" width="100" />
<el-table-column prop="studentName" label="学生姓名" min-width="70" />
<el-table-column prop="examWordsTitle" label="试题名称" min-width="100" />
<el-table-column prop="correctWordCount" label="正确词数" width="110" />
<el-table-column prop="wrongWordCount" label="错误词数" width="110" />
<el-table-column label="完成状态" width="110">
@@ -38,7 +37,11 @@
</el-tag>
</template>
</el-table-column>
<el-table-column prop="startDate" label="开始时间" min-width="160" />
<el-table-column prop="startDate" label="开始时间" min-width="160">
<template #default="{ row }">
{{ row.startDate.replace('T', ' ') }}
</template>
</el-table-column>
<el-table-column prop="msg" label="判卷结算" min-width="160" />
</el-table>
<div class="mt-4 flex justify-end">

View File

@@ -10,7 +10,7 @@ import Login from '@/pages/Login.vue'
// 统一在这里声明所有路由
const routes = [
{
path: '/class',
path: '/',
component: Class,
meta: {
title: '班级'