Spaces:
Sleeping
Sleeping
Download backend/sql/020_care_messages.sql from stylevoice/talk: direct link, hf CLI and curl.
- Browser
- Download file 3.56 kB
-
https://huggingface.co/spaces/stylevoice/talk/resolve/main/backend/sql/020_care_messages.sql
- Command line
-
hf download hf://spaces/stylevoice/talk/backend/sql/020_care_messages.sql
-
curl -L -o 020_care_messages.sql https://huggingface.co/spaces/stylevoice/talk/resolve/main/backend/sql/020_care_messages.sql
3.56 kB
| -- μλΆ λ©μμ§ (`/message`) β λ³ΈμΈ μμμΌλ‘ κ°μ‘±/μΉκ΅¬μκ² λ³΄λΌ μ§§μ μμ± λ©μμ§. | |
| -- | |
| -- νλ¦: | |
| -- 1) μ¬μ©μκ° μμ±/ν μ€νΈλ‘ "μ΄λ° μλΆ λ³΄λ΄μ€" μ§μ | |
| -- 2) LLM μ΄ 1~2λ¬Έμ₯ λ³Έλ¬Έ μμ± + μ¬μ©μ μμ ICL TTS ν©μ± | |
| -- 3) wav λ₯Ό Supabase Storage (scheduled-audio bucket μ¬μ¬μ©) μ μ λ‘λ | |
| -- 4) μ¦μ 곡μ : μ¬μ©μκ° μΉ΄μΉ΄μ€ JS SDK λ‘ λ³ΈμΈ μΉ΄ν‘μμ κ°μ‘± μ±ν λ°© μ ν β /listen/<id> λ§ν¬ λ°μ‘ | |
| -- 5) μμ½: μκ° λλ¬ μ μ¬μ©μ λ³ΈμΈμκ² μλ¦Όν‘ ("μ€λΉλμ΄μ. 곡μ νκΈ°") β ν΄λ¦ β /listen/<id> νμ΄μ§μ | |
| -- [곡μ νκΈ°] λ²νΌ β μΉ΄ν‘ κ³΅μ | |
| -- | |
| -- λ°μ μ νμ μ¬μ©μ λ³ΈμΈ β μλ¦Όν‘μ μ¬μ©μ μμ μκ²λ§ λ°μ‘ (μ μ± μμ ), κ°μ‘±μκ²λ μ¬μ©μ μΉ΄ν‘μΌλ‘ μ§μ . | |
| -- λ°λ μ¬λ λ²νΈ μμ§ μμ (PIPA λΆλ΄ ννΌ). recipient_label μ μ¬μ©μκ° μκΈ°λ§ μμ보λ λ©λͺ¨. | |
| CREATE TABLE IF NOT EXISTS public.care_messages ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE, | |
| -- μ λ ₯ | |
| recipient_label TEXT NOT NULL DEFAULT '', -- "μ΄λ¨Έλ" / "μλΉ " λ± μ¬μ©μ λ©λͺ¨ | |
| voice_input_text TEXT, -- STT λλ μ§μ μ λ ₯ν μ§μλ¬Έ (μ΄λ ₯) | |
| -- μμ±λ κ²°κ³Ό | |
| generated_text TEXT NOT NULL DEFAULT '', -- LLM μ΄ λ§λ λ³Έλ¬Έ (μ€μ μμ± ν μ€νΈ) | |
| audio_file_path TEXT, -- storage κ²½λ‘ (μμ μ©) | |
| audio_file_url TEXT, -- 1λ signed URL (λͺ©λ‘ 미리λ£κΈ°) | |
| voice_storage_path TEXT, -- ν©μ±μ μ¬μ©ν μ¬μ©μ μμ (μ¬ν©μ± μΆμ ) | |
| -- μμ½ (NULL = μ¦μ 곡μ , μμ½ μμ) | |
| scheduled_at TIMESTAMPTZ, | |
| timezone TEXT NOT NULL DEFAULT 'Asia/Seoul', | |
| next_fire_at TIMESTAMPTZ, | |
| last_fired_at TIMESTAMPTZ, | |
| active BOOLEAN NOT NULL DEFAULT TRUE, | |
| -- λΆμ | |
| shared_at TIMESTAMPTZ, -- μ¬μ©μκ° [곡μ νκΈ°] λ²νΌ λλ₯Έ μκ° | |
| created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), | |
| updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_care_messages_user | |
| ON public.care_messages (user_id, created_at DESC); | |
| CREATE INDEX IF NOT EXISTS idx_care_messages_due | |
| ON public.care_messages (active, next_fire_at) | |
| WHERE next_fire_at IS NOT NULL; | |
| ALTER TABLE public.care_messages ENABLE ROW LEVEL SECURITY; | |
| DROP POLICY IF EXISTS care_messages_owner ON public.care_messages; | |
| CREATE POLICY care_messages_owner ON public.care_messages | |
| FOR ALL | |
| USING (user_id = auth.uid()) | |
| WITH CHECK (user_id = auth.uid()); | |
| -- updated_at μλ κ°±μ | |
| CREATE OR REPLACE FUNCTION public._care_messages_touch_updated_at() | |
| RETURNS TRIGGER AS $$ | |
| BEGIN | |
| NEW.updated_at = NOW(); | |
| RETURN NEW; | |
| END; | |
| $$ LANGUAGE plpgsql; | |
| DROP TRIGGER IF EXISTS care_messages_touch_updated_at ON public.care_messages; | |
| CREATE TRIGGER care_messages_touch_updated_at | |
| BEFORE UPDATE ON public.care_messages | |
| FOR EACH ROW EXECUTE FUNCTION public._care_messages_touch_updated_at(); | |
| -- βββββββββ Storage μ μ± βββββββββ | |
| -- scheduled-audio bucket μ¬μ¬μ© (sql/016 μμ μ΄λ―Έ μμ±). κ°μ ν΄λ (<user_id>/) | |
| -- μμ care λ©μμ§ wav λ₯Ό λλ―λ‘ μΆκ° μ μ± λΆνμ. | |
| -- care νμΌλͺ 컨벀μ : <user_id>/care-<message_id>-<timestamp>.wav | |