#
Junjie
2 天以前 4227b39d7a4fc6bc3ba012a09b59f653ab92ab23
src/main/java/com/zy/ai/utils/AiUtils.java
@@ -1,5 +1,6 @@
package com.zy.ai.utils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.ai.entity.DeviceConfigsData;
import com.zy.ai.entity.DeviceRealTimeData;
@@ -11,6 +12,7 @@
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.utils.RedisUtil;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.StationObjModel;
@@ -18,6 +20,8 @@
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.thread.CrnThread;
import com.zy.core.thread.StationThread;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -34,6 +38,10 @@
    private BasCrnpService basCrnpService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private ConfigService configService;
    @Autowired
    private RedisUtil redisUtil;
    public WcsDiagnosisRequest makeAiRequest(int logLimit, String alarmMessage) {
        WcsDiagnosisRequest request = new WcsDiagnosisRequest();
@@ -124,6 +132,9 @@
                deviceRealTimeDataList.add(stationData);
            }
            //剔除全部输送站点信息,以免数据量过大,后期看实际情况是否打开
            basDevp.setStationList(null);
            DeviceConfigsData deviceConfigsData = new DeviceConfigsData();
            deviceConfigsData.setDeviceNo(basDevp.getDevpNo());
            deviceConfigsData.setDeviceType(String.valueOf(SlaveType.Devp));
@@ -133,7 +144,125 @@
        request.setDeviceRealtimeData(deviceRealTimeDataList);
        request.setDeviceConfigs(deviceConfigsDataList);
        List<Config> systemConfigList = configService.selectList(new EntityWrapper<Config>().notIn("dingdingReportUrl"));
        request.setSystemConfigs(systemConfigList);
        return request;
    }
    public String buildDiagnosisUserContent(WcsDiagnosisRequest request) {
        StringBuilder sb = new StringBuilder();
        if (request.getAlarmMessage() != null && !request.getAlarmMessage().isEmpty()) {
            sb.append("【问题描述】\n");
            sb.append(request.getAlarmMessage()).append("\n\n");
        }
        sb.append("【设备信息】\n");
        sb.append("关注设备(如果有指定): ")
                .append(request.getCraneNo() != null ? request.getCraneNo() : "未指定,需整体分析")
                .append("\n\n");
        Object pseudo = redisUtil.get(com.zy.core.enums.RedisKeyType.MAIN_PROCESS_PSEUDOCODE.key);
        if (pseudo != null) {
            sb.append("【主流程伪代码 mainProcessPseudo】\n");
            sb.append(String.valueOf(pseudo)).append("\n\n");
        }
        if (request.getExtraContext() != null && !request.getExtraContext().isEmpty()) {
            sb.append("【额外上下文 extraContext】\n");
            sb.append(JSON.toJSONString(request.getExtraContext(), true)).append("\n\n");
        }
        if (request.getTasks() != null && !request.getTasks().isEmpty()) {
            sb.append("【任务信息 tasks】\n");
            sb.append("下面是当前相关任务列表的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getTasks(), true)).append("\n\n");
        } else {
            sb.append("【任务信息 tasks】\n");
            sb.append("当前未提供任务信息。\n\n");
        }
        if (request.getDeviceRealtimeData() != null && !request.getDeviceRealtimeData().isEmpty()) {
            sb.append("【设备实时数据 deviceRealtimeData】\n");
            sb.append("下面是各设备当前实时状态的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getDeviceRealtimeData(), true)).append("\n\n");
        } else {
            sb.append("【设备实时数据 deviceRealtimeData】\n");
            sb.append("当前未提供设备实时数据。\n\n");
        }
        if (request.getDeviceConfigs() != null && !request.getDeviceConfigs().isEmpty()) {
            sb.append("【设备配置信息 deviceConfigs】\n");
            sb.append("下面是各设备配置的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getDeviceConfigs(), true)).append("\n\n");
        } else {
            sb.append("【设备配置信息 deviceConfigs】\n");
            sb.append("当前未提供设备配置信息。\n\n");
        }
        if (request.getLogs() != null && !request.getLogs().isEmpty()) {
            sb.append("【系统日志 logs(按时间顺序)】\n");
            for (String logLine : request.getLogs()) {
                sb.append(logLine).append("\n");
            }
        } else {
            sb.append("【系统日志 logs(按时间顺序)】\n");
            sb.append("当前未提供日志信息。\n");
        }
        if (request.getSystemConfigs() != null && !request.getSystemConfigs().isEmpty()) {
            sb.append("【系统配置 sys_config】\n");
            sb.append("下面是各系统配置的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getSystemConfigs(), true)).append("\n\n");
        }
        sb.append("\n请根据以上所有信息,结合你的经验进行分析诊断。");
        return sb.toString();
    }
    public String buildAskUserContent(WcsDiagnosisRequest request) {
        StringBuilder sb = new StringBuilder();
        if (request.getExtraContext() != null && !request.getExtraContext().isEmpty()) {
            sb.append("【额外上下文 extraContext】\n");
            sb.append(JSON.toJSONString(request.getExtraContext(), true)).append("\n\n");
        }
        if (request.getTasks() != null && !request.getTasks().isEmpty()) {
            sb.append("【任务信息 tasks】\n");
            sb.append("下面是当前相关任务列表的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getTasks(), true)).append("\n\n");
        }
        if (request.getDeviceRealtimeData() != null && !request.getDeviceRealtimeData().isEmpty()) {
            sb.append("【设备实时数据 deviceRealtimeData】\n");
            sb.append("下面是各设备当前实时状态的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getDeviceRealtimeData(), true)).append("\n\n");
        }
        if (request.getDeviceConfigs() != null && !request.getDeviceConfigs().isEmpty()) {
            sb.append("【设备配置信息 deviceConfigs】\n");
            sb.append("下面是各设备配置的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getDeviceConfigs(), true)).append("\n\n");
        }
        if (request.getLogs() != null && !request.getLogs().isEmpty()) {
            sb.append("【系统日志 logs(按时间顺序)】\n");
            for (String logLine : request.getLogs()) {
                sb.append(logLine).append("\n");
            }
        }
        if (request.getSystemConfigs() != null && !request.getSystemConfigs().isEmpty()) {
            sb.append("【系统配置 sys_config】\n");
            sb.append("下面是各系统配置的 JSON 数据:\n");
            sb.append(JSON.toJSONString(request.getSystemConfigs(), true)).append("\n\n");
        }
        return sb.toString();
    }
}