From 83b6ee65a7d3c1f37d8ec896902b5189132d59c7 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Wed, 27 Aug 2025 15:00:38 +0800 Subject: [PATCH] feat(ai): 添加再练一次(重新回答)功能 --- src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberTalkReloadDto.java | 22 +++++++++++ src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java | 7 +-- src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkReloadVo.java | 37 ++++++++++++++++++ src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java | 25 ++++++++++-- src/main/java/cc/mrbird/febs/ai/controller/memberTalk/ApiMemberTalkController.java | 17 ++++++-- 5 files changed, 96 insertions(+), 12 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 80348df..48488d4 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 @@ -1,10 +1,8 @@ package cc.mrbird.febs.ai.controller.memberTalk; -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.req.memberTalk.ApiMemberTalkStreamDto; +import cc.mrbird.febs.ai.req.memberTalk.*; import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkItemVo; +import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkReloadVo; import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkStreamVo; import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkVo; import cc.mrbird.febs.ai.service.AiMemberTalkService; @@ -46,6 +44,17 @@ } + @ApiOperation(value = "再练一次(重新回答)", notes = "再练一次(重新回答)") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiMemberTalkReloadVo.class) + }) + @PostMapping(value = "/reload") + public FebsResponse reload(@RequestBody @Validated ApiMemberTalkReloadDto dto) { + + return aiMemberTalkService.reload(dto); + } + + @ApiOperation(value = "回答", notes = "回答") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiMemberTalkVo.class) diff --git a/src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberTalkReloadDto.java b/src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberTalkReloadDto.java new file mode 100644 index 0000000..0a062b4 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/req/memberTalk/ApiMemberTalkReloadDto.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.ai.req.memberTalk; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author Administrator + */ +@Data +@ApiModel(value = "ApiMemberTalkReloadDto", description = "参数") +public class ApiMemberTalkReloadDto { + + /** + * 用户对话ID (UUID) + */ + @NotBlank(message = "会话ID不能为空") + @ApiModelProperty(value = "会话ID", example = "10") + private String memberTalkId; +} diff --git a/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkReloadVo.java b/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkReloadVo.java new file mode 100644 index 0000000..b36713f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/ai/res/memberTalk/ApiMemberTalkReloadVo.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.ai.res.memberTalk; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + */ +@Data +@ApiModel(value = "ApiMemberTalkReloadVo", description = "参数") +public class ApiMemberTalkReloadVo { + + /** + * 用户对话ID (UUID) + */ + + @ApiModelProperty(value = "会话ID") + private String memberTalkId; + + /** + * 类型 1-AI提问 2-用户回答 3-AI分析结果 + */ + + @ApiModelProperty(value = "类型 1-AI提问 2-用户回答 3-AI分析结果") + private Integer type; + + /** + * 内容 + */ + + @ApiModelProperty(value = "内容(文本格式)") + private String context; + + @ApiModelProperty(value = "内容亮点、建议、参考答案、核心知识点雷达图表数据(数据对象)") + private String report; +} diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java index c985823..4b51641 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java +++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberTalkService.java @@ -1,10 +1,7 @@ package cc.mrbird.febs.ai.service; import cc.mrbird.febs.ai.entity.AiMemberTalk; -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.req.memberTalk.ApiMemberTalkStreamDto; +import cc.mrbird.febs.ai.req.memberTalk.*; import cc.mrbird.febs.ai.res.ai.AiResponse; import cc.mrbird.febs.common.entity.FebsResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -27,6 +24,8 @@ FebsResponse start(ApiMemberTalkDto dto); + FebsResponse reload(ApiMemberTalkReloadDto dto); + void startStream(ApiMemberTalkDto dto, Consumer<AiResponse> callback); AiMemberTalk getByQuery(LambdaQueryWrapper<AiMemberTalk> query); diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java index 05791c7..b921f93 100644 --- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberTalkServiceImpl.java @@ -7,11 +7,9 @@ import cc.mrbird.febs.ai.mapper.AiMemberTalkMapper; import cc.mrbird.febs.ai.req.ai.AiMessage; import cc.mrbird.febs.ai.req.ai.AiRequest; -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.req.memberTalk.ApiMemberTalkStreamDto; +import cc.mrbird.febs.ai.req.memberTalk.*; import cc.mrbird.febs.ai.res.ai.AiResponse; +import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkReloadVo; import cc.mrbird.febs.ai.res.memberTalk.ApiMemberTalkVo; import cc.mrbird.febs.ai.service.AiMemberTalkItemService; import cc.mrbird.febs.ai.service.AiMemberTalkService; @@ -101,6 +99,25 @@ } @Override + public FebsResponse reload(ApiMemberTalkReloadDto dto) { + + String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); + ApiMemberTalkReloadVo apiMemberTalkReloadVo = new ApiMemberTalkReloadVo(); + String memberTalkId = dto.getMemberTalkId(); + LambdaQueryWrapper<AiMemberTalkItem> queryWrapper = Wrappers.lambdaQuery(AiMemberTalkItem.class); + queryWrapper.eq(AiMemberTalkItem::getMemberTalkId,memberTalkId); + queryWrapper.eq(AiMemberTalkItem::getType,AiTypeEnum.QUESTION_ANSWER.getCode()); + queryWrapper.orderByDesc(AiMemberTalkItem::getCreatedTime); + AiMemberTalkItem byQuery = aiMemberTalkItemService.getByQuery(queryWrapper); + if (ObjectUtil.isNotNull(byQuery)){ + apiMemberTalkReloadVo.setContext(byQuery.getContext()); + apiMemberTalkReloadVo.setMemberTalkId(memberTalkId); + apiMemberTalkReloadVo.setType(AiTypeEnum.QUESTION_ANSWER.getCode()); + } + return new FebsResponse().success().data(apiMemberTalkReloadVo); + } + + @Override public void startStream(ApiMemberTalkDto dto, Consumer<AiResponse> callback) { try { String memberUuid = LoginUserUtil.getLoginUser().getMemberUuid(); -- Gitblit v1.9.1