فهرست منبع

保存聊天,聊天详情,将切片保存和展示。

S0025136190 6 ماه پیش
والد
کامیت
1310d48b90

+ 13 - 0
takai-ai/src/main/java/com/takai/ai/domain/dto/TakaiChunkInfoDTO.java

@@ -0,0 +1,13 @@
+package com.takai.ai.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class TakaiChunkInfoDTO {
+
+    private String chunk_id;
+
+    private Double rerank_score;
+
+    private Integer chunk_len;
+}

+ 5 - 0
takai-ai/src/main/java/com/takai/ai/domain/dto/TakaiDialogDetailReqDTO.java

@@ -17,4 +17,9 @@ public class TakaiDialogDetailReqDTO {
     private String date;
 
     private String dialogId;
+
+    private TakaiSliceInfoDTO sliceInfo;
+
+    private String sliceJson;
+
 }

+ 4 - 0
takai-ai/src/main/java/com/takai/ai/domain/dto/TakaiDialogRespDTO.java

@@ -36,5 +36,9 @@ public class TakaiDialogRespDTO {
     @Excel(name = "创建时间")
     private LocalDateTime create_time;
 
+    private String sliceJson;
+
+    private TakaiSliceInfoDTO sliceInfo;
+
 
 }

+ 17 - 0
takai-ai/src/main/java/com/takai/ai/domain/dto/TakaiDocDTO.java

@@ -0,0 +1,17 @@
+package com.takai.ai.domain.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TakaiDocDTO {
+
+    private String doc_id;
+
+    private String doc_name;
+
+    private Integer chunk_nums;
+
+    private List<TakaiChunkInfoDTO> chunk_info_list;
+}

+ 14 - 0
takai-ai/src/main/java/com/takai/ai/domain/dto/TakaiSliceInfoDTO.java

@@ -0,0 +1,14 @@
+package com.takai.ai.domain.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TakaiSliceInfoDTO {
+
+    private String knowledge_id;
+
+    private List<TakaiDocDTO> doc;
+
+}

+ 10 - 4
takai-ai/src/main/java/com/takai/ai/service/impl/TakaiAiServiceImpl.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.takai.ai.domain.TakaiSysOss;
-import com.takai.ai.domain.dto.TakaiDialogDetailReqDTO;
+import com.takai.ai.domain.dto.*;
 import com.takai.ai.domain.entity.*;
 import com.takai.ai.mapper.*;
 import com.takai.ai.service.ITakaiAiService;
@@ -14,9 +14,6 @@ import com.takai.common.annotation.DataSource;
 import com.takai.common.config.DeepseekConfig;
 import com.takai.common.core.redis.RedisCache;
 import com.takai.common.enums.DataSourceType;
-import com.takai.ai.domain.dto.TakaiDialogReqDTO;
-import com.takai.ai.domain.dto.TakaiDialogRespDTO;
-import com.takai.ai.domain.dto.TakaiQuestionDTO;
 import com.takai.common.utils.StringUtils;
 import com.takai.common.utils.uuid.IdUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -26,6 +23,7 @@ import okhttp3.sse.EventSourceListener;
 import okhttp3.sse.EventSources;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -345,6 +343,13 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
     @Override
     public List<TakaiDialogRespDTO> getDialogDetail(String dialogId) {
         List<TakaiDialogRespDTO> detail = takaiDialogMapper.selectDialogDetail(dialogId);
+        if(detail != null && detail.size() != 0){
+            for(TakaiDialogRespDTO dto : detail){
+                if(StringUtils.isNotEmpty(dto.getSliceJson())){
+                    dto.setSliceInfo(JSON.parseObject(dto.getSliceJson(), TakaiSliceInfoDTO.class));
+                }
+            }
+        }
         return detail;
     }
 
@@ -367,6 +372,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
             dto.setDialogId(dialogId);
             TakaiDialogRespDTO detail = takaiDialogMapper.selectDialogDetailById(dto.getId());
             if (detail == null) {
+                if (dto.getSliceInfo() != null) dto.setSliceJson(JSON.toJSONString(dto.getSliceInfo()));
                 takaiDialogMapper.insertDialogDetail(dto);
             }
         }

+ 5 - 1
takai-ai/src/main/resources/mapper/takaiai/TakaiDialogMapper.xml

@@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="content"   column="content"   />
 		<result property="type"   column="type"   />
 		<result property="create_time" column="create_time" />
+		<result property="slice_info" column="slice_info" />
 	</resultMap>
 
 	<select id="selectDialogById" parameterType="String" resultMap="TakaiDialogResult">
@@ -75,6 +76,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="role != null">type,</if>
 		<if test="content != null">content,</if>
 		<if test="role != null">create_by,</if>
+		<if test="sliceJson != null and sliceJson != ''">slice_info,</if>
 		create_time
 		)values(
 		#{id},
@@ -82,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="role != null">#{role},</if>
 		<if test="content != null">#{content},</if>
 		<if test="role != null">#{role},</if>
+		<if test="sliceJson != null and sliceJson != ''">#{sliceJson},</if>
 		sysdate()
 		)
 	</insert>
@@ -97,7 +100,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			dd.id as did,
 			dd.type,
 			dd.content,
-			dd.dialog_id
+			dd.dialog_id,
+			dd.slice_info as sliceJson
 		from dialog d
 				 left join dialog_detail dd on d.id = dd.dialog_id
 		where dd.dialog_id = #{dialogId}