YasMiniAIController.java
package com.learning.yasminishop.yasminiai;
import com.learning.yasminishop.common.dto.APIResponse;
import com.learning.yasminishop.product.dto.response.ProductResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@RestController
@RequestMapping("/ai")
@RequiredArgsConstructor
@Slf4j
public class YasMiniAIController {
private final YasMiniAIService yasMiniAIService;
@PostMapping
@PreAuthorize("hasRole('USER')")
public APIResponse<List<ProductResponse>> findCar(@RequestParam("file") MultipartFile file) {
var response = yasMiniAIService.findCarByImage(file);
return APIResponse.<List<ProductResponse>>builder()
.result(response)
.build();
}
@GetMapping("/{text}")
@PreAuthorize("hasRole('USER')")
public APIResponse<String> chat(@PathVariable String text) {
String chatResponse = yasMiniAIService.generateText(text);
return APIResponse.<String>builder()
.result(chatResponse)
.build();
}
@GetMapping("history/{text}")
@PreAuthorize("hasRole('USER')")
public APIResponse<List<String>> getChatHistory(@PathVariable String text) {
var response = yasMiniAIService.generateTextWithHistory(text);
return APIResponse.<List<String>>builder()
.result(response)
.build();
}
}