-- V17: M10 관람객 등록 · 리드 (사전등록·배지·리드 스코어링)
-- 멱등(IF NOT EXISTS / ON CONFLICT DO NOTHING). 기존 마이그레이션(V1~V13) 불변.
-- ★ 개인정보(name/phone/email)는 원문 저장하되 API 응답에서는 매퍼가 마스킹만 노출한다(N2/R10).
--   원문 컬럼은 조회 SQL 의 SELECT 목록에 절대 포함하지 않는다(마스킹 표현식만 반환).

-- ── 관람객 사전등록 (SCR-30) ────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS visitor_registration (
    id             varchar(40)  PRIMARY KEY,
    event_id       varchar(40)  NOT NULL REFERENCES event(id) ON DELETE CASCADE,
    name           varchar(120) NOT NULL,          -- 원문(응답 금지 · 마스킹만 노출)
    phone          varchar(40),                    -- 원문(응답 금지)
    email          varchar(200),                   -- 원문(응답 금지)
    company        varchar(200),
    visitor_type   varchar(20)  NOT NULL DEFAULT 'visitor',  -- visitor|buyer|vip
    agree_privacy  boolean      NOT NULL DEFAULT false,
    agree_marketing boolean     NOT NULL DEFAULT false,
    badge_code     varchar(40)  NOT NULL,          -- 배지/QR 코드(민감정보 아님)
    badge_issued   boolean      NOT NULL DEFAULT false,
    checkin_state  varchar(20)  NOT NULL DEFAULT 'waiting',   -- done|waiting|cancelled
    registered_at  timestamptz  NOT NULL DEFAULT now(),
    created_at     timestamptz  NOT NULL DEFAULT now()
);
-- 이메일 중복 등록 방지(행사 단위) — register 재요청 시 기존 등록 재반환 근거.
CREATE UNIQUE INDEX IF NOT EXISTS uq_visitor_reg_event_email
    ON visitor_registration (event_id, lower(email)) WHERE email IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_visitor_reg_event ON visitor_registration (event_id);
CREATE INDEX IF NOT EXISTS idx_visitor_reg_regdate ON visitor_registration (event_id, registered_at);

