houzhongjian
9 天以前 6de20911a9cdb064e60030237747c0794d429656
修改调度建议相关接口
已修改3个文件
39 ■■■■ 文件已修改
iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/chat/AiChatMessageServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java
@@ -4,6 +4,8 @@
import lombok.*;
import jakarta.validation.constraints.*;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 大模型调度建议新增/修改 Request VO")
@Data
public class ScheduleSuggestSaveReqVO {
@@ -27,7 +29,8 @@
    private String content;
    @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "状态(0-未处理 1-已采纳 2-已忽略)不能为空")
    private Integer status;
    private LocalDateTime createTime;
}
iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java
@@ -1,9 +1,6 @@
package com.iailab.module.ai.dal.dataobject.schedulesuggest;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.iailab.framework.mybatis.core.dataobject.BaseDO;
iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/chat/AiChatMessageServiceImpl.java
@@ -10,6 +10,7 @@
import com.iailab.framework.common.util.object.BeanUtils;
import com.iailab.framework.tenant.core.util.TenantUtils;
import com.iailab.module.ai.controller.admin.chat.vo.message.*;
import com.iailab.module.ai.controller.admin.schedulesuggest.vo.ScheduleSuggestSaveReqVO;
import com.iailab.module.ai.dal.dataobject.chat.AiChatConversationDO;
import com.iailab.module.ai.dal.dataobject.chat.AiChatMessageDO;
import com.iailab.module.ai.dal.dataobject.knowledge.AiKnowledgeDocumentDO;
@@ -25,8 +26,10 @@
import com.iailab.module.ai.service.model.AiChatRoleService;
import com.iailab.module.ai.service.model.AiModelService;
import com.iailab.module.ai.service.model.AiToolService;
import com.iailab.module.ai.service.schedulesuggest.ScheduleSuggestService;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.MessageType;
import org.springframework.ai.chat.messages.SystemMessage;
@@ -42,6 +45,8 @@
import java.time.LocalDateTime;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -83,6 +88,8 @@
    private AiKnowledgeDocumentService knowledgeDocumentService;
    @Resource
    private AiToolService toolService;
    @Resource
    private ScheduleSuggestService scheduleSuggestService;
    @Transactional(rollbackFor = Exception.class)
    public AiChatMessageSendRespVO sendMessage(AiChatMessageSendReqVO sendReqVO, Long userId) {
@@ -126,6 +133,19 @@
                            .getKnowledgeDocument(segment.getDocumentId());
                    segment.setDocumentName(document != null ? document.getName() : null);
                });
        // 3.5 存储大模型推断结论
        if(model.getType().equals(6)) {
            String scheduleSuggest = getScheduleSuggest(newContent);
            if(ObjectUtils.isNotEmpty(scheduleSuggest)) {
                ScheduleSuggestSaveReqVO saveReqVO = new ScheduleSuggestSaveReqVO();
                saveReqVO.setModelId(model.getId())
                        .setConversationId(conversation.getId())
                        .setMessageId(assistantMessage.getId())
                        .setCreateTime(assistantMessage.getCreateTime())
                        .setContent(scheduleSuggest);
                scheduleSuggestService.createScheduleSuggest(saveReqVO);
            }
        }
        return new AiChatMessageSendRespVO()
                .setSend(BeanUtils.toBean(userMessage, AiChatMessageSendRespVO.Message.class))
                .setReceive(BeanUtils.toBean(assistantMessage, AiChatMessageSendRespVO.Message.class)
@@ -362,4 +382,15 @@
    public PageResult<AiChatMessageDO> getChatMessagePage(AiChatMessagePageReqVO pageReqVO) {
        return chatMessageMapper.selectPage(pageReqVO);
    }
    private String getScheduleSuggest(String content) {
        String spliceText = content.contains("总结:") ? "总结:" : "结论:";
        String regex = "^([\\s\\S]*?)" + spliceText + "([\\s\\S]*)$";
        Pattern pattern = java.util.regex.Pattern.compile(regex);
        Matcher matcher = pattern.matcher(content);
        if (matcher.find()) {
            return matcher.group(2).trim();
        }
        return "";
    }
}