| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- """
- 水平检测API路由
- """
- from fastapi import APIRouter, HTTPException, Query
- from typing import Optional
- from ...models.learning import (
- AssessmentStartRequest, AssessmentAnswerRequest,
- AssessmentCompleteRequest, AssessmentStartResponse,
- AssessmentAnswerResponse, AssessmentResult
- )
- from ...services.assessment_service import (
- start_assessment, submit_answer, complete_assessment
- )
- from ...services.data_store import data_store
- router = APIRouter(prefix="/assessment", tags=["assessment"])
- @router.get("/check/{path_type}")
- async def check_assessment(path_type: str, user_id: str = "default"):
- """检查用户是否已测试过指定路径"""
- has_test = data_store.has_assessment(user_id, path_type)
- current = data_store.get_current_assessment(user_id, path_type)
- return {
- "has_assessment": has_test,
- "current_result": current,
- }
- @router.get("/result/{path_type}")
- async def get_assessment_result(path_type: str, user_id: str = "default"):
- """获取用户测试结果"""
- result = data_store.get_current_assessment(user_id, path_type)
- if not result:
- raise HTTPException(status_code=404, detail="未找到测试结果")
- return result
- @router.get("/history/{path_type}")
- async def get_assessment_history(path_type: str, user_id: str = "default"):
- """获取用户测试历史"""
- assessments = data_store.get_user_assessments(user_id, path_type)
- return {"assessments": assessments}
- @router.post("/start")
- async def api_start_assessment(request: AssessmentStartRequest):
- """开始测试"""
- result = start_assessment(request.path_type, user_id=request.user_id)
- return result
- @router.post("/answer")
- async def api_submit_answer(request: AssessmentAnswerRequest):
- """提交答案"""
- result = submit_answer(
- request.session_id,
- request.question_id,
- request.answer,
- user_id=request.user_id,
- )
- if "error" in result:
- raise HTTPException(status_code=400, detail=result["error"])
- return result
- @router.post("/complete")
- async def api_complete_assessment(request: AssessmentCompleteRequest):
- """完成测试"""
- result = complete_assessment(request.session_id, user_id=request.user_id)
- if not result:
- raise HTTPException(status_code=400, detail="会话不存在或已过期")
- return result
- @router.post("/save-result")
- async def save_assessment_result(result: AssessmentResult, user_id: str = "default"):
- """保存测试结果"""
- result.user_id = user_id
- data_store.save_assessment(result)
- return {"message": "保存成功", "result": result}
|