package com.unicorn.hgzero.meeting.biz.usecase.out;

import com.unicorn.hgzero.meeting.biz.domain.Minutes;

import java.util.List;
import java.util.Optional;

/**
 * 회의록 조회 Gateway Interface (Out Port)
 */
public interface MinutesReader {

    /**
     * ID로 회의록 조회
     */
    Optional<Minutes> findById(String minutesId);

    /**
     * 회의 ID로 회의록 목록 조회
     */
    List<Minutes> findByMeetingId(String meetingId);

    /**
     * 회의 ID로 최신 회의록 조회
     */
    Optional<Minutes> findLatestByMeetingId(String meetingId);

    /**
     * 작성자 ID로 회의록 목록 조회
     */
    List<Minutes> findByCreatedBy(String createdBy);

    /**
     * 상태로 회의록 목록 조회
     */
    List<Minutes> findByStatus(String status);

    /**
     * 확정자 ID로 회의록 목록 조회
     */
    List<Minutes> findByFinalizedBy(String finalizedBy);

    /**
     * 회의 ID로 참석자별 회의록 조회 (user_id IS NOT NULL)
     * AI Service가 통합 회의록 생성 시 사용
     *
     * @param meetingId 회의 ID
     * @return 참석자별 회의록 목록
     */
    List<Minutes> findParticipantMinutesByMeetingId(String meetingId);

    /**
     * 회의 ID로 AI 통합 회의록 조회 (user_id IS NULL)
     *
     * @param meetingId 회의 ID
     * @return AI 통합 회의록
     */
    Optional<Minutes> findConsolidatedMinutesByMeetingId(String meetingId);
}
