Vignette 개발 대시보드
2026-06-26 16:04 KST
team lead review

전체 로드맵 기준 현재 위치는 Phase 0 종료 직전이다.

이번 세션은 seed persona 결합 제거, 비개발 fail-closed 설정, compose OAuth 주입, admin 모바일 overflow 수정, persona 인증 경계 보강, 전체 Playwright 재통과, 공개 API prod 전환까지 완료했다. 이후 로컬 5175 런타임 재기동, admin 사용자 관리 E2E 안정화, 학습자 홈 0회 기록 UX, active session 실제 SSE 스트림 전환, 텍스트/음성 실패 턴 미저장, 직접 URL persona 우회 차단, Live2D demo 자산 제거, AI 운영 fail-closed 보강까지 전체 Playwright로 확인했다. 2026-06-26 15:18 KST 기준 공개 API 터널을 복구한 뒤 전체 Playwright 72개가 desktop/mobile/single-run 모두 통과했다. Cloudflare Pages production 배포 `0fe8f3cc`도 완료했고, 커스텀 도메인이 새 asset을 서빙하는 것을 확인했다. 과거 Mao/Haru Live2D demo 자산은 repo와 번들에서 제거했고, `/live2d/*` 운영 경로는 404로 차단했다. 로컬 프로세스는 prod API 8001, engine gateway 9099, cloudflared tunnel 1개만 남기고 dev API와 임시 Vite preview를 내렸다. 다만 이 HTML은 지금까지 Phase 0 상태판처럼 쓰였고, 아래에 Phase 1 이후 전체 계획을 보강했다. 공개 Google OAuth 실제 `/turn` 증명만 storageState 캡처 후 남아 있다.

Full Playwright72 passed
Pages Production0fe8f3cc
Public APIprod OK
Backend unittest20 OK
RoadmapP0-P3
DecisionP0 조건부

전체 개발 로드맵

`docs/MASTERPLAN.md`와 `docs/redteam/MASTERPLAN_REVISIONS.md`를 합친 팀장 판단용 단계표

Phase 0closing

기반 정렬 / 운영 안전장치

인프라, 인증 경계, fail-closed, 공개 배포, 회귀 테스트 안정화.

  • 상태: 대부분 완료, 공개 `/turn` proof만 남음
  • 검증: build + backend 20 + Playwright 72
  • 운영: prod API 8001, engine 9099, tunnel 1개
Phase 1next

MVP 코어 루프

1 페르소나 상담, 실제 턴 저장, 회기말 피드백, 저항 엔진 검증.

  • DoD: 로그인 → P1 상담 완주 → 피드백 수신
  • 추가: 음성 왕복 1턴 PoC 포함
  • 증거: cost/turn DB 적재 + openness 곡선 대조
Phase 2aplanned

3역할 / OAuth / 페르소나

학습자, 교수자, 관리자 권한 분리와 페르소나 확장.

  • DoD: 타인 session 직접 접근 403
  • 범위: OAuth BFF, RBAC, 교수 검수 루프
  • 주의: visible_to와 인간 권한은 별도 레이어
Phase 2bplanned

음성 캐스케이드

STT → 엔진 → TTS 왕복, WSS/터널 안정성, barge-in 로깅.

  • DoD: 50분 WSS 끊김 실측
  • 범위: Deepgram STT, OpenAI TTS, voice preset
  • 리스크: 실시간 레이턴시는 실측 전 완료 표기 금지
Phase 3planned

교육용 파일럿 / 효과성

수련생 파일럿, 사전사후 효과 측정, 재귀학습 데이터셋 산출.

  • DoD: 20명 완주 + KPI 충족
  • 측정: SUS, 자기효능감, κ/ICC, 환각률
  • 정정: IRB 게이트가 아니라 데이터 활용동의/개인정보 게이트
