package com.unicorn.hgzero.meeting.infra.dto.response;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

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

/**
 * 참석자별 회의록 조회 응답 DTO
 * AI Service가 통합 회의록 생성 시 사용
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "참석자별 회의록 조회 응답")
public class ParticipantMinutesResponse {

    @Schema(description = "회의 ID", example = "MTG-2025-001")
    private String meetingId;

    @Schema(description = "참석자별 회의록 목록")
    private List<ParticipantMinutesItem> participantMinutes;

    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @Schema(description = "참석자별 회의록 항목")
    public static class ParticipantMinutesItem {

        @Schema(description = "회의록 ID", example = "MIN-001")
        private String minutesId;

        @Schema(description = "작성자 사용자 ID", example = "user@example.com")
        private String userId;

        @Schema(description = "회의록 제목", example = "Q1 마케팅 전략 회의 - 김민준 작성")
        private String title;

        @Schema(description = "회의록 상태", example = "FINALIZED", allowableValues = {"DRAFT", "FINALIZED"})
        private String status;

        @Schema(description = "버전", example = "1")
        private Integer version;

        @Schema(description = "작성자 ID", example = "user@example.com")
        private String createdBy;

        @Schema(description = "생성 시간", example = "2025-01-20T14:30:00")
        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
        private LocalDateTime createdAt;

        @Schema(description = "최종 수정 시간", example = "2025-01-20T15:30:00")
        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
        private LocalDateTime lastModifiedAt;

        @Schema(description = "회의록 섹션 목록")
        private List<MinutesSection> sections;

        @Getter
        @Builder
        @NoArgsConstructor
        @AllArgsConstructor
        @Schema(description = "회의록 섹션")
        public static class MinutesSection {

            @Schema(description = "섹션 ID", example = "SEC-001")
            private String sectionId;

            @Schema(description = "섹션 제목", example = "주요 논의 사항")
            private String title;

            @Schema(description = "섹션 유형", example = "DISCUSSION", allowableValues = {"DISCUSSION", "DECISION", "ACTION_ITEM", "NOTE"})
            private String type;

            @Schema(description = "섹션 내용", example = "Q1 마케팅 캠페인 방향성에 대한 논의가 진행되었습니다...")
            private String content;

            @Schema(description = "섹션 순서", example = "1")
            private Integer orderIndex;
        }
    }
}
