package com.njuzr.eaibackend.controller; import com.njuzr.eaibackend.service.AIEvaluationService; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import java.util.concurrent.ExecutionException; /** * @author BaiBai * @date 2025-01-17 10:58 */ @Slf4j @RestController @RequestMapping("/api/evaluation") public class EvaluationController { private final AIEvaluationService aiEvaluationService;; public EvaluationController(AIEvaluationService aiEvaluationService) { this.aiEvaluationService = aiEvaluationService; } /** * 对作文整体进行评价 * @param assignmentId 作业ID * @param studentId 学生ID * @return */ @PostMapping("/overall") public MyResponse rewrite( @RequestParam Long assignmentId, @RequestParam Long studentId ) throws ExecutionException, InterruptedException { return MyResponse.success(aiEvaluationService.evaluationAsync(assignmentId, studentId).get()); } /** * 对作文进行逐句批改 * @param assignmentId 作业ID * @param studentId 学生ID * @return */ @PostMapping("/sentence") public MyResponse rewritePerSentence( @RequestParam Long assignmentId, @RequestParam Long studentId ) { return MyResponse.success(aiEvaluationService.rewritePerSentence(assignmentId, studentId)); } /** * 获取整体评价内容 * @param assignmentId * @param studentId * @param version 作业版本 * @return */ @GetMapping("/select/overall") public MyResponse selectOverall( @RequestParam Long assignmentId, @RequestParam Long studentId, @RequestParam(value = "version", defaultValue = "-1") Integer version ){ return MyResponse.success(aiEvaluationService.getRewrite(assignmentId, studentId, version)); } /** * 获取逐句评价内容 * @param assignmentId * @param studentId * @param version 作业版本 * @return */ @GetMapping("/select/sentence") public MyResponse selectSentence( @RequestParam Long assignmentId, @RequestParam Long studentId, @RequestParam(value = "version", defaultValue = "-1") Integer version ){ return MyResponse.success(aiEvaluationService.getRewritePerSentence(assignmentId, studentId, version)); } /** * 获取评价版本列表 * @param assignmentId * @param studentId * @return */ @GetMapping("/record/list") public MyResponse getRewriteVersionList( @RequestParam Long assignmentId, @RequestParam Long studentId ){ return MyResponse.success(aiEvaluationService.getVersionList(assignmentId, studentId)); } /** * 用于支持单句重试 * @param assignmentId * @param studentId * @param version * @param sentenceNo * @return */ @PostMapping("/sentence/byOne") public MyResponse evaluateSentenceByOne( @RequestParam Long assignmentId, @RequestParam Long studentId, @RequestParam Integer version, @RequestParam Integer sentenceNo ){ return MyResponse.success(aiEvaluationService.evaluateSentenceByOne(assignmentId, studentId, version, sentenceNo)); } }