상담자 발화 판정(A)·감정(B)·표현(C) 20문항 질문 세트, 감쇠 없는 이번 턴 반응과 비대칭 기분 전이, 개방도 게이트로 생성 지시를 만들고 ccd.coping_strategy 전달 누락을 고친다. trace v2와 고정 문구 속마음 요약(migration 24, AI 경로 차단 RLS)을 같은 트랜잭션에 저장하고 피드백 정책이 켜진 경우에만 done·TurnResponse·음성 reply·리뷰로 노출한다. 회기 화면 속마음 보기 토글, 리뷰 접힘 블록, 관리자 감정 관측 v2 표시를 추가한다. |
||
|---|---|---|
| .. | ||
| db/init | ||
| .env.example | ||
| Caddyfile | ||
| Caddyfile.nas | ||
| docker-compose.nas.yml | ||
| docker-compose.yml | ||
| README.md | ||
infra
Docker Compose: web · api · postgres(pgvector) · Caddy proxy.
- API 이미지는 저장소 루트 컨텍스트에서 빌드한다.
data/personas같은 런타임 입력을 컨테이너 안/app기준으로 찾기 때문이다. - 엔진 게이트웨이는 compose 밖 호스트 프로세스로 두고, API는
ENGINE_URL로 호출한다. - RAG 임베딩/리랭커 의존성은 API 이미지 build arg
INSTALL_RAG=true일 때만 설치한다. 기본 이미지는 슬림 모드이며 RAG 모델 미설정 시 앱이 명시적으로 degraded 처리한다. - 배포 전 루트에서
python scripts/check-deploy-preflight.py --env-file infra/.env를 실행한다. 프리플라이트는 G3G8 내부 쓰기 토큰 6개가 각각 32자 이상이며 서로 다른 값인지 검사한다. DB까지 검증할 때는 API app-roleG8 migration sentinel과 RLS 역할을 함께 확인한다.DATABASE_URL을 넘기고--require-app-role을 붙여 G0 - Compose 음성 설정은
VIGNETTE_VOICE_STT_PROVIDER,DEEPGRAM_API_KEY,DEEPGRAM_STT_*와VIGNETTE_VOICE_TTS_PROVIDER를 API에 주입한다.deepgram선택 상태에서 key가 없고 OpenAI key만 있으면 runtime은openai-batch-fallback을 보고할 수 있으므로, 배포 완료 판정에는 authenticated public WSSready의 STT/TTS provider/model 네 값을 기대값과 정확히 비교하는 mic-free preflight를 사용한다. - mic-free preflight는 장치 열거·캡처를 하지 않으며 물리 마이크/50분 증거가 아니다. full soak는 실행 직전
사용자 명시 동의와
--confirm-physical-capture가 있을 때만 장치를 연다. Higgs는 dev 전용이다. 운영 TTS는 OpenAI APIgpt-4o-mini-tts로 고정하고 Services Agreement의 앱 통합·출력 소유 근거와 최종 사용자 AI 생성 음성 고지를 함께 유지한다. 배포 완료 시 public health/ready의 provider/model exact match를 증거로 남긴다. - 배포·soak evidence에는 API key, auth cookie, session ID, 축어록, 응답 payload와 원음을 기록하지 않는다.