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