From 0325d413502474062e1d400df319bfd390e94956 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 17 Sep 2025 16:12:40 +0800 Subject: [PATCH] feat(ai): 新增 AI 陪练相关功能 --- src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java | 49 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java b/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java index b13f133..3eb6323 100644 --- a/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java +++ b/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkStreamController.java @@ -2,25 +2,20 @@ import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto; import cc.mrbird.febs.ai.req.memberTalkStream.*; -import cc.mrbird.febs.ai.req.talk.AiTalkAnswerStream; import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo; +import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkMemberAnswerSavaVo; +import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVoOld; import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkReloadStreamVo; import cc.mrbird.febs.ai.res.memberTalkStream.ApiMemberTalkStreamVo; -import cc.mrbird.febs.ai.service.ApiMemberTalkStreamService; -import cc.mrbird.febs.ai.strategy.enumerates.LlmStrategyEnum; -import cc.mrbird.febs.ai.strategy.param.LlmStrategyDto; +import cc.mrbird.febs.ai.service.AiMemberTalkStreamService; import cc.mrbird.febs.common.entity.FebsResponse; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.dashscope.common.Role; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; - -import java.util.ArrayList; /** * @author Administrator @@ -33,7 +28,7 @@ @Api(value = "ApiMemberTalkStreamController", tags = "AI-用户陪练(流式)") public class ApiMemberTalkStreamController { - private final ApiMemberTalkStreamService apiMemberTalkStreamService; + private final AiMemberTalkStreamService aiMemberTalkStreamService; @ApiOperation("生成题目") @ApiResponses({ @@ -41,7 +36,7 @@ }) @PostMapping("/start") public FebsResponse start(@RequestBody @Validated ApiMemberTalkStreamDto dto) { - return apiMemberTalkStreamService.start(dto); + return aiMemberTalkStreamService.start(dto); } @ApiOperation(value = "再练一次(重新回答)", notes = "再练一次(重新回答)") @@ -51,7 +46,7 @@ @PostMapping(value = "/reload") public FebsResponse reload(@RequestBody @Validated ApiMemberTalkReloadStreamDto dto) { - return apiMemberTalkStreamService.reload(dto); + return aiMemberTalkStreamService.reload(dto); } @ApiOperation(value = "对话记录分页查询", notes = "对话记录分页查询") @@ -61,33 +56,55 @@ @PostMapping(value = "/historyPage") public FebsResponse historyPage(@RequestBody @Validated ApiMemberTalkItemPageDto dto) { - return apiMemberTalkStreamService.historyPage(dto); + return aiMemberTalkStreamService.historyPage(dto); } @ApiOperation(value = "保存用户回答", notes = "保存答案") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberTalkMemberAnswerSavaVo.class) + }) @PostMapping(value = "/saveMemberAnswer") public FebsResponse saveMemberAnswer(@RequestBody @Validated ApiMemberTalkMemberAnswerSavaDto dto) { - return apiMemberTalkStreamService.saveMemberAnswer(dto); + return aiMemberTalkStreamService.saveMemberAnswer(dto); } @ApiOperation("回答(流式)") @ApiResponses({ - @ApiResponse(code = 200, message = "流式响应", response = cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo.class), + @ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkStreamVoOld.class), }) @PostMapping("/answer") public Flux<FebsResponse> answer(@RequestBody @Validated AiTalkAnswerStreamDto dto) { if (StrUtil.isEmpty(dto.getId()) || StrUtil.isEmpty(dto.getReqContext())|| StrUtil.isEmpty(dto.getReqContext())){ return Flux.just(new FebsResponse().fail().message("参数异常")); } - return apiMemberTalkStreamService.answer(dto); + return aiMemberTalkStreamService.answer(dto); + } + + @ApiOperation("回答(流式)") + @ApiResponses({ + @ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkStreamVoOld.class), + }) + @PostMapping("/answerV2") + public Flux<FebsResponse> answerV2(@RequestBody @Validated AiTalkAnswerStreamDto dto) { + if (StrUtil.isEmpty(dto.getId()) || StrUtil.isEmpty(dto.getReqContext())|| StrUtil.isEmpty(dto.getReqContext())){ + return Flux.just(new FebsResponse().fail().message("参数异常")); + } + return aiMemberTalkStreamService.answerV2(dto); } @ApiOperation(value = "保存AI回答", notes = "保存AI回答") @PostMapping(value = "/saveAnswer") public FebsResponse saveAnswer(@RequestBody @Validated ApiMemberTalkAnswerSavaDto dto) { - return apiMemberTalkStreamService.saveAnswer(dto); + return aiMemberTalkStreamService.saveAnswer(dto); + } + + @ApiOperation(value = "保存AI陪练总结报告", notes = "保存AI陪练总结报告") + @PostMapping(value = "/saveReport") + public FebsResponse saveReport(@RequestBody @Validated ApiMemberTalkReportSavaDto dto) { + + return aiMemberTalkStreamService.saveReport(dto); } } -- Gitblit v1.9.1