-- TTS 인스턴스 engine_kind 에 'dual' 추가 (2026-05-20, Dual-engine 통합 image 트랙). -- 1 docker = Qwen3 fork ×2 + CosyVoice 3.0 ×1 통합 인스턴스 (저트래픽 하드웨어 절약). -- -- 'dual' 은 라우팅 engine 이 아니라 instance kind — 각 워커는 자기 /health 로 qwen3/ -- cosyvoice35 를 보고하고 dispatcher 가 per-worker 라우팅 (mixed 자동). instance 의 -- 'dual' 값은 image 선택 / disk / inet / proc_count / cap 에만 사용 (scale_service.py). -- -- 회귀 0 가드: -- - 030/032 의 기존 'qwen3'/'cosyvoice35' 인스턴스 영향 0 (constraint 확장만) -- - user_voice_prompts (sql 031) 의 engine_kind CHECK 는 변경 X — prompt 는 -- 워커 보고 engine ('qwen3'/'cosyvoice35') 단위로 저장, 'dual' 로 저장 안 됨 -- -- 이행 단계: -- 1) 이 SQL 적용 (constraint 갱신) -- 2) backend 배포 (ENGINE_KIND_DUAL 처리) -- 3) PoC 게이트 3개 통과 후 voicetalk-tts-dual:latest 빌드 (build-tts-dual-image.yml) -- 4) frontend 배포 (admin engine dropdown "Dual") -- 5) admin "TTS 서버 추가" → Dual 선택 spawn -- -- 참조: doc/runbook/tts_engine_multi.md "Dual-engine 통합 image" 섹션 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', 'dual'));