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

import com.fasterxml.jackson.annotation.JsonInclude;

import java.util.List;

/**
 * 부스 설계 스펙(SCR-06 좌측 스펙 패널). 규정 사전검증(M3-1)의 입력이자 나노바나나 씬 컴파일 소스.
 *
 * @param boothType         assembled(조립) | independent(독립) | corner | island
 * @param industry          업종(예: "로봇/제조")
 * @param budget            예산(원)
 * @param zones             공간 존(안내데스크/시연존/상담존/창고)
 * @param wallHeightM       벽체(장치물) 높이(m) — 규정 HEIGHT_MAX(5m) 대상
 * @param signageText       간판 문구(한글 — 나노바나나 렌더 대상)
 * @param rigging           리깅 설정(사용 여부·천장 높이)
 * @param mezzanineAreaRatio 복층 바닥면적 비율(0~1) — 규정 MEZZANINE_RATIO 대상
 * @param materials         자재 목록(방염 여부 포함)
 * @param lightingMode      day|night(조명 프리셋, M4a 연동)
 * @param usesDesignatedLightingOnly 지정 조명만 사용 여부(규정 LIGHTING_BRING_IN)
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public record DesignSpec(
        String boothType,
        String industry,
        Long budget,
        List<Zone> zones,
        Double wallHeightM,
        String signageText,
        Rigging rigging,
        Double mezzanineAreaRatio,
        List<Material> materials,
        String lightingMode,
        Boolean usesDesignatedLightingOnly
) {

    public record Zone(String type, Integer ratioPercent) {
    }

    public record Rigging(boolean use, Double heightM) {
    }

    public record Material(String part, String finish, boolean fireRetardant) {
    }
}
