๐Ÿช„ ์ˆ˜์—…์•ฑ ๊ธฐํš ์ŠคํŠœ๋””์˜ค

๊ณ„ํš๋งŒ ์ ์œผ๋ฉด โ†’ ๋งŒ๋“ค๊ธฐ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ์ž๋™ ์™„์„ฑ โ†’ ์Šน์žฌ์Œค์ด ๋Œ€์‹  ๋ฐฐํฌ

์ง„ํ–‰ ๋ฐฉ๋ฒ•
โ‘  ์•„๋ž˜์— ๋‚ด ์ˆ˜์—…์•ฑ ๊ณ„ํš์„ ์ ์Šต๋‹ˆ๋‹ค โ†’ โ‘ก [ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ]์„ ๋ˆ„๋ฅด๋ฉด 2๊ฐœ์˜ ํ”„๋กฌํ”„ํŠธ(์•ฑ ๋งŒ๋“ค๊ธฐ โ†’ Supabase SQL)๊ฐ€ ์ž๋™์œผ๋กœ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค โ†’ โ‘ข ์ œ์ถœํ•˜๋ฉด ์Šน์žฌ์Œค์—๊ฒŒ ๊ณต์œ ๋˜์–ด, ์Šน์žฌ์Œค์ด Claude๋กœ ๋Œ๋ ค ๋Œ€์‹  ๋งŒ๋“ค์–ดยท๋ฐฐํฌํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
โ“ URLยทanon key ์–ด๋””์„œ ์ฐพ๋‚˜์š”? (ํŽผ์น˜๊ธฐ)
Supabase ์ ‘์† โ†’ ์™ผ์ชฝ ์•„๋ž˜ โš™๏ธ Project Settings โ†’ Data API์˜ Project URL ๋ณต์‚ฌ โ†’ API Keys์˜ anon(๋˜๋Š” publishable) ํ‚ค ๋ณต์‚ฌ. service_role(๋น„๋ฐ€) ํ‚ค๋Š” ์ ˆ๋Œ€ ๋„ฃ์ง€ ๋งˆ์„ธ์š”! anon ํ‚ค๋งŒ.
๐Ÿง‘โ€๐Ÿซ ๊ด€๋ฆฌ์ž(์Šน์žฌ์Œค)์šฉ โ€” ์ฒ˜์Œ 1ํšŒ ์„ค์ •
์ด ํŽ˜์ด์ง€๊ฐ€ ๊ธฐํš์„ ์ €์žฅํ•  ํ‘œ์ž…๋‹ˆ๋‹ค. Supabase(A) SQL Editor์— ๋ถ™์—ฌ๋„ฃ๊ณ  Run. ์ฝ๊ธฐ(select)๋Š” anon์—๊ฒŒ ๋ง‰์•„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋‚จ์˜ ๊ธฐํšยทํ‚ค๋ฅผ ๋ชป ์ฝ์Šต๋‹ˆ๋‹ค(์Šน์žฌ์Œค์€ Table Editor๋กœ ์—ด๋žŒ).
create table if not exists teacher_plans (
  id uuid primary key default gen_random_uuid(),
  created_at timestamptz not null default now(),
  teacher text, plan text, data_types text, purpose text,
  app_plan text, supa_url text, supa_key text,
  prompt_app text, prompt_sql text
);
alter table teacher_plans enable row level security;
drop policy if exists "anon insert plans" on teacher_plans;
create policy "anon insert plans" on teacher_plans for insert to anon
  with check ( char_length(coalesce(plan,'')) <= 5000 );
-- ์ฝ๊ธฐ ์ •์ฑ… ์—†์Œ = anon ์ฝ๊ธฐ ๋ถˆ๊ฐ€(์˜๋„์ )