package com.arms.api.search.controller;

import com.arms.api.search.model.dto.SimilaritySearchRequestDTO;
import com.arms.api.search.model.dto.SimilaritySearchResponseDTO;
import com.arms.api.search.service.SimilaritySearchService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/ai/search")
public class SimilaritySearchController {

    private final SimilaritySearchService similaritySearchService;

    /**
     * 단순 텍스트 유사 검색 (GET)
     * GET /ai/search?query=프로젝트관리
     */
    @GetMapping
    public ResponseEntity<List<SimilaritySearchResponseDTO>> searchByQuery(
            @RequestParam(value = "query") String query) {
        List<SimilaritySearchResponseDTO> results = similaritySearchService.search(query);
        return ResponseEntity.ok(results);
    }

    /**
     * 상세 옵션 유사 검색 (POST)
     * POST /ai/search
     * Body: { "query": "...", "topK": 5, "similarityThreshold": 0.7, "filterKey": "source", "filterValue": "pdf" }
     */
    @PostMapping
    public ResponseEntity<List<SimilaritySearchResponseDTO>> searchWithOptions(
            @RequestBody SimilaritySearchRequestDTO request) {
        List<SimilaritySearchResponseDTO> results = similaritySearchService.search(request);
        return ResponseEntity.ok(results);
    }
}
