Stabilize runtime auth and E2E coverage
This commit is contained in:
parent
6a3e3b541c
commit
188e899394
133 changed files with 55987 additions and 6775 deletions
|
|
@ -21,25 +21,34 @@ npm run typecheck # tsc --noEmit (타입 체크만)
|
|||
```
|
||||
|
||||
백엔드(FastAPI)는 `apps/api`에서 `uvicorn app.main:app --port 8000`으로 띄운다.
|
||||
미가동이어도 프론트는 동작한다(개발용 mock 로그인으로 진입 가능).
|
||||
프론트는 실제 API 세션과 DB 기반 데이터를 사용한다. 로컬 개발 로그인은
|
||||
`AUTH_DEV_LOGIN_ENABLED=true`인 개발 API에서만 제공되며, 공개 환경은 Google OAuth만 사용한다.
|
||||
|
||||
### 환경변수
|
||||
|
||||
| 변수 | 기본값 | 설명 |
|
||||
|---|---|---|
|
||||
| `VITE_API_BASE` | `/api` | API 베이스. 개발은 vite proxy, 프로덕션은 nginx가 백엔드로 라우팅 |
|
||||
| `VITE_LIVE2D_CUBISM_CORE` | `/live2d/live2dcubismcore.min.js` | Cubism Core JS URL. 페르소나별 `live2dModelUrl`이 있을 때만 사용 |
|
||||
|
||||
Live2D 샘플 자산은 `public/live2d/` 아래에 로컬 통합 테스트용으로 남겨 둔다.
|
||||
세션 아바타는 기본적으로 SVG/persona 렌더러를 사용하며, 실제 페르소나 전용
|
||||
`AvatarPersona.live2dModelUrl`이 있을 때만 Cubism 모델을 렌더링한다.
|
||||
Mao/Haru 샘플 모델을 모든 페르소나의 공용 프로덕션 폴백으로 쓰지 않는다.
|
||||
프로덕션 빌드는 번들된 Mao/Haru 샘플 URL을 무시하고 SVG 아바타를 유지한다.
|
||||
모델이 없거나 로딩에 실패하면 세션 화면은 기존 SVG 아바타를 그대로 렌더링한다.
|
||||
|
||||
## 라우트
|
||||
|
||||
| 경로 | 페이지 | 역할 | 비고 |
|
||||
|---|---|---|---|
|
||||
| `/login` | Login | — | 완성. OAuth(한신대/구글) mock + 역할 선택 |
|
||||
| `/learn` | LearnerHome | learner | 스텁 (Features 단계 교체) |
|
||||
| `/learn/session/:sessionId` | Session | learner | 스텁 + 동작하는 아바타 미리보기 |
|
||||
| `/learn/session/:sessionId/review` | SessionReview | learner | 스텁 |
|
||||
| `/teach` | Professor | teacher | 스텁. `data-role=instructor` accent |
|
||||
| `/admin` | Admin | admin | 스텁. `data-role=admin` accent |
|
||||
| `/settings` | Settings | 전체 | 스텁 |
|
||||
| `/login` | Login | — | 실제 Google OAuth + 개발 API 한정 로컬 로그인 |
|
||||
| `/learn` | LearnerHome | learner | 실제 persona catalog와 서버 세션 기록 |
|
||||
| `/learn/session/:sessionId` | Session | learner | 실제 세션 시작/이어하기 + 서버 SSE 응답 |
|
||||
| `/learn/session/:sessionId/review` | SessionReview | learner | 저장된 세션 기반 리뷰/기록 |
|
||||
| `/teach` | Professor | teacher | 실제 담당 학습자/회기 요약 |
|
||||
| `/admin` | Admin | admin | 실제 사용자 관리, health, AI 운영 설정 |
|
||||
| `/settings` | Settings | 전체 | 실제 계정/환경설정, 관리자 AI 운영 설정 |
|
||||
| `/` | → 역할 홈 | — | 미인증이면 `/login` |
|
||||
|
||||
보호 라우트는 `AuthContext` 기반 `RequireAuth` 가드(미인증 → `/login`,
|
||||
|
|
@ -64,8 +73,9 @@ src/
|
|||
ProgressBar Field/Input Dot Icon(inline svg) SectionHead.
|
||||
배럴: index.ts → import { Button, ... } from "../components/ui"
|
||||
shell/ AppShell Sidebar Topbar (§6.3 공통 셸).
|
||||
avatar/ClientAvatar.tsx 가상 내담자 SVG 아바타(동작 placeholder).
|
||||
pages/ Login(완성) + 6개 스텁.
|
||||
avatar/ClientAvatar.tsx 가상 내담자 아바타(Live2D + SVG 폴백).
|
||||
avatar/Live2DAvatar.tsx Cubism 4/Pixi 런타임 브리지.
|
||||
pages/ Login + learner/teacher/admin/settings/session 화면.
|
||||
```
|
||||
|
||||
## 디자인 철칙 (위반 시 재작업)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue