package com.zy.ai.controller; import com.zy.ai.entity.ChatCompletionRequest; import com.zy.ai.entity.WcsDiagnosisRequest; import com.zy.ai.entity.WcsDiagnosisResponse; import com.zy.ai.service.WcsDiagnosisService; import com.zy.ai.utils.AiUtils; import com.zy.common.web.BaseController; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.util.List; import java.util.Map; @Slf4j @RestController @RequestMapping("/ai/diagnose") @RequiredArgsConstructor public class WcsDiagnosisController extends BaseController { @Autowired private WcsDiagnosisService wcsDiagnosisService; @Autowired private AiUtils aiUtils; @GetMapping("/runAi") public WcsDiagnosisResponse runAi() { WcsDiagnosisRequest request = aiUtils.makeAiRequest(1000, "系统当前不执行任务,但具体原因不明,请根据以下信息帮助判断。\n\n"); WcsDiagnosisResponse response = diagnose(request); return response; } @GetMapping("/runAiStream") public SseEmitter runAiStream() { SseEmitter emitter = new SseEmitter(0L); new Thread(() -> { try { WcsDiagnosisRequest request = aiUtils.makeAiRequest(1000, "系统当前不执行任务,但具体原因不明,请根据以下信息帮助判断。\n\n"); wcsDiagnosisService.diagnoseStream(request, emitter); } catch (Exception e) { emitter.completeWithError(e); } }).start(); return emitter; } @GetMapping("/askStream") public SseEmitter askStream(@RequestParam("prompt") String prompt, @RequestParam(value = "chatId", required = false) String chatId, @RequestParam(value = "reset", required = false, defaultValue = "false") boolean reset) { SseEmitter emitter = new SseEmitter(0L); new Thread(() -> { try { WcsDiagnosisRequest request = aiUtils.makeAiRequest(100, null); wcsDiagnosisService.askStream(request, prompt, chatId, reset, emitter); } catch (Exception e) { emitter.completeWithError(e); } }).start(); return emitter; } @GetMapping("/chats") public List> listChats() { return wcsDiagnosisService.listChats(); } @DeleteMapping("/chats/{chatId}") public Boolean deleteChat(@PathVariable("chatId") String chatId) { return wcsDiagnosisService.deleteChat(chatId); } @GetMapping("/chats/{chatId}/history") public List getChatHistory(@PathVariable("chatId") String chatId) { return wcsDiagnosisService.getChatHistory(chatId); } /** * POST /api/ai/diagnose/wcs */ @PostMapping("/wcs") public WcsDiagnosisResponse diagnose(@RequestBody WcsDiagnosisRequest request) { String analysis = wcsDiagnosisService.diagnose(request); WcsDiagnosisResponse resp = new WcsDiagnosisResponse(); resp.setAnalysis(analysis); resp.setOriginalRequest(request); return resp; } }