-- ============================================================================
-- V101 — F-C7 최근 본 행사·부스 피드 (개인화 홈)
-- 담당: kintex-visitor(VIS) · 작성: 2026-07-23
-- ----------------------------------------------------------------------------
-- 목적: 관람객 조회 이력(행사/부스)을 서버에 저장하고 개인화 홈 피드로 재노출(재방문 전환).
-- 원칙: tenant_id='KINTEX' 고정. 본인(user_id)만. 최근 200건 상한(서비스에서 정리).
--   동일 (user, item) 재조회는 viewed_at 갱신(멱등 UPSERT). 전부 멱등.
-- ============================================================================
CREATE TABLE IF NOT EXISTS visitor_view_history (
    tenant_id   varchar(32)  NOT NULL DEFAULT 'KINTEX',
    id          varchar(64)  NOT NULL,
    user_id     varchar(64)  NOT NULL,
    item_type   varchar(16)  NOT NULL,        -- EVENT/BOOTH
    item_id     varchar(64)  NOT NULL,
    item_title  varchar(200) NOT NULL,
    item_sub    varchar(200),                 -- 부제(홀·기간 등 표시용)
    viewed_at   timestamptz  NOT NULL DEFAULT now(),
    CONSTRAINT pk_visitor_view_history PRIMARY KEY (tenant_id, id),
    CONSTRAINT uq_visitor_view_history_item UNIQUE (user_id, item_type, item_id)
);
CREATE INDEX IF NOT EXISTS ix_visitor_view_history_user ON visitor_view_history (tenant_id, user_id, viewed_at DESC);

-- 데모 계정(admin) 최근 본 이력 3건(멱등) — app_user 존재 시에만.
INSERT INTO visitor_view_history (tenant_id, id, user_id, item_type, item_id, item_title, item_sub, viewed_at)
SELECT * FROM (VALUES
  ('KINTEX','vvh-admin-1','admin-d80a2603','EVENT','e-2026-live','2026 국제 스마트 전시 위크','제1전시장 홀 1~5 · D-2', now()-interval '1 hour'),
  ('KINTEX','vvh-admin-2','admin-d80a2603','EVENT','e-2026-smf','스마트팩토리 코리아 2026','제2전시장 홀 7~8', now()-interval '5 hour'),
  ('KINTEX','vvh-admin-3','admin-d80a2603','BOOTH','booth-a12','글로벌테크 부스 A-12','스마트팩토리 관', now()-interval '1 day')
) AS v(tenant_id,id,user_id,item_type,item_id,item_title,item_sub,viewed_at)
WHERE EXISTS (SELECT 1 FROM app_user u WHERE u.id = 'admin-d80a2603')
ON CONFLICT (user_id, item_type, item_id) DO NOTHING;
