Files
web-temp/flow-diagram.md

4.1 KiB

전체 로직 흐름도

1. 애플리케이션 초기화 및 요청 처리

graph TD
    A[사용자 요청] --> B[Nuxt 서버 시작]
    B --> C[환경 설정 로드]
    C --> D[미들웨어 체인 실행]
    D --> E[게임 데이터 로드]
    E --> F[페이지 데이터 로드]
    F --> G[컴포넌트 렌더링]
    G --> H[최종 HTML 응답]

2. 서버 사이드 미들웨어 체인

graph TD
    A[요청 수신] --> B{정적 자산?}
    B -->|Yes| C[스킵]
    B -->|No| D[gameAlias.ts 미들웨어]
    D --> E[호스트에서 게임 별칭 추출]
    E --> F[게임 데이터 API 호출]
    F --> G[event.context에 저장]
    G --> H[라우트 처리]

3. 데이터 흐름 및 상태 관리

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) 처리 흐름

graph TD
    A[URL 요청] --> B[언어 코드 추출]
    B --> C{지원 언어?}
    C -->|No| D[404 에러]
    C -->|Yes| E[동적 언어 설정]
    E --> F[prefix 전략 적용]
    F --> G[페이지 라우팅]
    G --> H[템플릿 렌더링]

5. 페이지 렌더링 흐름

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. 템플릿 시스템 구조

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. 전체 요청-응답 사이클

sequenceDiagram
    participant U as 사용자
    participant S as 서버
    participant M as 미들웨어
    participant A as API
    participant C as 컴포넌트

    U->>S: 요청 (l9.onstove.com/ko/about/story)
    S->>M: gameAlias.ts 실행
    M->>M: 게임 별칭 추출 (l9)
    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 통신 구조

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. 상태 관리 구조

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. 컴포넌트 계층 구조

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]