feat: dompurify 플러그인설치, 푸터 추가
This commit is contained in:
176
flow-diagram.md
Normal file
176
flow-diagram.md
Normal file
@@ -0,0 +1,176 @@
|
||||
# 전체 로직 흐름도
|
||||
|
||||
## 1. 애플리케이션 초기화 및 요청 처리
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[사용자 요청] --> B[Nuxt 서버 시작]
|
||||
B --> C[환경 설정 로드]
|
||||
C --> D[미들웨어 체인 실행]
|
||||
D --> E[게임 데이터 로드]
|
||||
E --> F[페이지 데이터 로드]
|
||||
F --> G[컴포넌트 렌더링]
|
||||
G --> H[최종 HTML 응답]
|
||||
```
|
||||
|
||||
## 2. 서버 사이드 미들웨어 체인
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[요청 수신] --> B{정적 자산?}
|
||||
B -->|Yes| C[스킵]
|
||||
B -->|No| D[gameAlias.ts 미들웨어]
|
||||
D --> E[호스트에서 게임 별칭 추출]
|
||||
E --> F[게임 데이터 API 호출]
|
||||
F --> G[event.context에 저장]
|
||||
G --> H[라우트 처리]
|
||||
```
|
||||
|
||||
## 3. 데이터 흐름 및 상태 관리
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[게임 데이터 API] --> B[GameDataStore]
|
||||
C[페이지 데이터 API] --> D[PageDataStore]
|
||||
B --> E[게임 기본 정보]
|
||||
B --> F[지원 언어 목록]
|
||||
B --> G[SEO 메타 정보]
|
||||
D --> H[템플릿 배열]
|
||||
D --> I[페이지별 컴포넌트]
|
||||
D --> J[페이지 SEO 정보]
|
||||
```
|
||||
|
||||
## 4. 국제화(i18n) 처리 흐름
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[URL 요청] --> B[언어 코드 추출]
|
||||
B --> C{지원 언어?}
|
||||
C -->|No| D[404 에러]
|
||||
C -->|Yes| E[동적 언어 설정]
|
||||
E --> F[prefix 전략 적용]
|
||||
F --> G[페이지 라우팅]
|
||||
G --> H[템플릿 렌더링]
|
||||
```
|
||||
|
||||
## 5. 페이지 렌더링 흐름
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[app.vue] --> B[SSR gameData 로드]
|
||||
B --> C[스토어에 저장]
|
||||
C --> D[SEO 메타 태그 설정]
|
||||
D --> E[NuxtLayout 렌더링]
|
||||
E --> F[페이지 컴포넌트]
|
||||
F --> G[pageData 로드]
|
||||
G --> H[Section 컴포넌트]
|
||||
H --> I[템플릿 렌더링]
|
||||
```
|
||||
|
||||
## 6. 템플릿 시스템 구조
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Section 컴포넌트] --> B[templates 배열 순회]
|
||||
B --> C[templateRegistry 조회]
|
||||
C --> D{템플릿 코드 매칭}
|
||||
D -->|GR_VISUAL_01| E[GrVisual01]
|
||||
D -->|GR_VISUAL_02| F[GrVisual02]
|
||||
D -->|GR_VISUAL_03| G[GrVisual03]
|
||||
E --> H[동적 컴포넌트 렌더링]
|
||||
F --> H
|
||||
G --> H
|
||||
H --> I[TemplatesBackground]
|
||||
I --> J[최종 UI 출력]
|
||||
```
|
||||
|
||||
## 7. 전체 요청-응답 사이클
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant U as 사용자
|
||||
participant S as 서버
|
||||
participant M as 미들웨어
|
||||
participant A as API
|
||||
participant C as 컴포넌트
|
||||
|
||||
U->>S: 요청 (game.onstove.com/ko/about/story)
|
||||
S->>M: gameAlias.ts 실행
|
||||
M->>M: 게임 별칭 추출 (game)
|
||||
M->>A: 게임 데이터 API 호출
|
||||
A-->>M: 게임 정보 응답
|
||||
M->>M: event.context에 저장
|
||||
S->>C: 페이지 컴포넌트 로드
|
||||
C->>A: 페이지 데이터 API 호출
|
||||
A-->>C: 템플릿 데이터 응답
|
||||
C->>C: 템플릿 렌더링
|
||||
C-->>S: HTML 생성
|
||||
S-->>U: 최종 응답
|
||||
```
|
||||
|
||||
## 8. API 통신 구조
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[게임 데이터 API] --> B[/pub-comm/v1.0/template/game]
|
||||
C[페이지 데이터 API] --> D[/pub-comm/v1.0/template/page]
|
||||
|
||||
B --> E[game_alias]
|
||||
B --> F[lang_code]
|
||||
|
||||
D --> G[game_alias]
|
||||
D --> H[lang_code]
|
||||
D --> I[page_url]
|
||||
|
||||
E --> J[게임 기본 정보]
|
||||
F --> J
|
||||
G --> K[페이지별 템플릿]
|
||||
H --> K
|
||||
I --> K
|
||||
```
|
||||
|
||||
## 9. 상태 관리 구조
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Pinia 스토어] --> B[useGameDataStore]
|
||||
A --> C[usePageDataStore]
|
||||
|
||||
B --> D[gameData]
|
||||
B --> E[setGameData]
|
||||
B --> F[clearGameData]
|
||||
|
||||
C --> G[pageData]
|
||||
C --> H[setPageData]
|
||||
C --> I[clearPageData]
|
||||
|
||||
D --> J[게임 기본 정보]
|
||||
D --> K[지원 언어 목록]
|
||||
D --> L[SEO 메타 정보]
|
||||
|
||||
G --> M[템플릿 배열]
|
||||
G --> N[페이지 컴포넌트]
|
||||
G --> O[페이지 SEO 정보]
|
||||
```
|
||||
|
||||
## 10. 컴포넌트 계층 구조
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[app.vue] --> B[NuxtLayout]
|
||||
B --> C[LayoutDefaultHeader]
|
||||
B --> D[NuxtPage]
|
||||
B --> E[LayoutDefaultFooter]
|
||||
|
||||
D --> F[페이지 컴포넌트]
|
||||
F --> G[Section]
|
||||
G --> H[TemplatesBackground]
|
||||
G --> I[동적 템플릿 컴포넌트]
|
||||
|
||||
I --> J[GrVisual01]
|
||||
I --> K[GrVisual02]
|
||||
I --> L[GrVisual03]
|
||||
|
||||
A --> M[MoleculesLoadingFull]
|
||||
A --> N[MoleculesLoadingLocal]
|
||||
```
|
||||
Reference in New Issue
Block a user