From bf6c3130279fdce33dafa674e4b552b18fa5b6d8 Mon Sep 17 00:00:00 2001
From: Yun Chan
Date: Fri, 26 Jun 2026 15:20:00 +0900
Subject: [PATCH] docs: update Live2D removal deployment status
---
docs/HANDOFF.md | 24 +++++++++++++-----------
docs/dev_dashboard.html | 29 ++++++++++++++++-------------
2 files changed, 29 insertions(+), 24 deletions(-)
diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md
index ec6baea..a4ce3be 100644
--- a/docs/HANDOFF.md
+++ b/docs/HANDOFF.md
@@ -1,6 +1,6 @@
# Vignette Handoff
-> Updated: 2026-06-26 14:53 KST. 새 세션은 이 문서와 `docs/DESIGN_CONCEPT.md`를 먼저 읽고 이어가면 된다.
+> Updated: 2026-06-26 15:18 KST. 새 세션은 이 문서와 `docs/DESIGN_CONCEPT.md`를 먼저 읽고 이어가면 된다.
## 현재 상태
@@ -10,15 +10,15 @@
- 로컬 engine gateway 기본 포트: `http://127.0.0.1:9099`
- 공개 웹: `https://vignette.chanpaca.net`
- 공개 API: `https://api-vignette.chanpaca.net`
-- 앱 배포 소스 commit: `188e899` (`Stabilize runtime auth and E2E coverage`)
-- 최신 Cloudflare Pages production deploy: `b5e22068`, source `188e899`, branch `main`
+- 앱 배포 소스 commit: `543d48c` (`Block legacy Live2D asset routes`)
+- 최신 Cloudflare Pages production deploy: `0fe8f3cc`, source `543d48c`, branch `main`
- Google OAuth 허용 이메일 도메인: `hs.ac.kr`, `twentyoz.kr`
- `frontenddesign` 스킬은 현재 세션의 사용 가능 스킬 목록에 없었다. 대신 `docs/DESIGN_CONCEPT.md`를 SSOT로 사용했다.
- 공개 API 터널은 현재 `C:\Users\encep\.cloudflared\vignette-config.yml`에서 `http://127.0.0.1:8001`을 본다.
-- 공개용 API 프로세스는 `127.0.0.1:8001`에서 `ENVIRONMENT=prod`로 떠 있다. 로컬 개발 API `127.0.0.1:8000`은 `dev`로 유지했다.
-- `GET /personas`는 이제 인증 필요다. 로컬 `http://127.0.0.1:8000/personas`와 공개 `https://api-vignette.chanpaca.net/personas` 모두 비로그인 401 확인 완료.
+- 공개용 API 프로세스는 `127.0.0.1:8001`에서 `ENVIRONMENT=prod`로 떠 있다. 로컬 개발 API `127.0.0.1:8000`은 현재 내려 두었다.
+- `GET /personas`는 이제 인증 필요다. 검증 당시 로컬 `http://127.0.0.1:8000/personas`와 현재 공개 `https://api-vignette.chanpaca.net/personas` 모두 비로그인 401 확인 완료.
- 로컬 웹이 `http://127.0.0.1:5175`처럼 다른 Vite 포트로 떠도 로그인은 `로컬 테스트 계정으로 계속` 버튼을 사용한다. Google OAuth 버튼은 로컬에서는 disabled로 둔다. 현재 OAuth callback이 공개 API로 돌아가기 때문에 로컬 Google OAuth는 로컬 세션에 붙을 수 없다.
-- 중복 Vite/API/gateway/cloudflared 프로세스는 정리했다. 현재 확인용 프로세스는 `127.0.0.1:8000` dev API, `127.0.0.1:9099` engine gateway, `127.0.0.1:8001` prod public API, `cloudflared` tunnel 1개다. Playwright 전체 테스트는 자체 Vite web server를 `127.0.0.1:5173`에 띄워 검증했다.
+- 중복 Vite/API/gateway/cloudflared 프로세스는 정리했다. 현재 확인용 프로세스는 `127.0.0.1:9099` engine gateway, `127.0.0.1:8001` prod public API, `cloudflared` tunnel 1개뿐이다. `127.0.0.1:8000` dev API와 임시 Vite preview는 내려 두었다. Playwright 전체 테스트는 자체 Vite web server를 `127.0.0.1:5173`에 띄워 검증했다.
- 공개 런타임 재기동 스크립트:
- start: `powershell -NoProfile -ExecutionPolicy Bypass -File scripts\start-public-runtime.ps1`
- stop: `powershell -NoProfile -ExecutionPolicy Bypass -File scripts\stop-public-runtime.ps1`
@@ -96,6 +96,7 @@
- Live2D demo fallback과 샘플 자산을 제거했다.
- Mao/Haru 샘플 모델과 Pixi/Cubism 런타임은 공개 배포물에서 제거했다.
- 세션 화면은 SVG persona avatar만 렌더링한다.
+ - Cloudflare edge에 남은 기존 `/live2d/*` 캐시를 막기 위해 Pages Function `apps/web/functions/live2d/[[path]].js`가 404를 반환한다.
## 검증 결과
@@ -143,9 +144,10 @@
- `powershell -NoProfile -ExecutionPolicy Bypass -File scripts\start-public-runtime.ps1`
- API 8001 health and public `https://api-vignette.chanpaca.net/health` both returned `environment:"prod"`, `db:true`, `engine:true`
- Public web deployment:
- - `wrangler pages deploy dist --project-name vignette --branch main --commit-hash 188e899`
- - Production deployment `b5e22068`
- - `https://vignette.chanpaca.net/` serves `assets/index-BKpoLhfw.js` and `assets/index-BA9-xxfn.css`
+ - `wrangler pages deploy dist --project-name vignette --branch main --commit-hash 543d48c`
+ - Production deployment `0fe8f3cc`
+ - `https://vignette.chanpaca.net/` serves `assets/index-D1Z5DH5J.js` and `assets/index-BA9-xxfn.css`
+ - `https://vignette.chanpaca.net/live2d/mao/Mao.model3.json`, Haru model, and Cubism core routes return 404
- Public login screen:
- `npx playwright test e2e/auth.spec.ts --project=chromium-desktop --grep "public login"`
- `1 passed`
@@ -177,10 +179,10 @@
- 공개 Google OAuth 실제 `/turn` proof는 아직 없다.
- 이유: `E2E_PUBLIC_STORAGE_STATE=apps/web/node_modules/.tmp/public-auth.json`가 아직 확보되지 않았다.
- 사용자가 Playwright codegen 브라우저에서 Google 로그인 후 storageState를 저장해야 한다.
- - 2026-06-26 14:53 KST 기준 `apps/web/node_modules/.tmp/public-auth.json`은 없다. codegen 창/프로세스가 남아 있으면 로그인 완료 후 창을 닫아 저장을 완료하면 된다.
+ - 2026-06-26 15:18 KST 기준 `apps/web/node_modules/.tmp/public-auth.json`은 없다. codegen 창/프로세스가 남아 있으면 로그인 완료 후 창을 닫아 저장을 완료하면 된다.
- 공개 API `environment:"dev"` 문제는 이번 세션에서 해결했다. cloudflared가 prod API인 `127.0.0.1:8001`을 보도록 변경했고 public gate로 확인했다.
- Google Console 설정은 브라우저 로그인 세션이 필요하다. 막히면 사용자가 로그인해 주기로 했다.
-- worktree는 원래부터 매우 dirty이고, 이전 세션/사용자 변경이 많다. 관련 없는 변경을 되돌리지 말 것.
+- 현재 worktree는 문서 상태 업데이트만 남아 있다. 관련 없는 사용자 변경을 되돌리지 말 것.
## 다음 세션 우선순위
diff --git a/docs/dev_dashboard.html b/docs/dev_dashboard.html
index dbef350..8d31b3d 100644
--- a/docs/dev_dashboard.html
+++ b/docs/dev_dashboard.html
@@ -127,7 +127,7 @@
Vignette 개발 대시보드
- 2026-06-26 14:53 KST
+ 2026-06-26 15:18 KST
@@ -141,17 +141,19 @@
이후 로컬 5175 런타임 재기동, admin 사용자 관리 E2E 안정화, 학습자 홈 0회 기록 UX,
active session 실제 SSE 스트림 전환, 텍스트/음성 실패 턴 미저장, 직접 URL persona 우회 차단, Live2D demo 자산 제거,
AI 운영 fail-closed 보강까지 전체 Playwright로 확인했다.
- 2026-06-26 14:53 KST 기준 공개 API 터널을 복구한 뒤 전체 Playwright 72개가 desktop/mobile/single-run 모두 통과했다.
- Cloudflare Pages production 배포 `b5e22068`도 완료했고, 커스텀 도메인이 새 asset을 서빙하는 것을 확인했다.
+ 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를 내렸다.
공개 Google OAuth 실제 `/turn` 증명만 storageState 캡처 후 남아 있다.
Full Playwright72 passed
-
Pages Productionb5e22068
+
Pages Production0fe8f3cc
Public APIprod OK
Backend unittest20 OK
-
App Commit188e899
+
App Commit543d48c
Decision조건부 GO
@@ -172,7 +174,7 @@
deployed
커스텀 도메인 운영 반영 완료
- Cloudflare Pages production `b5e22068`이 `188e899`로 배포됐고, `https://vignette.chanpaca.net`이 `index-BKpoLhfw.js`와 `index-BA9-xxfn.css`를 서빙한다.
+ Cloudflare Pages production `0fe8f3cc`이 `543d48c`로 배포됐고, `https://vignette.chanpaca.net`이 `index-D1Z5DH5J.js`와 `index-BA9-xxfn.css`를 서빙한다.
conditional
@@ -302,17 +304,18 @@
| Backend | python -m unittest app.test_runtime_policy app.test_session_turn_persistence engine_gateway.test_gateway_model | 20 tests OK |
| Compile | python -m compileall app engine_gateway | Passed |
| Web build | npm run build | Passed |
- | Pages production deploy | wrangler pages deploy dist --project-name vignette --branch main | `b5e22068`, source `188e899` |
- | Custom domain assets | https://vignette.chanpaca.net/ | `index-BKpoLhfw.js`, `index-BA9-xxfn.css` |
+ | Pages production deploy | wrangler pages deploy dist --project-name vignette --branch main | `0fe8f3cc`, source `543d48c` |
+ | Custom domain assets | https://vignette.chanpaca.net/ | `index-D1Z5DH5J.js`, `index-BA9-xxfn.css` |
+ | Legacy Live2D routes | /live2d/mao/* / /live2d/haru/* / /live2d/live2dcubismcore.min.js | 404 |
| Compose | docker compose --env-file .env.example config --quiet | Passed with dummy required env |
| Focused E2E | admin + db-persistence + voice-success | 10 passed |
| Admin manage-users | admin.spec.ts --grep manage real server-known users | desktop/mobile 2 passed |
| Full E2E | PLAYWRIGHT_HOST=127.0.0.1 npx playwright test | 72 passed |
| Public auth discovery | E2E_PUBLIC_AUTH=1 npx playwright test --list --project=chromium-public-auth | 2 tests listed |
| Public readiness | public-auth-turn.spec.ts --grep production-safe | 1 passed |
- | Persona auth boundary | GET /personas | local/public unauth 401 |
+ | Persona auth boundary | GET /personas | verified local/public unauth 401 |
| Public login | auth.spec.ts --grep public login | 1 passed |
- | Public runtime script | scripts\start-public-runtime.ps1 | API 8001 + cloudflared running |
+ | Public runtime script | scripts\start-public-runtime.ps1 | engine 9099 + API 8001 + cloudflared only |
| Public API health | https://api-vignette.chanpaca.net/health | prod, db true, engine true |
| Local 5175 login | PLAYWRIGHT_BASE_URL=http://127.0.0.1:5175 auth.spec.ts | desktop/mobile passed |
| Learner/readiness E2E | learner.spec.ts + readiness.spec.ts desktop/mobile | 14 passed |
@@ -335,12 +338,12 @@
blocker
public `/turn` proof 없음
- 2026-06-26 14:53 KST 기준 Google 로그인 storageState가 없어 공개 API `/turn` 실제 성공 증거가 아직 없다.
+ 2026-06-26 15:18 KST 기준 Google 로그인 storageState가 없어 공개 API `/turn` 실제 성공 증거가 아직 없다.
ops
- 공개 API 프로세스 유지
- 터널은 `127.0.0.1:8001` prod API를 본다. 재부팅 후에는 prod API와 cloudflared를 같이 재기동해야 한다.
+ 공개 운영 프로세스 유지
+ 현재 실행 프로세스는 `127.0.0.1:9099` engine gateway, `127.0.0.1:8001` prod API, cloudflared tunnel 1개다. 재부팅 후에는 engine gateway와 prod API, cloudflared를 같이 재기동해야 한다.
check before deploy