package com.zioinfo.esn.wise;

import com.zioinfo.esn.common.ApiResponse;
import lombok.RequiredArgsConstructor;
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} 프록시(인증 사용자). [ZIOINFO-ESN]
 *
 * <p>브라우저 → ESN 백엔드 → 중앙 rag 경유. 근거·인용 기반 답변, 근거 부족 시 보류(abstained),
 * rag 미가용 시 degraded 폴백. 기존 {@code /api/ai/*} 는 불변 — 본 컨트롤러는 별개 레이어.
 *
 * <ul><li>POST /api/wise/ask  {query} → 근거 답변(sources·abstained·degraded 포함)</li></ul>
 */
@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) {
        Object q = req == null ? null : req.get("query");
        String query = q == null ? "" : String.valueOf(q);
        return ApiResponse.ok(ragClient.answer(query));
    }
}
