fix. main 컴포넌트 변경, 수정된 api 구조에 맞춰 코드 수정

This commit is contained in:
clkim
2025-09-17 18:03:19 +09:00
parent 2196cf4200
commit 61022fb972
14 changed files with 347 additions and 664 deletions

View File

@@ -21,54 +21,93 @@ export interface GameDataValue {
game_name: string
ga_code: string
design_theme: number
lang_codes: string // JSON 문자열로 변경
key_color_codes: ParsedKeyColorCodes
lang_codes: string[]
key_code_codes: GameDataKeyCodeCodes
use_game_font: boolean
comm_sns_bg_color_code: string
comm_multilang_filename: string
footer_dev_ci_img_yn: boolean
footer_dev_ci_img_path: string
default_lang_code?: string // 기본 언어 코드 추가
game_font: string // JSON 문자열로 변경
globals: GameDataGlobal[] // 배열로 변경
default_lang_code?: string
game_font: GameDataGameFont
globals: GameDataGlobal[]
gnb: GameDataGnb
intro: GameDataIntro
inspection: Record<string, any> // 동적 객체
stove_gnb: GameDataStoveGnb // JSON 문자열로 변경
favicon_path: string // JSON 문자열로 변경
meta_tag: string // JSON 문자열로 변경
sns: string // JSON 문자열로 변경
inspection: Record<string, any>
stove_gnb: GameDataStoveGnb
favicon_path: GameDataFaviconPath
meta_tag: GameDataMetaTag
sns: GameDataSns
footer: string // JSON 문자열로 변경
}
// ===== 세부 데이터 타입들 =====
// 키 코드 코드 타입
export interface GameDataKeyCodeCodes {
primary: string
'text-primary': string
'text-secondary': string
'alternative-01': string
'alternative-02': string
}
// 게임 폰트 타입
export interface GameDataGameFont {
font_family: string
font_weight: string
font_style: string
}
// 파비콘 경로 타입
export interface GameDataFaviconPath {
'16_16': string
'32_32': string
'72_72': string
'180_180': string
'192_192': string
}
// 메타 태그 타입
export interface GameDataMetaTag {
x_desc: string
og_desc: string
x_image: string
x_title: string
og_image: string
og_title: string
page_desc: string
page_title: string
}
// SNS 아이템 타입
export interface GameDataSnsItem {
use_yn: number
url: string | null
}
// SNS 설정 타입
export interface GameDataSns {
kakao: GameDataSnsItem
twitter: GameDataSnsItem
discord: GameDataSnsItem
youtube: GameDataSnsItem
instagram: GameDataSnsItem
facebook: GameDataSnsItem
tiktok: GameDataSnsItem
}
// Global 설정 타입
export interface GameDataGlobal {
system_font: string // JSON 문자열로 변경
lang: string // JSON 문자열로 변경
}
// 트 타입
export interface GameDataFont {
'font-family': string
}
// 언어 설정 타입
export interface GameDataLang {
dir: string
iso: string
code: string
name: string
}
// GNB 설정 타입
export interface GameDataGnb {
game_gnb_ver: string
display_start_dt: string // ISO 문자열로 변경
theme_type: string
bi_path: string
lang_codes: string // JSON 문자열로 변경
buttons: GameDataButton[]
menus: Record<string, GameDataMenu> // 동적 객체로 변경
// 트래킹 타입
export interface GameDataTracking {
viewType: string
actionType: string
clickSarea: string
}
// 버튼 타입
@@ -90,35 +129,22 @@ export interface GameDataMenu {
tracking: string | GameDataTracking // JSON 문자열 또는 객체로 변경
}
// GNB 설정 타입
export interface GameDataGnb {
game_gnb_ver: string
theme_type: string
bi_path: string
lang_codes: string // JSON 문자열로 변경
buttons: GameDataButton[]
menus: Record<string, GameDataMenu> // 동적 객체로 변경
}
// 인트로 타입
export interface GameDataIntro {
seq: number
display_start_dt: string
display_end_dt: string
page_url: string
}
// 트래킹 타입
export interface GameDataTracking {
viewType: string
actionType: string
clickSarea: string
}
// 퀵 메뉴 타입
export interface GameDataQuickMenu {
banner_seq: number
promotion_name: string
thumbnail: string
page_url_type: number
page_url: string
link_type: number
display_start_dt: string
display_end_dt: string
sort_order: number
banner_title: string
}
// Stove GNB Skin Type
export type StoveGnbSkinType =
| 'gnb-default'
@@ -136,103 +162,7 @@ export interface GameDataStoveGnb {
stove_install_button_visible: string
}
// 파비콘 경로 타입
export interface GameDataFaviconPath {
'16_16': string
'32_32': string
'72_72': string
'180_180': string
'192_192': string
}
// 공통 이미지 타입
export interface GameDataCommImg {
groups: GameDataCommImgGroup[]
}
// 공통 이미지 그룹 타입
export interface GameDataCommImgGroup {
img_path: GameDataImgPath
required: boolean
img_scope: string
group_code: string
group_label: string
}
// 이미지 경로 타입
export interface GameDataImgPath {
comm: string
}
// 메타 태그 타입
export interface GameDataMetaTag {
x_desc: string
og_desc: string
x_image: string
x_title: string
og_image: string
og_title: string
page_desc: string
page_title: string
}
// YouTube 설정 타입
export interface GameDataYoutube {
use_yn: number
api_key: string
}
// SNS 설정 타입
export interface GameDataSns {
kakao: GameDataSnsItem
tiktok: GameDataSnsItem
discord: GameDataSnsItem
twitter: GameDataSnsItem
youtube: GameDataSnsItem
facebook: GameDataSnsItem
instagram: GameDataSnsItem
}
// SNS 아이템 타입
export interface GameDataSnsItem {
url: string | null
use_yn: number
}
// 마켓 설정 타입
export interface GameDataMarket {
pc: GameDataMarketItem
app_store: GameDataMarketItem
google_play: GameDataMarketItem
}
// 마켓 아이템 타입
export interface GameDataMarketItem {
url: string | null
use_yn: number
}
// 푸터 설정 타입
export interface GameDataFooter {
dev_ci_url: string
use_dev_ci_url: boolean
fund_display_yn: boolean
use_game_rating: boolean
fund_display_url: string
game_rating_info: GameDataGameRatingInfo
}
// 게임 등급 정보 타입
export interface GameDataGameRatingInfo {
title: string
reg_no: string
prod_date: string
rating_type: string
company_name: string
content_info: string
rating_grade: string
rating_class_no: string
}
// ===== API 관련 타입들 =====
// API 에러 응답 타입
export interface GameDataErrorResponse {
@@ -262,70 +192,3 @@ export interface GameDataApiResult {
data: GameDataResponse | null
error: string | null
}
// JSON 문자열 파싱을 위한 유틸리티 타입들
export interface ParsedKeyColorCodes {
'alternative-01': string
'alternative-02': string
primary: string
'text-primary': string
'text-secondary': string
}
export interface ParsedGameFont {
'font-family': string
}
export interface ParsedGlobal {
system_font: ParsedGameFont
lang: GameDataLang
}
export interface ParsedButton {
google_play: {
label: Record<string, string>
url: string
tracking: GameDataTracking
}
app_store: {
label: Record<string, string>
url: string
tracking: GameDataTracking
}
}
export interface ParsedStoveGnb {
skin_type: StoveGnbSkinType
stove_install_button_visible: string
}
export interface ParsedSns {
kakao: GameDataSnsItem
twitter: GameDataSnsItem
discord: GameDataSnsItem
youtube: GameDataSnsItem
instagram: GameDataSnsItem
facebook: GameDataSnsItem
tiktok: GameDataSnsItem
}
export interface ParsedFooter {
use_game_rating: boolean
game_rating_info: GameDataGameRatingInfo
use_dev_ci_url: boolean
dev_ci_url: string
fund_display_yn: boolean
fund_display_url: string
}
// 파비콘 경로 파싱 타입
export interface ParsedFaviconPath {
'16_16': string
'32_32': string
'72_72': string
'180_180': string
'192_192': string
}
// 기존 gameData 타입과의 호환성을 위한 별칭
export type gameData = GameDataValue

View File

@@ -28,19 +28,20 @@ export interface PageDataValue {
page_name: string
page_name_en: string
page_ver: number
display_start_dt: string
lang_codes: string // JSON string
is_login_required: boolean
meta_tag_type: number
fit_page_height: boolean
use_top_btn: boolean
use_sns_btn: boolean
use_lnb: boolean
lnb_text_color_code_active: string
lnb_text_color_code_deactive: string
lnb_menus: PageDataLnbMenu[]
templates: PageDataTemplate[]
meta_tag: PageDataMetaTag // JSON string
templates: Record<string, PageDataTemplate>
meta_tag: PageDataMetaTag
}
// ===== 세부 데이터 타입들 =====
// 메타 태그 타입
export interface PageDataMetaTag {
x_desc: string
@@ -53,10 +54,22 @@ export interface PageDataMetaTag {
page_title: string
}
// 리소스 타입
export interface PageDataResource {
resource_sort_order: number
resource_name: string
resource_type: string
groups: Record<string, any>
group_sets: Record<string, any>
}
// 컴포넌트 타입
export interface PageDataComponent {
resources: PageDataResource[]
}
// LNB 메뉴 타입
export interface PageDataLnbMenu {
text_color_code_active: string
text_color_code_deactive: string
path_code: string
depth: number
sort_order: number
@@ -68,72 +81,21 @@ export interface PageDataLnbMenu {
// 템플릿 타입
export interface PageDataTemplate {
page_ver_tmpl_seq: number
tmpl_sort_order: number
page_ver_tmpl_name: string
page_ver_tmpl_name_en: string
template_code: string
components_: PageDataTemplateComponent
// components: string // JSON string
}
// 템플릿 컴포넌트 타입
export interface PageDataTemplateComponent {
components: Record<string, PageDataComponent>
}
// 컴포넌트 타입
export interface PageDataComponent {
component_sort_order: number
set_count: number
component_name: string
has_operational_resource: boolean
resources: PageDataResource[]
list_resources: PageDataListResource[]
flag_resources: PageDataFlagResource[]
}
// 리소스 타입
export interface PageDataResource {
resource_sort_order: number
resource_name: string
resource_type: string
groups: Record<string, any>
group_sets: Record<string, any>
}
// 리스트 리소스 타입
export interface PageDataListResource {
seq: number
title: string
img_path: string
url: string
link_target: string
display_start_dt: string
display_end_dt: string
is_display_status: number
display_status: number
option01: number
option02: number
option03: string
}
// 플래그 리소스 타입
export interface PageDataFlagResource {
seq: number
flag_type: number
option01: number
option02: number
option03: string
}
// 운영 리소스 타입 (기존 호환성 유지)
export interface PageDataOperateResource {
seq: number
col: string
col2: string
col3: string
col4: string
col5: string
col6: string
col7: string
resource_control_type: number
resource_type: string
[key: string]: any // Additional Properties
}
// ===== API 관련 타입들 =====
// API 에러 응답 타입
export interface PageDataErrorResponse {
@@ -165,11 +127,3 @@ export interface PageDataApiResult {
data: PageDataResponse | null
error: string | null
}
// 페이지 데이터 별칭 (기존 호환성)
export type pageData = PageDataValue
// Vue 컴포넌트 타입 정의
export interface TemplateComponent {
components: Record<string, PageDataComponent>
}