File size: 1,698 Bytes
aa9892b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
-- TTS ์ธ์Šคํ„ด์Šค ์—”์ง„ ์ข…๋ฅ˜ ๊ตฌ๋ถ„ (2026-05-18, Phase 0 PoC ํ†ต๊ณผ ํ›„).
-- admin "TTS ์„œ๋ฒ„ ์ถ”๊ฐ€" ์—์„œ Qwen3-TTS (์šด์˜ default) / CosyVoice 3.0 (๋ฒ ํƒ€) ์„ ํƒ ๊ฐ€๋Šฅ.
--
-- ํšŒ๊ท€ 0 ๊ฐ€๋“œ:
--   - ๊ธฐ์กด row ์ž๋™ engine_kind='qwen3' ๋งคํ•‘ (default + UPDATE)
--   - dispatcher ๋ผ์šฐํŒ… = Phase 3 ๊นŒ์ง€ = engine_kind ๋ฌด๊ด€ (admin ๋งŒ ๋ถ„๊ธฐ)
--   - CosyVoice spawn fail โ†’ Qwen3 fallback (Phase 3 dispatcher)
--
-- ์ดํ–‰ ๋‹จ๊ณ„ (์‹คํ–‰ ์ˆœ์„œ):
--   1) ์ด SQL ์ ์šฉ (ALTER TABLE + UPDATE ๊ธฐ์กด row)
--   2) backend ๋ฐฐํฌ (engine_kind ์ธ์ž ์ฒ˜๋ฆฌ + GHCR image ๋ถ„๊ธฐ)
--   3) GHCR `voicetalk-tts-cosyvoice:latest` ๋นŒ๋“œ (.github/workflows/build-tts-cosyvoice-image.yml)
--   4) frontend ๋ฐฐํฌ (admin UI engine dropdown)
--
-- ์ฐธ์กฐ: doc/runbook/tts_engine_multi.md Phase 1 ์ž‘์—… ๋ถ„ํ•ด

ALTER TABLE public.tts_scale_instances
    ADD COLUMN IF NOT EXISTS engine_kind TEXT NOT NULL DEFAULT 'qwen3';

-- ๊ธฐ์กด row ์•ˆ์ „ ๋งคํ•‘ (DEFAULT ๊ฐ€ ์ƒˆ row ์—๋งŒ ์ ์šฉ๋˜๋ฏ€๋กœ ๋ช…์‹œ์  UPDATE).
UPDATE public.tts_scale_instances
SET engine_kind = 'qwen3'
WHERE engine_kind IS NULL OR engine_kind = '';

-- CHECK constraint โ€” ์ƒˆ ์—”์ง„ ์ถ”๊ฐ€ ์‹œ ์ด ์ œ์•ฝ์„ ๊ฐฑ์‹ .
ALTER TABLE public.tts_scale_instances
    DROP CONSTRAINT IF EXISTS tts_scale_instances_engine_kind_check;
ALTER TABLE public.tts_scale_instances
    ADD CONSTRAINT tts_scale_instances_engine_kind_check
    CHECK (engine_kind IN ('qwen3', 'cosyvoice35'));

-- engine_kind ๋ณ„ ์ธ๋ฑ์Šค (์Šค์ผ€์ผ ํ›„ ๋ผ์šฐํŒ… / ์ƒํƒœ ์กฐํšŒ ํšจ์œจ).
CREATE INDEX IF NOT EXISTS idx_tts_scale_engine_status
    ON public.tts_scale_instances(engine_kind, status)
    WHERE status IN ('free', 'ready', 'warm_stopped');