-- 킨텍스 — F035 물량서(BOQ) 데모 부스 + F084 옥션 수수료·정산 연동 (멱등)
-- PLANNING FEATURE_GAP F035/F084:
--   F035 BOQ = 부스 설계 데이터(M2 booth/layout·M4 utility_order — 읽기)에서 규칙 기반 물량 집계(신규 테이블 불필요).
--   F084 옥션 수수료 = 낙찰 확정 시 수수료(요율 룰셋 RATE.auctionFeeRate, 없으면 기본 5%)를
--        정산 invoice(category='auction_fee', source_ref=낙찰 id)로 멱등 청구.
-- 보안 불변: 본 마이그레이션은 V28 단독. V1~V27 및 타 팀 마이그레이션을 변경하지 않는다. 전부 멱등.

-- 1) 정산 청구서에 유형·출처 순증 (F084) ----------------------------------------
--    기존 청구는 DEFAULT 'rental'로 자동 백필(회귀 0). source_ref = 낙찰 id(멱등 키).
ALTER TABLE invoice ADD COLUMN IF NOT EXISTS category   varchar(30) NOT NULL DEFAULT 'rental';
ALTER TABLE invoice ADD COLUMN IF NOT EXISTS source_ref varchar(80);
COMMENT ON COLUMN invoice.category   IS 'rental(임대·유틸) | auction_fee(옥션 수수료) — 정산 유형 구분(F084)';
COMMENT ON COLUMN invoice.source_ref IS '출처 참조(옥션 수수료=award.id) — 낙찰당 수수료 1건 멱등 보장';

-- 낙찰당 수수료 청구 1건 — source_ref 부분 유니크(중복 생성 원천 차단) --------------
CREATE UNIQUE INDEX IF NOT EXISTS uq_invoice_source_ref ON invoice (source_ref) WHERE source_ref IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_invoice_category ON invoice (event_id, category);

-- 2) 옥션 수수료율 룰셋(%) — 없으면 서비스 기본 5% (F084) -------------------------
INSERT INTO master_data (category, code, name, value_json, ruleset_version) VALUES
  ('RATE', 'auctionFeeRate', '옥션 낙찰 수수료율(%)', '5'::jsonb, 'rates-v1.0')
ON CONFLICT (category, code) DO NOTHING;

-- 3) BOQ 데모 부스 — AUC-2026-0102(제목 "A-102 …")가 실 물량으로 산출되게 (F035) ----
--    SRID 0 = 홀 로컬 평면(미터). 12m × 9m = 108㎡ 폴리곤. 기존 event(e-2026-smf)·hall(H1) 참조.
--    assigned_company_name 은 기존 청구(inv-smf-0001)와 동일 → 정산 generate 시 멱등 스킵(중복 없음).
INSERT INTO layout (id, event_id, hall_id, version, name, status) VALUES
  ('ly-smf-boq', 'e-2026-smf', 'H1', 1, 'SMF 데모 배치(BOQ)', 'confirmed')
ON CONFLICT (id) DO NOTHING;

INSERT INTO booth (id, layout_id, booth_no, booth_type, geom, size_w_m, size_d_m, height_m,
                   floor_load_t_per_m2, assigned_company_name, premium) VALUES
  ('booth-smf-a102', 'ly-smf-boq', 'A-102', 'independent',
   ST_GeomFromText('POLYGON((0 0,12 0,12 9,0 9,0 0))', 0), 12, 9, 3.5, 1.0,
   '(주)스마트오토메이션', true)
ON CONFLICT (id) DO NOTHING;

-- 유틸리티 신청 1건(전기·네트워크) — BOQ 설비 라인 근거 --------------------------
INSERT INTO utility_order (id, event_id, booth_id, status, quote, supply_timing) VALUES
  ('uo-smf-a102', 'e-2026-smf', 'booth-smf-a102', 'submitted',
   '{"total":2340000,"items":[{"kind":"electric","amount":1800000},{"kind":"network","amount":540000}]}'::jsonb,
   '반입일 D-1')
ON CONFLICT (id) DO NOTHING;
