talk / backend /sql /035_tts_error_events.sql
user
Deploy StyleVoiceChat backend
aa9892b
Raw History Blame Contribute Delete
2.34 kB
-- TTS 생성 μ‹€νŒ¨ 진단 이벀트 (2026-05-20)
--
-- 문제: 였λ₯˜ μ‹ κ³ (error_reports)λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ 데이터(route/μŠ€ν¬λ¦°μƒ·/turn_logs)만 λ‹΄μ•„
-- TTS κ°€ "μ™œ" μ‹€νŒ¨ν–ˆλŠ”μ§€(μ›Œμ»€ OOM/토큰 loop/ICL μ‹€νŒ¨ λ“±)λŠ” λͺ» λ³Έλ‹€. κ·Έ root cause λŠ”
-- κ·Έ μ‹œμ  κ·Έ μ›Œμ»€(vast.ai GPU)의 λ‘œκ·Έμ—λ§Œ λ‚¨λŠ”λ°, μ›Œμ»€ λ‘œκ·ΈλŠ” μΈμŠ€ν„΄μŠ€ νœ˜λ°œμ„±(destroy μ‹œ μ†Œμ‹€)
-- 이고 신고와 μ—°κ²°ν•  correlation 도 μ—†μ—ˆλ‹€.
--
-- ν•΄κ²°: TTS μ‹€νŒ¨λ₯Ό λ°±μ—”λ“œ/μ›Œμ»€ μ–‘μͺ½μ—μ„œ 쀑앙 ν…Œμ΄λΈ”λ‘œ 기둝.
-- - source='backend' : λ””μŠ€νŒ¨μ²˜κ°€ μ›Œμ»€ μ—λŸ¬ 응닡을 감지 (worker_url + μƒνƒœ/detail)
-- - source='worker' : μ›Œμ»€κ°€ 생성 μ˜ˆμ™Έ traceback 을 POST (μΈμŠ€ν„΄μŠ€ 죽어도 보쑴)
-- - trace_id 둜 두 ν–‰ μ—°κ²°. 였λ₯˜ μ‹ κ³  쑰회 μ‹œ user_id + μ‹œκ°„μ°½μœΌλ‘œ join.
--
-- νšŒκ·€ κ°€λ“œ: 이 ν…Œμ΄λΈ” insert λŠ” μ „λΆ€ fire-and-forget(μ‹€νŒ¨ λ¬΄μ‹œ) β€” TTS ν•«νŒ¨μŠ€ 영ν–₯ 0.
-- user_id λŠ” TEXT(FK μ—†μŒ) β€” 읡λͺ…/νƒˆν‡΄ μ‚¬μš©μžμ—μ„œλ„ 기둝이 κ±°λΆ€λ˜μ§€ μ•Šλ„λ‘.
CREATE TABLE IF NOT EXISTS public.tts_error_events (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
trace_id TEXT, -- λ°±μ—”λ“œ ν–‰ ↔ μ›Œμ»€ ν–‰ μ—°κ²° ν‚€
user_id TEXT, -- FK μ—†μŒ (기둝 κ±°λΆ€ νšŒν”Ό)
session_id TEXT,
block_id INTEGER,
worker_url TEXT, -- μ–΄λŠ μ›Œμ»€κ°€ μ²˜λ¦¬ν–ˆλŠ”μ§€ (vast.ai 호슀트)
engine TEXT, -- qwen3 / cosyvoice35
mode TEXT, -- custom_voice / voice_clone
status_code INTEGER, -- μ›Œμ»€ HTTP μƒνƒœ (backend 감지 μ‹œ)
error_detail TEXT, -- 짧은 μ—λŸ¬ λ©”μ‹œμ§€ (backend κ°€ 받은 detail)
error_trace TEXT, -- ν’€ traceback (worker κ°€ POST)
source TEXT NOT NULL DEFAULT 'backend', -- 'backend' | 'worker'
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_tts_error_events_created
ON public.tts_error_events (created_at DESC);
CREATE INDEX IF NOT EXISTS idx_tts_error_events_user
ON public.tts_error_events (user_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_tts_error_events_trace
ON public.tts_error_events (trace_id);