package com.kt.event.eventservice.application.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * AI 추천 요청 DTO
 *
 * AI 서비스에 이벤트 추천 생성을 요청합니다.
 *
 * @author Event Service Team
 * @version 1.0.0
 * @since 2025-10-27
 */
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "AI 추천 요청")
public class AiRecommendationRequest {

    @NotNull(message = "매장 정보는 필수입니다.")
    @Valid
    @Schema(description = "매장 정보", required = true)
    private StoreInfo storeInfo;

    /**
     * 매장 정보
     */
    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    @Schema(description = "매장 정보")
    public static class StoreInfo {

        @NotNull(message = "매장 ID는 필수입니다.")
        @Schema(description = "매장 ID", required = true, example = "str_20250124_001")
        private String storeId;

        @NotNull(message = "매장명은 필수입니다.")
        @Schema(description = "매장명", required = true, example = "우진네 고깃집")
        private String storeName;

        @NotNull(message = "업종은 필수입니다.")
        @Schema(description = "업종", required = true, example = "음식점")
        private String category;

        @Schema(description = "매장 설명", example = "신선한 한우를 제공하는 고깃집")
        private String description;
    }
}