정정 기준: `MASTERPLAN` 원본의 IRB 신청/승인 게이트는 `MASTERPLAN_REVISIONS` 기준으로 제거한다. Phase 2는 2a(3역할/OAuth/페르소나)와 2b(음성 캐스케이드)로 분리하고, Phase 1 DoD에는 얇은 음성 왕복 1턴 PoC를 포함한다.

상세 페이지

탭별 할 일, 산출물, 검증 기준. 팀장 리뷰는 여기서 다음 작업을 고르면 된다.

Phase 0 마감 상세

지금 단계는 구현을 더 벌리는 단계가 아니라, 운영 증거를 닫고 P1 진입 조건을 고정하는 단계다.

상태: 조건부우선순위: P0블로커: public /turn
BLOCK
공개 Google OAuth 실제 `/turn` proof 확보

로그인 가능한 계정으로 storageState를 저장한 뒤 public-auth-turn E2E를 실행한다.

산출물

`apps/web/node_modules/.tmp/public-auth.json`, public `/turn` 성공 로그

검증

`E2E_PUBLIC_AUTH=1` + `chromium-public-auth` 1회 통과

CHECK
engine config 운영값 재확인

E2E가 admin engine config를 만질 수 있으므로 배포 전 `mode/url/model` 값을 확인한다.

산출물

admin AI 운영 화면 캡처 또는 config API 응답

검증

`claude_cli / http://127.0.0.1:9099 / gateway-default` 의도값 대조

DONE
과거 Live2D demo 자산 제거

Mao/Haru 샘플, Pixi/Cubism 런타임, 공개 `/live2d/*` 캐시 잔여 접근을 차단했다.

산출물

`apps/web/functions/live2d/[[path]].js`, SVG-only avatar

검증

운영 `/live2d/mao/*`, Cubism core `404`

DONE
프로세스 난립 정리

임시 Vite preview와 dev API를 내리고 운영 확인용 프로세스만 유지한다.

산출물

9099 engine, 8001 prod API, cloudflared tunnel 1개

검증

`Get-NetTCPConnection`에서 8000/517x/5537 비어 있음

GATE
한신대 공문/데이터 거버넌스 게이트 정리

SSO 클레임, 추가 축어록 수급, 미성년 원본 활용동의, 개인정보 처리방침을 P1 진입 전 외부 의존성으로 명확히 둔다.

산출물

공문 질의서, 동의 범위 체크리스트, SSO claim 표

검증

IRB 게이트가 아니라 데이터/SSO 게이트로 문서 전수 정합

팀장 판정

  • 로컬 회귀와 공개 prod-safe 게이트는 통과했다.
  • Cloudflare Pages production `0fe8f3cc`이 `543d48c` 소스로 배포됐다.
  • 운영 반영 전 남은 핵심 증거는 공개 Google OAuth 실제 `/turn` smoke다.
  • 런타임 mock/demo 자산은 운영 번들에서 제거하고, 테스트 fixture만 남긴다.

제품/UX 완료

  • 학습자 홈 0회 기록 상태는 fake 기록 없이 실제 서버 세션 0개로 표시한다.
  • active session은 실제 SSE token 이벤트로 자막을 쌓는다.
  • 텍스트/음성 실패 턴은 transcript와 저장소에 남기지 않는다.
  • 375px급 active session viewport overflow를 보정했다.
  • 직접 URL persona 우회는 DB 원본 persona가 아니면 차단한다.
  • 세션 화면은 SVG persona avatar만 렌더링한다.

운영/테스트 완료

  • seed persona 결합을 제거하고 DB persona 기반 E2E로 전환했다.
  • 비개발 런타임은 dev login, seed fallback, 기본 secret, localhost CORS를 fail-closed 한다.
  • compose OAuth/CORS/OpenAI base 설정을 API 컨테이너에 명시했다.
  • persona catalog는 비로그인 401로 인증 경계를 가진다.
  • admin 모바일 overflow, AI 운영 상태 문구, global engine config 테스트 격리를 정리했다.
  • handoff, E2E README, 이 대시보드를 최신 상태로 맞췄다.