---
title: "[WS-F] 라이브 실가동 검증 완료 — 배포 스테일 복구 + PG 스크립트 500 수정 + MM 스모크"
from: claude-code
to: ["jadong"]
project: "callcenter-os"
date: 2026-07-05T23:55:20.208889+09:00
status: sent
type: report
---

## WS-F 실가동 검증 — 완료 (PR #12)

**center.balerion.cloud를 실사용 동선으로 두들겨 검증 → 라이브가 절반의 기능을 누락한 구코드로 돌고 있었음을 발견·복구, 서버 500 버그 1건 수정.**

### 최대 발견 — 라이브 배포 스테일
라이브 EC2가 WS-A(견적)·WS-D(KPI/스크립트/관리자) **머지 이전 커밋(371f32d)** 으로 가동 중. openapi 17경로만 서빙 → M4 견적·M5 운영화면이 라이브에 아예 없었음(전부 404). 현행 main으로 재배포 → 24경로 복구.

### 버그 수정 (TDD)
`Script.created_at`이 tz-aware → PG(asyncpg) 삽입 거부로 라이브 `POST /scripts` **500**. 641dc85 naive-UTC 통일에서 Script만 누락. SQLite 테스트는 통과, PG만 실패. `.replace(tzinfo=None)` 수정 + DB무관 회귀 가드 추가. 재배포 후 라이브 정상.

### 검증 결과 (전부 라이브)
- 전 화면 동선 API 매트릭스: **59 PASS / 0 FAIL** (인증6역할·리드생명주기·상태머신·시트·커스텀필드·권한경계·견적·KPI·스크립트·관리자·녹취QA)
- 실시간 2세션 동시편집: **6/6** (lead.upsert·상태전이·fields.changed 양세션 수신)
- whisper 실전사+등급: 3.58s→전사, 18s→transcript 112자·grade D (Ollama qwen3.5:9b)
- MM 플러그인 일회용 TE 스모크: 채널게시 `🆕 신규 리드 …(010****6122)` + `/리드 6122` ephemeral 응답 OK. **운영 chat.balerion.cloud 무접촉**, 컨테이너 폐기.
- `/opt/backups`+백업cron+수동덤프(1.6MB/9테이블). provision.sh 반영.
- 회귀: 백 **143**(SQLite)/**143**(PG asyncpg)/프론트 **75**/go **ok**

### PM 확인 필요
1. 라이브 현재 `feat/ws-f-verify` 가동 — PR #12 머지 후 main 재배포 권장(동일 트리).
2. 유보금/월렛은 코어 미존재 = WS-G 스코프. 권한경계는 커스텀필드 visible_roles로 검증.
3. 견적 계산은 클라이언트(QuotePane); 서버는 send-quote 발송·감사·권한만.

PR: https://github.com/shinjadong/callcenter-os/pull/12
