From 7fbfff7f54242f1635b97ba5a7ed428c841521ff Mon Sep 17 00:00:00 2001 From: gahusb Date: Sat, 16 May 2026 05:17:25 +0900 Subject: [PATCH] =?UTF-8?q?feat(db):=20survey=5Fresponses=20=ED=85=8C?= =?UTF-8?q?=EC=9D=B4=EB=B8=94=20=EB=A7=88=EC=9D=B4=EA=B7=B8=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=E2=80=94=20CONTOUR=20PMF=20=EC=84=A4?= =?UTF-8?q?=EB=AC=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - anon INSERT 허용 (불특정 다수 응답) - SELECT 정책 없음 → service role(admin)만 조회 가능 - index: created_at desc + email partial - 메타: user_agent, referrer, utm_*, completion_seconds Co-Authored-By: Claude Opus 4.7 (1M context) --- .../2026-05-16-create-survey-responses.sql | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 supabase/migrations/2026-05-16-create-survey-responses.sql diff --git a/supabase/migrations/2026-05-16-create-survey-responses.sql b/supabase/migrations/2026-05-16-create-survey-responses.sql new file mode 100644 index 0000000..3eb3027 --- /dev/null +++ b/supabase/migrations/2026-05-16-create-survey-responses.sql @@ -0,0 +1,55 @@ +-- CONTOUR PMF 설문 응답 저장. +-- 불특정 다수 익명 응답: anon INSERT 허용, SELECT는 service role(admin)만. + +create table public.survey_responses ( + id uuid primary key default gen_random_uuid(), + created_at timestamptz not null default now(), + + -- Q1 식별 + age_range text, + status text, + + -- Q2 자각 빈도 + awareness_freq text, + + -- Q3 도구 사용 (멀티) + tools_used text[], + tools_other text, + + -- Q4 비용 + cost_range text, + + -- Q5 만족도 + best_tool text, + best_satisfy int, + + -- Q6 자유 의견 (핵심 자발 발화) + free_opinion text, + + -- Q7 이메일 (옵션) + email text, + email_confirmation_sent boolean default false, + + -- 메타 + user_agent text, + referrer text, + utm_source text, + utm_medium text, + utm_campaign text, + + -- 분석용 + completion_seconds int +); + +create index idx_survey_created on public.survey_responses(created_at desc); +create index idx_survey_email on public.survey_responses(email) where email is not null; + +-- RLS +alter table public.survey_responses enable row level security; + +-- anon insert 허용 (불특정 다수 응답 받기) +create policy "anon insert survey" on public.survey_responses + for insert to anon + with check (true); + +-- SELECT 정책 없음 → service role(admin)만 조회 가능