package com.zioinfo.hrm.wise;

import com.zioinfo.hrm.common.ApiResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * WISE AI — 중앙 guardia-rag {@code /rag/answer} 프록시(HRM). [GUARDiA-HRM]
 *
 * <p>{@code POST /api/wise/ask {query}} → 근거·인용·환각차단(abstained) 답변. 인증 사용자 전용
 * (Spring Security {@code anyRequest().authenticated()} — 로그인 JWT 필요). 브라우저는 이 백엔드만
 * 호출하고 rag 는 서버 내부 루프백으로만 접근한다(외부 노출 금지). 실패는 degraded 요약으로 반환.
 *
 * <p>기존 {@code /api/hrm/ai/*}(Ollama 직접)는 불변. 본 컨트롤러는 중앙 경유 신규 경로만 추가한다.
 */
@RestController
@RequestMapping("/api/wise")
@RequiredArgsConstructor
public class WiseAskController {

    private final RagClient ragClient;

    @PostMapping("/ask")
    public ApiResponse<Map<String, Object>> ask(@RequestBody Map<String, Object> req, Authentication auth) {
        Object q = req != null ? req.get("query") : null;
        String query = q != null ? String.valueOf(q) : "";
        return ApiResponse.ok(ragClient.answer(query));
    }
}
