package com.zioinfo.kintex.module.m2.dto;

import com.fasterxml.jackson.annotation.JsonInclude;

import java.util.List;

/**
 * 자동 생성 배치안 후보(SCR-04 비교 카드).
 *
 * @param optionId       후보 식별자
 * @param label          라벨("배치안 A/B/C")
 * @param summary        지표 요약
 * @param booths         후보 부스 배열 — "이 안으로 편집 시작"/병합 소스(계약 확장, 프론트 gap #3 해소, NON_NULL)
 * @param s7RenderJobId  S7 홀 전경(조감) 생성 잡 ID — 완료 시 WebSocket 푸시로 카드 이미지 교체
 * @param aiSummary      배치안 AI 장단점 요약(ai=true 시에만, 엔진 산출 metrics 근거 2~3줄) — 실패/미요청 시 null(NON_NULL 로 응답 제외)
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public record AutoLayoutOption(
        String optionId,
        String label,
        LayoutSummary summary,
        List<BoothDto> booths,
        String s7RenderJobId,
        String aiSummary
) {
    /** 기존 4필드 + s7 생성자 호환 — aiSummary 미부여(null). */
    public AutoLayoutOption(String optionId, String label, LayoutSummary summary,
                            List<BoothDto> booths, String s7RenderJobId) {
        this(optionId, label, summary, booths, s7RenderJobId, null);
    }

    /** AI 요약을 덧입힌 사본 반환(불변). */
    public AutoLayoutOption withAiSummary(String summary) {
        return new AutoLayoutOption(optionId, label, this.summary, booths, s7RenderJobId, summary);
    }
}
