-- V59: 홀 치수 방향을 공식 평면도(도면 가로×세로) 기준으로 정렬 — 실 운영 전환(소유자 지시 2026-07-14).
-- 근거: 홀 도면 JPG 10장 전수 실측 결과 전 홀이 DB(width_m×depth_m)와 방향이 뒤집혀 있어
--       (예: H1 도면 171×63 vs DB 63×171, H7 도면 90×126 vs DB 126×90) 부스 자동배치가
--       도면과 90° 어긋난 방향으로 생성됐다. 면적·기타 컬럼 불변.
-- 부수 재유도: 비상구(V4)·가정 트렌치(V5)는 치수에서 유도된 가정값이므로 재생성.
--       (trench 는 참조 FK 없음 — is_assumed 행만 삭제 후 재유도. CAD 실측 대체 시 V5 주석과 동일 TODO.)

-- 1) 치수 스왑(목표값 직접 지정 — 값 기준 멱등)
UPDATE hall SET width_m = 171, depth_m = 63  WHERE id IN ('H1','H2','H3','H4','H5');
UPDATE hall SET width_m = 60,  depth_m = 93  WHERE id = 'H6';
UPDATE hall SET width_m = 90,  depth_m = 126 WHERE id IN ('H7','H8');
UPDATE hall SET width_m = 99,  depth_m = 132 WHERE id IN ('H9','H10');

-- 2) 가정 비상구 재유도(V4 공식 동일 — 각 변 중앙 4개소, ON CONFLICT UPDATE 로 좌표 갱신)
INSERT INTO hall_exit (id, hall_id, geom, clearance_m, is_assumed)
SELECT h.id || '-EXIT-' || g.tag,
       h.id,
       ST_SetSRID(ST_MakePoint(g.x, g.y), 0),
       3.0,
       true
FROM hall h
CROSS JOIN LATERAL (VALUES
    ('S', h.width_m / 2.0, 0.0),
    ('N', h.width_m / 2.0, h.depth_m),
    ('W', 0.0,             h.depth_m / 2.0),
    ('E', h.width_m,       h.depth_m / 2.0)
) AS g(tag, x, y)
WHERE h.id IN ('H1','H2','H3','H4','H5','H6','H7','H8','H9','H10')
ON CONFLICT (id) DO UPDATE SET
    geom        = EXCLUDED.geom,
    clearance_m = EXCLUDED.clearance_m,
    is_assumed  = EXCLUDED.is_assumed;

-- 3) 가정 트렌치 재생성(V5 공식 동일 — 6m 격자, 구 방향 격자 제거 후 재유도)
DELETE FROM trench
WHERE is_assumed AND hall_id IN ('H1','H2','H3','H4','H5','H6','H7','H8','H9','H10');

INSERT INTO trench (id, hall_id, geom,
                    supply_power, supply_water, supply_air, supply_network, supply_gas, is_assumed)
SELECT h.id || '-T-' || gx || '-' || gy,
       h.id,
       ST_SetSRID(ST_MakePoint(gx, gy), 0),
       true, true, true, true, h.has_gas, true
FROM hall h
CROSS JOIN LATERAL generate_series(3, floor(h.width_m)::int - 3, 6) AS gx
CROSS JOIN LATERAL generate_series(3, floor(h.depth_m)::int - 3, 6) AS gy
WHERE h.id IN ('H1','H2','H3','H4','H5','H6','H7','H8','H9','H10')
ON CONFLICT (id) DO NOTHING;
