package com.unicorn.hgzero.ai.infra.search;

import com.unicorn.hgzero.ai.biz.gateway.SearchGateway;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * Azure AI Search Gateway 구현체
 * RAG 기반 벡터 검색 기능 제공
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class AzureAiSearchGateway implements SearchGateway {

    // TODO: Azure AI Search 클라이언트 주입
    // private final SearchClient searchClient;

    @Override
    public String searchRelatedTranscripts(String meetingId, String transcriptId, int limit) {
        log.info("Searching related transcripts: meetingId={}, transcriptId={}, limit={}",
            meetingId, transcriptId, limit);

        // TODO: Azure AI Search 벡터 검색
        // 1. 회의록 내용으로 임베딩 생성
        // 2. 벡터 유사도 검색
        // 3. 상위 N개 결과 반환

        // 임시 mock 응답
        return """
            {
              "relatedTranscripts": [
                {
                  "transcriptId": "aa0e8400-e29b-41d4-a716-446655440005",
                  "title": "프로젝트 X 주간 회의",
                  "date": "2025-01-15",
                  "participants": ["김철수", "이영희"],
                  "relevanceScore": 85.5,
                  "commonKeywords": ["MSA", "API Gateway", "Spring Boot"],
                  "link": "/transcripts/aa0e8400-e29b-41d4-a716-446655440005"
                }
              ]
            }
            """;
    }

    @Override
    public String searchTermExplanation(String term, String meetingId, String context) {
        log.info("Searching term explanation: term={}, meetingId={}", term, meetingId);

        // TODO: Azure AI Search 문서 검색
        // 1. 용어와 맥락으로 검색 쿼리 구성
        // 2. 과거 회의록, 위키, 매뉴얼 검색
        // 3. 관련 문서 반환

        // 임시 mock 응답
        return """
            {
              "term": "MSA",
              "basicDefinition": "Microservices Architecture의 약자",
              "contextualMeaning": "이번 프로젝트에서는 확장성과 독립 배포를 위해 MSA를 적용하기로 결정",
              "useCases": [
                "2024년 프로젝트 X에서 주문/결제/배송 서비스를 독립적으로 구성",
                "서비스별 독립 배포로 배포 시간 70% 단축"
              ],
              "relatedProjects": [
                {"name": "프로젝트 X", "relevance": "동일한 MSA 아키텍처 적용"}
              ],
              "pastDiscussions": [
                {
                  "date": "2024-12-15",
                  "participants": ["김철수", "이영희"],
                  "summary": "MSA 아키텍처의 장단점을 비교하고 적용 방안을 논의",
                  "link": "/transcripts/bb0e8400-e29b-41d4-a716-446655440006"
                }
              ],
              "references": [
                {
                  "title": "MSA 아키텍처 가이드",
                  "type": "위키",
                  "link": "https://wiki.example.com/msa-guide"
                }
              ]
            }
            """;
    }

    @Override
    public void indexTranscript(String transcriptId, String content, String metadata) {
        log.info("Indexing transcript: transcriptId={}", transcriptId);

        // TODO: Azure AI Search 인덱싱
        // 1. 회의록 내용 임베딩 생성
        // 2. 벡터와 메타데이터를 인덱스에 저장
        // 3. 검색 가능 상태로 만들기

        log.debug("Transcript indexed successfully: {}", transcriptId);
    }
}
