新增功能: 1. AI智能评分系统 - 集成OpenAI兼容API进行简答题评分 - 提供分数、评语和改进建议 - 支持自定义AI服务配置(BaseURL、APIKey、Model) 2. 题目列表页面 - 展示所有题目和答案 - Tab标签页形式的题型筛选(选择题、多选题、判断题、填空题、简答题) - 关键词搜索功能(支持题目内容和编号搜索) - 填空题特殊渲染:****显示为下划线 - 判断题不显示选项,界面更简洁 3. UI优化 - 答题结果组件重构,支持AI评分显示 - 首页新增"题目列表"快速入口 - 响应式设计,适配移动端和PC端 技术改进: - 添加AI评分服务层(internal/services/ai_grading.go) - 扩展题目模型支持AI评分结果 - 更新配置管理支持AI服务配置 - 添加AI评分测试脚本和文档 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.9 KiB
4.9 KiB
AI 评分功能测试指南
测试前提
- 确保后端服务器运行在
http://localhost:8080 - 确保数据库中有简答题数据
- 需要先登录获取 token
测试步骤
1. 登录获取 Token
curl -X POST http://localhost:8080/api/login \
-H "Content-Type: application/json" \
-d '{
"username": "你的用户名",
"password": "你的密码"
}'
返回示例:
{
"success": true,
"data": {
"token": "your-token-here",
"user": {...}
}
}
2. 获取简答题列表
curl -X GET "http://localhost:8080/api/practice/questions?type=short-answer" \
-H "Authorization: Bearer YOUR_TOKEN"
找到一个简答题的 ID(例如:123)
3. 提交简答题答案测试 AI 评分
测试用例 1:提交一个接近标准答案的回答
curl -X POST http://localhost:8080/api/practice/submit \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"question_id": 123,
"answer": "网络安全是保护计算机网络系统及其数据的完整性、保密性和可用性的措施"
}'
预期返回:
{
"success": true,
"data": {
"correct": true,
"user_answer": "网络安全是保护计算机网络系统及其数据的完整性、保密性和可用性的措施",
"correct_answer": "标准答案...",
"ai_grading": {
"score": 85,
"feedback": "答案基本正确,要点全面",
"suggestion": "可以补充一些具体的例子"
}
}
}
测试用例 2:提交一个不完整的回答
curl -X POST http://localhost:8080/api/practice/submit \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"question_id": 123,
"answer": "保护网络安全"
}'
预期返回:
{
"success": true,
"data": {
"correct": false,
"user_answer": "保护网络安全",
"correct_answer": "标准答案...",
"ai_grading": {
"score": 45,
"feedback": "答案过于简单,缺少要点",
"suggestion": "需要补充完整性、保密性和可用性等关键概念"
}
}
}
验证要点
- 响应结构:检查响应中是否包含
ai_grading字段 - 评分合理性:AI 给出的分数是否在 0-100 之间
- correct 字段:分数 >= 60 时,correct 应该为 true
- 反馈信息:feedback 和 suggestion 是否有意义
- 非简答题:对其他题型(填空题、判断题等),
ai_grading字段应该为 null
使用 Postman 测试
- 创建新请求,方法为 POST
- URL:
http://localhost:8080/api/practice/submit - Headers 添加:
Content-Type: application/jsonAuthorization: Bearer YOUR_TOKEN
- Body 选择 raw 和 JSON,输入:
{ "question_id": 123, "answer": "你的答案" } - 点击 Send 发送请求
- 查看响应中的
ai_grading字段
前端测试
如果你已经实现了前端界面:
- 登录系统
- 进入练习页面
- 筛选简答题类型
- 随机获取一道简答题
- 输入答案并提交
- 查看是否显示 AI 评分结果(分数、评语、建议)
故障排查
问题 1:没有返回 ai_grading 字段
可能原因:
- 题目类型不是
short-answer - 服务器未重启,使用的是旧代码
解决方法:
- 确认题目类型:
GET /api/practice/questions/:id - 重新编译并启动服务器:
go build -o bin/server.exe main.go ./bin/server.exe
问题 2:AI 评分失败
可能原因:
- API 密钥无效
- 网络连接问题
- AI 服务不可用
解决方法:
- 检查后端日志中的错误信息
- 验证 API 配置:查看 pkg/config/config.go
- 尝试直接调用 AI API 测试连通性
问题 3:评分结果不合理
可能原因:
- 提示词需要优化
- AI 模型理解偏差
解决方法:
- 调整 internal/services/ai_grading.go 中的提示词
- 增加更详细的评分标准说明
测试数据示例
以下是一些可以用于测试的简答题和答案:
题目:什么是网络安全?
优秀答案(应得高分): "网络安全是指保护计算机网络系统及其数据免受未经授权的访问、使用、披露、破坏、修改或破坏的技术、策略和实践。它包括保护网络的完整性、保密性和可用性,确保数据在传输和存储过程中的安全。"
一般答案(应得中等分): "网络安全是保护计算机和网络不被黑客攻击,保护数据安全。"
较差答案(应得低分): "网络安全就是网络很安全。"
日志查看
查看服务器日志中的 AI 评分相关信息:
# Windows (如果使用 PowerShell)
Get-Content .\logs\server.log -Wait
# 或直接查看控制台输出
关注以下日志:
AI评分失败: ...- AI 评分出错- 没有错误日志 - AI 评分成功