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

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 홀 마스터·트렌치·비상구 조회 매퍼 — 프론트 캔버스의 홀 치수·트렌치 그리드 하드코딩 해소(계약 확장).
 * 기존 스키마(hall·trench·hall_exit, V2~V5)만 조회하며 마이그레이션을 변경하지 않는다.
 *
 * <p>★backend-dev 추가 매퍼(db-engineer 계약 §3 밖) — 기존 테이블 read-only. 계약 갱신 기록: {@code _workspace}.
 */
@Mapper
public interface HallMapper {

    /** 홀 마스터 헤더(치수·천장·목표 부스 수·바닥하중·가정 트렌치 여부) — 테넌트 스코프. 없으면 null. */
    Map<String, Object> findHall(@Param("hallId") String hallId, @Param("tenantId") String tenantId);

    /** 홀 트렌치 좌표 목록(가정 그리드 포함) — 캔버스 오버레이·배선 참조용. */
    List<Map<String, Object>> findTrenches(@Param("hallId") String hallId);

    /** 홀 비상구 좌표·이격 목록 — 캔버스 비상구 표시용. */
    List<Map<String, Object>> findExits(@Param("hallId") String hallId);

    /** 홀 마스터 전체(전시장 순) — 평면도 선택 트리 대분류·중분류 근거(V60). */
    List<Map<String, Object>> findAllHalls();

    /** 홀 구역(소분류) 전체 — 평면도 선택 트리(V60 hall_zone). */
    List<Map<String, Object>> findAllZones();

    /** 구역 단건(경계 좌표) — 구역 제한 자동배치 근거. 없으면 null. */
    Map<String, Object> findZone(@Param("zoneId") String zoneId);

    /** 홀 기둥(V62 hall_pillar, 실측) — 자동배치 회피·캔버스 표시. */
    List<Map<String, Object>> findPillars(@Param("hallId") String hallId);

    /** 벽·계단·엘리베이터·문 장애물(V63 hall_obstacle, 실측) — 자동배치 회피·캔버스 표시. */
    List<Map<String, Object>> findObstacles(@Param("hallId") String hallId);
}