-- ── 리드 (SCR-32, 참가업체·부스 방문 리드) ──────────────────────────────────
CREATE TABLE IF NOT EXISTS lead (
    id             varchar(40)  PRIMARY KEY,
    event_id       varchar(40)  NOT NULL REFERENCES event(id) ON DELETE CASCADE,
    booth_id       varchar(40),                    -- 부스 스코프(선택 · booth 시드 전엔 NULL 허용)
    name           varchar(120) NOT NULL,          -- 원문(응답 금지)
    phone          varchar(40),                    -- 원문(응답 금지)
    email          varchar(200),                   -- 원문(응답 금지)
    role           varchar(120),
    company        varchar(200),
    product        varchar(200),
    interest       integer      NOT NULL DEFAULT 3, -- 1..5 관심도
    score          integer      NOT NULL DEFAULT 0, -- 0..100 AI 저장 스코어
    ai_reasons     jsonb        NOT NULL DEFAULT '[]'::jsonb,
    activity       jsonb        NOT NULL DEFAULT '[]'::jsonb,
    followup_draft text,
    ai_generated   boolean      NOT NULL DEFAULT true,
    collected_at   timestamptz  NOT NULL DEFAULT now(),
    created_at     timestamptz  NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_lead_event ON lead (event_id);
CREATE INDEX IF NOT EXISTS idx_lead_event_booth ON lead (event_id, booth_id);
CREATE INDEX IF NOT EXISTS idx_lead_score ON lead (event_id, score DESC);

-- ── 시드(기존 event 참조 · 멱등) ────────────────────────────────────────────
-- 관람객 사전등록 데모(원문은 데모용 가명 — 마스킹 표현식 검증 목적).
INSERT INTO visitor_registration
    (id, event_id, name, phone, email, company, visitor_type, agree_privacy, agree_marketing, badge_code, badge_issued, checkin_state, registered_at)
VALUES
  ('vr-smf-001','e-2026-smf','김서희','010-1234-9910','seohee.kim@lg.com','LG전자','visitor',true,true,'KTX-V-0001',true,'done',      TIMESTAMPTZ '2026-08-01 09:10+09'),
  ('vr-smf-002','e-2026-smf','이도준','010-2233-1188','dojun.lee@samsung.com','삼성전자','buyer',true,true,'KTX-V-0002',true,'waiting',TIMESTAMPTZ '2026-08-03 10:20+09'),
  ('vr-smf-003','e-2026-smf','박민서','010-8890-4412','minseo.park@hyundai.com','현대자동차','vip',true,false,'KTX-V-0003',true,'done',  TIMESTAMPTZ '2026-08-04 11:05+09'),
  ('vr-smf-004','e-2026-smf','최상훈','010-5566-2030','sanghoon.choi@indiv.kr',NULL,'visitor',true,false,'KTX-V-0004',false,'cancelled',TIMESTAMPTZ '2026-08-04 14:40+09'),
  ('vr-smf-005','e-2026-smf','정유아','010-7712-6654','yua.jung@future-tech.co.kr','(주)미래기술','buyer',true,true,'KTX-V-0005',true,'done',TIMESTAMPTZ '2026-08-05 09:55+09'),
  ('vr-smf-006','e-2026-smf','한지수','010-3341-7788','jisu.han@doosan.com','두산로보틱스','visitor',true,true,'KTX-V-0006',true,'waiting',TIMESTAMPTZ '2026-08-05 15:30+09'),
  ('vr-smf-007','e-2026-smf','오세연','010-9922-1043','seyeon.oh@nextinno.com','넥스트이노베이션','buyer',true,true,'KTX-V-0007',true,'done',TIMESTAMPTZ '2026-08-06 09:15+09'),
  ('vr-smf-008','e-2026-smf','신재원','010-6604-3399','jaewon.shin@globaltech.io','글로벌테크','visitor',true,false,'KTX-V-0008',false,'waiting',TIMESTAMPTZ '2026-08-06 13:12+09')
ON CONFLICT (id) DO NOTHING;

INSERT INTO lead
    (id, event_id, booth_id, name, phone, email, role, company, product, interest, score, ai_reasons, activity, followup_draft, ai_generated, collected_at)
VALUES
  ('ld-smf-001','e-2026-smf',NULL,'김태훈','010-1120-3021','taehoon.kim@techsol.co.kr','구매 담당자','(주)테크솔루션','협동로봇 HR-A1',5,87,
     '["과거 유사 전시회 로봇 구매 이력 있음","당사 부스 체류 시간 평균 대비 240% 높음","기술 사양서(PDF) 다운로드 2회 기록"]'::jsonb,
     '[{"text":"제품 카탈로그 QR 스캔","at":"오늘 14:22"},{"text":"부스 내 HR-A1 구동 시연 참관","at":"오늘 14:15"}]'::jsonb,
     '안녕하세요, (주)테크솔루션 김 팀장님. KINTEX 부스에 방문해주셔서 감사합니다. 관심을 보이셨던 협동로봇 HR-A1의 상세 기술 사양과 커스텀 제안서를 준비했습니다. 다음 주 중 짧은 미팅이 가능하실까요?',true, TIMESTAMPTZ '2026-08-11 14:22+09'),
  ('ld-smf-002','e-2026-smf',NULL,'이하늘','010-3300-7742','haneul.lee@nextinno.com','기술 기획','넥스트이노베이션','스마트 물류 시스템',3,65,
     '["물류 자동화 세션 참석 이력","부스 체류 시간 평균 수준"]'::jsonb,
     '[{"text":"스마트 물류 데모 영상 시청","at":"오늘 14:15"},{"text":"브로슈어 다운로드","at":"오늘 14:03"}]'::jsonb,
     '안녕하세요, 넥스트이노베이션 이 님. 스마트 물류 시스템에 관심 가져주셔서 감사합니다. 도입 사례집과 ROI 시뮬레이션 자료를 보내드립니다.',true, TIMESTAMPTZ '2026-08-11 14:15+09'),
  ('ld-smf-003','e-2026-smf',NULL,'박연구','010-4400-1188','park@fmlab.re.kr','연구소장','미래제조연구소','AI 비전 검사 모듈',4,82,
     '["AI 비전 검사 데모 3회 재방문","구매 결정권자(연구소장) 직급","견적 요청 폼 작성 완료"]'::jsonb,
     '[{"text":"견적 요청 폼 제출","at":"오늘 14:02"},{"text":"AI 비전 모듈 상세 상담","at":"오늘 13:50"}]'::jsonb,
     '안녕하세요, 미래제조연구소 박 소장님. 요청하신 AI 비전 검사 모듈 견적서를 첨부드립니다. 파일럿 도입 프로그램도 안내드리겠습니다.',true, TIMESTAMPTZ '2026-08-11 14:02+09'),
  ('ld-smf-004','e-2026-smf',NULL,'정설비','010-5500-9003','jung@globaltech.io','설비 담당','글로벌테크','자율주행 AMR',2,44,
     '["AMR 부스 단순 방문","자료 열람 이력 없음"]'::jsonb,
     '[{"text":"부스 QR 스캔","at":"오늘 13:55"}]'::jsonb,
     '안녕하세요, 글로벌테크 정 님. 자율주행 AMR 소개 자료를 보내드립니다. 궁금하신 점이 있으시면 언제든 문의해 주세요.',true, TIMESTAMPTZ '2026-08-11 13:55+09'),
  ('ld-smf-005','e-2026-smf',NULL,'강엔지','010-6600-2250','kang@sctsys.kr','인프라 엔지니어','SCT시스템','클라우드 모니터링',1,28,
     '["짧은 부스 체류","경쟁사 부스 위주 관람"]'::jsonb,
     '[{"text":"부스 QR 스캔","at":"오늘 13:48"}]'::jsonb,
     '안녕하세요, SCT시스템 강 님. 클라우드 모니터링 솔루션 소개서를 보내드립니다.',true, TIMESTAMPTZ '2026-08-11 13:48+09')
ON CONFLICT (id) DO NOTHING;
