o2o-site-AEO/postgres-init/migrations/0010_place_itineraries.sql

30 lines
1.6 KiB
SQL

-- 0010 · LLM 여행 일정 저장 표
--
-- 일정은 지금까지 저장하지 않고 빌드마다 즉석 계산했다(services/itinerary.py).
-- LLM 생성으로 바꾸면서 호출이 건당 20~50초·유료가 되어 매 빌드 재생성이 불가능하다 —
-- 업장·기간당 한 번 만들어 두고 그대로 쓴다.
-- ★ area_contents 에 넣지 않는다: 그 표의 유일성 근거는 지역·출처 기준이고 이 값은 업장에 붙는다.
--
-- ★ 2026-09-11 기준 dev DB 에는 아직 적용하지 않았다. 그 DB 의 schema_migrations 에는
-- 다른 브랜치의 0009_faq_catalog_columns 가 기록돼 있어, migrate.py 가 이 브랜치의
-- 0009_align_with_init_sql 까지 함께 적용하려 든다 — 번호 정리가 먼저다.
CREATE TABLE IF NOT EXISTS public.place_itineraries (
place_itinerary_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
place_id uuid NOT NULL,
duration VARCHAR(20) NOT NULL,
body JSONB NOT NULL,
generated_by SMALLINT NOT NULL,
model VARCHAR(100) NULL,
generated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
deleted BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE INDEX IF NOT EXISTS ix_place_itineraries_place ON public.place_itineraries (place_id);
CREATE UNIQUE INDEX IF NOT EXISTS uq_place_itineraries
ON public.place_itineraries (place_id, duration)
WHERE deleted = FALSE;