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