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
 * 회의 종료 화면에서 사용
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "안건별 섹션 조회 응답")
public class AgendaSectionResponse {

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

    @Schema(description = "안건별 섹션 목록")
    private List<AgendaSectionItem> sections;

    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @Schema(description = "안건별 섹션 항목")
    public static class AgendaSectionItem {

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

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

        @Schema(description = "안건 번호", example = "1")
        private Integer agendaNumber;

        @Schema(description = "안건 제목", example = "Q1 마케팅 전략 수립")
        private String agendaTitle;

        @Schema(description = "AI 생성 짧은 요약", example = "타겟 고객을 20-30대로 설정")
        private String aiSummaryShort;

        @Schema(description = "안건별 회의록 요약", example = "신제품의 주요 타겟 고객층을 20-30대 직장인으로 설정하고...")
        private String summary;

        @Schema(description = "보류 사항 목록")
        private List<String> pendingItems;

        @Schema(description = "AI 추출 Todo 목록")
        private List<TodoItem> todos;

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

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

        @Getter
        @Builder
        @NoArgsConstructor
        @AllArgsConstructor
        @Schema(description = "Todo 항목")
        public static class TodoItem {

            @Schema(description = "Todo 제목", example = "시장 조사 보고서 작성")
            private String title;

            @Schema(description = "담당자", example = "김민준")
            private String assignee;

            @Schema(description = "마감일", example = "2025-02-15")
            private String dueDate;

            @Schema(description = "설명", example = "20-30대 타겟 시장 조사")
            private String description;

            @Schema(description = "우선순위", example = "HIGH", allowableValues = {"HIGH", "MEDIUM", "LOW"})
            private String priority;
        }
    }
}
