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 @@ Backendpython -m unittest app.test_runtime_policy app.test_session_turn_persistence engine_gateway.test_gateway_model20 tests OK Compilepython -m compileall app engine_gatewayPassed Web buildnpm run buildPassed - Pages production deploywrangler pages deploy dist --project-name vignette --branch main`b5e22068`, source `188e899` - Custom domain assetshttps://vignette.chanpaca.net/`index-BKpoLhfw.js`, `index-BA9-xxfn.css` + Pages production deploywrangler pages deploy dist --project-name vignette --branch main`0fe8f3cc`, source `543d48c` + Custom domain assetshttps://vignette.chanpaca.net/`index-D1Z5DH5J.js`, `index-BA9-xxfn.css` + Legacy Live2D routes/live2d/mao/* / /live2d/haru/* / /live2d/live2dcubismcore.min.js404 Composedocker compose --env-file .env.example config --quietPassed with dummy required env Focused E2Eadmin + db-persistence + voice-success10 passed Admin manage-usersadmin.spec.ts --grep manage real server-known usersdesktop/mobile 2 passed Full E2EPLAYWRIGHT_HOST=127.0.0.1 npx playwright test72 passed Public auth discoveryE2E_PUBLIC_AUTH=1 npx playwright test --list --project=chromium-public-auth2 tests listed Public readinesspublic-auth-turn.spec.ts --grep production-safe1 passed - Persona auth boundaryGET /personaslocal/public unauth 401 + Persona auth boundaryGET /personasverified local/public unauth 401 Public loginauth.spec.ts --grep public login1 passed - Public runtime scriptscripts\start-public-runtime.ps1API 8001 + cloudflared running + Public runtime scriptscripts\start-public-runtime.ps1engine 9099 + API 8001 + cloudflared only Public API healthhttps://api-vignette.chanpaca.net/healthprod, db true, engine true Local 5175 loginPLAYWRIGHT_BASE_URL=http://127.0.0.1:5175 auth.spec.tsdesktop/mobile passed Learner/readiness E2Elearner.spec.ts + readiness.spec.ts desktop/mobile14 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