实现了包含试卷管理、考试答题、AI智能阅卷的完整考试流程。 **后端新增功能**: - 试卷管理: 创建试卷、获取试卷列表和详情 - 考试流程: 开始考试、提交答案、查询结果 - AI阅卷: 异步阅卷系统,支持简答题和论述题AI评分 - 实时答题: 题目级别的答案保存和加载 - 数据模型: ExamRecord(考试记录)、ExamUserAnswer(用户答案) **前端新增页面**: - 考试管理页面: 试卷列表展示,支持开始/继续考试 - 答题页面: 左侧题目列表、右侧答题区,支持实时保存 - 成绩查看页面: 展示详细评分结果和AI评语 **技术亮点**: - 按题型固定分值配置(总分100分) - 异步阅卷机制,提交后立即返回 - 答案实时保存,支持断点续答 - AI评分集成,智能评判主观题 - 响应式设计,适配移动端和PC端 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
86 lines
3.5 KiB
TypeScript
86 lines
3.5 KiB
TypeScript
import React from 'react'
|
||
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
|
||
import { ConfigProvider } from 'antd'
|
||
import zhCN from 'antd/locale/zh_CN'
|
||
import TabBarLayout from './components/TabBarLayout'
|
||
import ProtectedRoute from './components/ProtectedRoute'
|
||
import AdminRoute from './components/AdminRoute'
|
||
import QuestionPage from './pages/Question'
|
||
import Login from './pages/Login'
|
||
import Home from './pages/Home'
|
||
import About from './pages/About'
|
||
import WrongQuestions from './pages/WrongQuestions'
|
||
import QuestionManagement from './pages/QuestionManagement'
|
||
import QuestionList from './pages/QuestionList'
|
||
import UserManagement from './pages/UserManagement'
|
||
import UserDetail from './pages/UserDetail'
|
||
import ExamPrepare from './pages/ExamPrepare'
|
||
import ExamOnline from './pages/ExamOnline'
|
||
import ExamPrint from './pages/ExamPrint'
|
||
import ExamResult from './pages/ExamResult'
|
||
import ExamManagement from './pages/ExamManagement'
|
||
import ExamTaking from './pages/ExamTaking'
|
||
import ExamResultNew from './pages/ExamResultNew'
|
||
|
||
const App: React.FC = () => {
|
||
return (
|
||
<ConfigProvider locale={zhCN}>
|
||
<Router>
|
||
<Routes>
|
||
{/* 带TabBar的页面,需要登录保护 */}
|
||
<Route element={<ProtectedRoute><TabBarLayout /></ProtectedRoute>}>
|
||
<Route path="/" element={<Home />} />
|
||
<Route path="/question" element={<QuestionPage />} />
|
||
</Route>
|
||
|
||
{/* 不带TabBar的页面,但需要登录保护 */}
|
||
<Route path="/wrong-questions" element={<ProtectedRoute><WrongQuestions /></ProtectedRoute>} />
|
||
<Route path="/question-list" element={<ProtectedRoute><QuestionList /></ProtectedRoute>} />
|
||
|
||
{/* 考试相关页面,需要登录保护 */}
|
||
<Route path="/exam/new" element={<ProtectedRoute><ExamPrepare /></ProtectedRoute>} />
|
||
<Route path="/exam/management" element={<ProtectedRoute><ExamManagement /></ProtectedRoute>} />
|
||
<Route path="/exam/:examId/online" element={<ProtectedRoute><ExamOnline /></ProtectedRoute>} />
|
||
<Route path="/exam/:examId/taking/:recordId" element={<ProtectedRoute><ExamTaking /></ProtectedRoute>} />
|
||
<Route path="/exam/:examId/print" element={<ProtectedRoute><ExamPrint /></ProtectedRoute>} />
|
||
<Route path="/exam/:examId/result" element={<ProtectedRoute><ExamResult /></ProtectedRoute>} />
|
||
<Route path="/exam/result/:recordId" element={<ProtectedRoute><ExamResultNew /></ProtectedRoute>} />
|
||
|
||
{/* 题库管理页面,需要管理员权限 */}
|
||
<Route path="/question-management" element={
|
||
<ProtectedRoute>
|
||
<AdminRoute>
|
||
<QuestionManagement />
|
||
</AdminRoute>
|
||
</ProtectedRoute>
|
||
} />
|
||
|
||
{/* 用户管理页面,仅yanlongqi用户可访问 */}
|
||
<Route path="/user-management" element={
|
||
<ProtectedRoute>
|
||
<AdminRoute>
|
||
<UserManagement />
|
||
</AdminRoute>
|
||
</ProtectedRoute>
|
||
} />
|
||
|
||
{/* 用户详情页面,仅yanlongqi用户可访问 */}
|
||
<Route path="/user-management/:id" element={
|
||
<ProtectedRoute>
|
||
<AdminRoute>
|
||
<UserDetail />
|
||
</AdminRoute>
|
||
</ProtectedRoute>
|
||
} />
|
||
|
||
{/* 不带TabBar的页面,不需要登录保护 */}
|
||
<Route path="/login" element={<Login />} />
|
||
<Route path="/about" element={<About />} />
|
||
</Routes>
|
||
</Router>
|
||
</ConfigProvider>
|
||
)
|
||
}
|
||
|
||
export default App
|