package com.unicorn.hgzero.meeting.biz.domain;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 회의 AI 분석 결과 도메인 모델
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MeetingAnalysis {

    /**
     * 분석 ID
     */
    private String analysisId;

    /**
     * 회의 ID
     */
    private String meetingId;

    /**
     * 회의록 ID
     */
    private String minutesId;

    /**
     * 주요 키워드
     */
    private List<String> keywords;

    /**
     * 회의 전체 결정사항
     */
    private String decisions;

    /**
     * 안건별 분석 결과
     */
    private List<AgendaAnalysis> agendaAnalyses;

    /**
     * 전체 회의 분석 상태 (PENDING, IN_PROGRESS, COMPLETED, FAILED)
     */
    private String status;

    /**
     * 분석 완료 시간
     */
    private LocalDateTime completedAt;

    /**
     * 생성 시간
     */
    private LocalDateTime createdAt;

    /**
     * 분석 완료 처리
     */
    public void complete() {
        this.status = "COMPLETED";
        this.completedAt = LocalDateTime.now();
    }

    /**
     * 분석 실패 처리
     */
    public void fail() {
        this.status = "FAILED";
    }

    /**
     * 분석 진행 중 처리
     */
    public void startAnalysis() {
        this.status = "IN_PROGRESS";
    }

    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class AgendaAnalysis {
        /**
         * 안건 ID
         */
        private String agendaId;

        /**
         * 안건 제목
         */
        private String title;

        /**
         * AI 요약 (간략)
         */
        private String aiSummaryShort;

        /**
         * 논의 주제
         */
        private String discussion;

        /**
         * 결정 사항
         */
        private List<String> decisions;

        /**
         * 보류 사항
         */
        private List<String> pending;

        /**
         * 추출된 Todo 목록
         */
        private List<String> extractedTodos;
    }
}