/*
 * 홀 ID → 실측 홀 도면(크롤 JPG) URL + 전시 바닥면 캘리브레이션.
 * 에셋은 docs/assets/floorplans 크롤본을 public/media/floorplans 로 빌드 내장(V46 포스터 패턴).
 * 매핑 불가한 홀은 null — 캔버스는 기존 다크 서피스만 렌더(FloorplanCanvas onError 폴백과 동일).
 *
 * FLOOR_REGIONS: 도면 이미지 안에서 전시 바닥면(1전시장 연노랑·2전시장 라임그린 채색 영역)이
 * 차지하는 사각 영역의 이미지 분율 [x0, y0, x1, y1]. 도면 JPG는 여백·범례·미니맵을 포함하므로
 * 이 영역을 홀 좌표계(0,0~W,H m)에 정렬해야 부스가 "평면도 안"에 배치돼 보인다(소유자 지시 2026-07-14).
 * 값은 색상 블롭 자동 측정(유의미 블롭 합집합 — 중앙 통로로 갈라진 A/B 구역 포함) 산출.
 * 도면 교체 시 재측정 필요. 홀 치수는 V59에서 도면 방향(가로×세로)으로 정렬됨.
 */
export type FloorRegion = [number, number, number, number];

const FLOOR_REGIONS: Record<string, FloorRegion> = {
  H1: [0.1583, 0.4015, 0.9167, 0.7956],
  H2: [0.0667, 0.3723, 0.8944, 0.8029],
  H3: [0.0667, 0.3759, 0.8972, 0.8102],
  H4: [0.0667, 0.3759, 0.8972, 0.8066],
  H5: [0.0528, 0.4416, 0.9028, 0.8686],
  H6: [0.3222, 0.2162, 0.6917, 0.8176],
  H7: [0.2583, 0.2027, 0.7306, 0.8547],
  H8: [0.275, 0.2095, 0.7194, 0.8446],
  H9: [0.2833, 0.2061, 0.7111, 0.8581],
  H10: [0.2778, 0.2027, 0.7194, 0.8581],
};

function hallKey(hallId: string | null | undefined): string | null {
  const m = /^H(\d+)$/i.exec((hallId ?? '').trim());
  return m ? `H${Number(m[1])}` : null;
}

export function hallFloorplanUrl(hallId: string | null | undefined): string | null {
  const key = hallKey(hallId);
  if (!key || !(key in FLOOR_REGIONS)) return null;
  return `/media/floorplans/hall${key.slice(1)}.jpg`;
}

/** 도면 이미지 내 전시 바닥면 분율 영역 — 캔버스가 이 영역을 홀 사각형에 정렬한다. */
export function hallFloorRegion(hallId: string | null | undefined): FloorRegion | null {
  const key = hallKey(hallId);
  return key ? FLOOR_REGIONS[key] ?? null : null;
}

/*
 * DWG(CAD) 언더레이 — tools/cad/render_hall_png.py 가 홀 바닥면을 margin 3m 여백으로
 * 정확 크롭 렌더하므로 캘리브레이션이 렌더 파라미터에서 결정적으로 나온다:
 *   region = [m/(W+2m), m/(D+2m), (m+W)/(W+2m), (m+D)/(D+2m)]  (m=3, W×D=홀 치수 V59)
 * 현재 제1전시장 H1~H5 렌더 완료분만 노출 — 미보유 홀은 null(탭 비활성).
 */
const DWG_MARGIN_M = 3;
// 제2전시장(H6~10)은 CAD 원본에서 기울어 배치 — 렌더 시 회전 보정 완료(fast_render --rotate):
//   H6 -12° · H9 -11° · H10 +11° · H7/H8 축정렬. 좌표 근거 docs/analysis/cad-extraction.md §K2.
const DWG_HALL_DIMS: Record<string, [number, number]> = {
  H1: [171, 63],
  H2: [171, 63],
  H3: [171, 63],
  H4: [171, 63],
  H5: [171, 63],
  H6: [60, 93],
  H7: [90, 126],
  H8: [90, 126],
  H9: [99, 132],
  H10: [99, 132],
};

export function hallDwgUrl(hallId: string | null | undefined): string | null {
  const key = hallKey(hallId);
  if (!key || !(key in DWG_HALL_DIMS)) return null;
  return `/media/floorplans/dwg/hall${key.slice(1)}.png`;
}

export function hallDwgRegion(hallId: string | null | undefined): FloorRegion | null {
  const key = hallKey(hallId);
  const dims = key ? DWG_HALL_DIMS[key] : undefined;
  if (!dims) return null;
  const [w, d] = dims;
  const m = DWG_MARGIN_M;
  return [m / (w + 2 * m), m / (d + 2 * m), (m + w) / (w + 2 * m), (m + d) / (d + 2 * m)];
}
