package com.unicorn.hgzero.ai.biz.service;

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

import java.time.LocalDate;
import java.util.List;

/**
 * 전문용어 설명 Service
 * RAG 기반 맥락적 용어 설명 생성
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class TermExplanationService implements TermExplanationUseCase {

    private final SearchGateway searchGateway;

    @Override
    public TermExplanationResult explainTerm(String term, String meetingId, String context) {
        log.info("Explaining term: term={}, meetingId={}", term, meetingId);

        // RAG 검색
        String searchResult = searchGateway.searchTermExplanation(term, meetingId, context);

        // TODO: JSON 파싱 및 TermExplanationResult 생성
        // 현재는 mock 데이터 반환
        return new TermExplanationResult(
            "MSA",
            "Microservices Architecture의 약자",
            "이번 프로젝트에서는 확장성과 독립 배포를 위해 MSA를 적용하기로 결정",
            List.of(
                "2024년 프로젝트 X에서 주문/결제/배송 서비스를 독립적으로 구성",
                "서비스별 독립 배포로 배포 시간 70% 단축"
            ),
            List.of(new RelatedProject("프로젝트 X", "동일한 MSA 아키텍처 적용")),
            List.of(new PastDiscussion(
                LocalDate.of(2024, 12, 15),
                List.of("김철수", "이영희"),
                "MSA 아키텍처의 장단점을 비교하고 적용 방안을 논의",
                "/transcripts/bb0e8400-e29b-41d4-a716-446655440006"
            )),
            List.of(new Reference(
                "MSA 아키텍처 가이드",
                "위키",
                "https://wiki.example.com/msa-guide"
            ))
        );
    }
}
