From 03a268e51ee60f45b6a0ee88f62c20ec1783c715 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Thu, 21 Aug 2025 11:59:42 +0800 Subject: [PATCH] refactor(ai): 优化 AiMemberAnswerServiceImpl 中的答案提交逻辑 --- src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkController.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkController.java b/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkController.java index 66212da..a2d4df5 100644 --- a/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkController.java +++ b/src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkController.java @@ -2,13 +2,12 @@ import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkAnswerDto; import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkDto; +import cc.mrbird.febs.ai.req.memberTalk.ApiMemberTalkItemPageDto; +import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo; import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkVo; import cc.mrbird.febs.ai.service.AiMemberTalkService; import cc.mrbird.febs.common.entity.FebsResponse; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiResponse; -import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; @@ -16,6 +15,11 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.List; /** * @author Administrator @@ -51,4 +55,42 @@ return aiMemberTalkService.answer(dto); } + + @ApiOperation(value = "对话记录分页查询", notes = "对话记录分页查询") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberTalkItemVo.class) + }) + @PostMapping(value = "/historyPage") + public FebsResponse historyPage(@RequestBody @Validated ApiMemberTalkItemPageDto dto) { + + return aiMemberTalkService.historyPage(dto); + } + + @PostMapping("/start-stream") + @ApiOperation("开始AI对话(流式)") + @ApiResponses({ + @ApiResponse(code = 200, message = "流式响应", response = ApiMemberTalkVo.class), + @ApiResponse(code = 500, message = "系统错误") + }) + public SseEmitter startStream( + @ApiParam(value = "对话请求参数", required = true) + @RequestBody ApiMemberTalkDto dto) { + + SseEmitter emitter = new SseEmitter(0L); // 0表示永不超时 + + aiMemberTalkService.startStream(dto, response -> { + try { + emitter.send(SseEmitter.event().data(response)); + // 如果包含report,说明是最终结果,关闭连接 + if (response.getCode() != null && + "200".equals(response.getCode())) { + emitter.complete(); + } + } catch (IOException e) { + emitter.completeWithError(e); + } + }); + + return emitter; + } } -- Gitblit v1.9.1