diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 4cba569..0000000 --- a/.prettierrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "printWidth": 300, - "tabWidth": 4, - "useTabs": false, - "semi": true, - "singleQuote": true, - "trailingComma": "all", - "bracketSameLine": true, - "bracketSpacing": true, - "arrowParens": "always", - "endOfLine": "auto", - "htmlWhitespaceSensitivity": "ignore", - "embeddedLanguageFormatting": "auto" -} \ No newline at end of file diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..35189b6 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,24 @@ +/** @type {import("prettier").Config} */ +module.exports = { + printWidth: 300, + tabWidth: 4, + useTabs: false, + semi: true, + singleQuote: true, + trailingComma: 'all', + bracketSameLine: true, + bracketSpacing: true, + arrowParens: 'always', + endOfLine: 'auto', + htmlWhitespaceSensitivity: 'ignore', + embeddedLanguageFormatting: 'auto', + + overrides: [ + { + files: ['games.js', 'tech.js', 'furniture.js'], + options: { + printWidth: 100, + }, + }, + ], +}; diff --git a/data/games.js b/data/games.js index 53495e9..1b49dc4 100644 --- a/data/games.js +++ b/data/games.js @@ -1,108 +1,142 @@ +import { + STATUS, + CONDITIONS, + CATEGORIES, + CURRENCIES, +} from '../scripts/config.js'; + const games = [ { id: 'k9v2x4qp', createdAt: '2026-02-22', updatedAt: '2026-02-22', + // --- 관리용 데이터 --- + isVerified: true, + purchaseDate: '2024-01-15', + // --- 상품 핵심 데이터 --- title: '드래곤 퀘스트 빌더즈 2: 파괴신 시도와 텅 빈 섬', - price: 70000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + // --- 판매 정보 --- + price: 70000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Korean', 'Out of Print'], - images: ['/images/games/k9v2x4qp_01.jpg', '/images/games/k9v2x4qp_02.jpg', '/images/games/k9v2x4qp_03.jpg'], - + // --- 미디어 및 설명 --- + images: [ + '/images/games/k9v2x4qp_01.jpg', + '/images/games/k9v2x4qp_02.jpg', + '/images/games/k9v2x4qp_03.jpg', + ], description: '개봉품, 한국 정식 발매(KR), OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['드래곤 퀘스트 빌더즈 2: 파괴신 시도와 텅 빈 섬 (ドラゴンクエストビルダーズ2 破壊神シドーとからっぽ島) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매(KR) 버전입니다.', '', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', ''], + fullDescription: [ + '드래곤 퀘스트 빌더즈 2: 파괴신 시도와 텅 빈 섬 (ドラゴンクエストビルダー즈2 破壊神シドー과からっぽ島) 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매(KR) 버전입니다.', + '', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + ], }, { id: 'p7v3x9qm', createdAt: '2026-02-22', updatedAt: '2026-02-22', + isVerified: true, + purchaseDate: '', title: '포켓몬스터 소드', - price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 40000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/p7v3x9qm_01.jpg', '/images/games/p7v3x9qm_02.jpg', '/images/games/p7v3x9qm_03.jpg'], - + images: [ + '/images/games/p7v3x9qm_01.jpg', + '/images/games/p7v3x9qm_02.jpg', + '/images/games/p7v3x9qm_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['포켓몬스터 소드 (ポケットモンスターソード / Pokémon Sword) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '포켓몬스터 소드 (ポケットモンスターソード / Pokémon Sword) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 't4q9x8vk', createdAt: '2026-02-22', updatedAt: '2026-02-22', + isVerified: true, + purchaseDate: '', title: '갓 이터 3', - price: 20000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 20000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/t4q9x8vk_01.jpg', '/images/games/t4q9x8vk_02.jpg', '/images/games/t4q9x8vk_03.jpg'], - + images: [ + '/images/games/t4q9x8vk_01.jpg', + '/images/games/t4q9x8vk_02.jpg', + '/images/games/t4q9x8vk_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['갓 이터 3 (GOD EATER 3 / ゴッドイーター3) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '갓 이터 3 (GOD EATER 3 / ゴッドイーター3) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'n4q8x2vp', createdAt: '2026-02-22', updatedAt: '2026-02-22', + isVerified: true, + purchaseDate: '', title: '니어 오토마타 더 엔드 오브 요르하 에디션', - price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 80000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese', 'Out of Print'], - images: ['/images/games/n4q8x2vp_01.jpg', '/images/games/n4q8x2vp_02.jpg', '/images/games/n4q8x2vp_03.jpg'], - + images: [ + '/images/games/n4q8x2vp_01.jpg', + '/images/games/n4q8x2vp_02.jpg', + '/images/games/n4q8x2vp_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - fullDescription: [ - '니어 오토마타 더 엔드 오브 요르하 에디션 (NieR:Automata The End of YoRHa Edition / ニーア オートマタ ジ エンド オブ ヨルハ エディション) 닌텐도 스위치용 패키지입니다.', + '니어 오토마타 더 엔드 오브 요르하 에디션 (NieR:Automata The End of YoRHa Edition / ニー아 オートマタ ジ エンド オブ ヨルハ エディション) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품이며 한국어를 지원합니다.', '', '개봉 후 보관했으며 상태는 매우 좋습니다.', @@ -116,208 +150,264 @@ const games = [ id: 'y7p3x9qd', createdAt: '2026-02-21', updatedAt: '2026-02-21', + isVerified: true, + purchaseDate: '', title: '페르소나 5 더 로열', - price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 40000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/y7p3x9qd_01.jpg', '/images/games/y7p3x9qd_02.jpg', '/images/games/y7p3x9qd_03.jpg'], - + images: [ + '/images/games/y7p3x9qd_01.jpg', + '/images/games/y7p3x9qd_02.jpg', + '/images/games/y7p3x9qd_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 미지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['페르소나 5 더 로열 (ペルソナ5 ザ・ロイヤル) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품입니다.', '한국어는 지원하지 않습니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '페르소나 5 더 로열 (ペルソナ5 ザ・ロイヤル) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품입니다.', + '한국어는 지원하지 않습니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'z4m9x2kp', createdAt: '2026-02-21', updatedAt: '2026-02-21', + isVerified: true, + purchaseDate: '', title: '택틱스 오우거: 리본', - price: 50000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 50000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/z4m9x2kp_01.jpg', '/images/games/z4m9x2kp_02.jpg', '/images/games/z4m9x2kp_03.jpg'], - + images: [ + '/images/games/z4m9x2kp_01.jpg', + '/images/games/z4m9x2kp_02.jpg', + '/images/games/z4m9x2kp_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['택틱스 오우거: 리본 (タクティクスオウガ リボーン) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '택틱스 오우거: 리본 (タクティクスオウガ リボーン) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'm2q9x7rb', createdAt: '2026-02-21', updatedAt: '2026-02-21', + isVerified: true, + purchaseDate: '', title: '라이자의 아틀리에 ~어둠의 여왕과 비밀의 은신처~', - price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 40000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/m2q9x7rb_01.jpg', '/images/games/m2q9x7rb_02.jpg', '/images/games/m2q9x7rb_03.jpg'], - + images: [ + '/images/games/m2q9x7rb_01.jpg', + '/images/games/m2q9x7rb_02.jpg', + '/images/games/m2q9x7rb_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['라이자의 아틀리에 ~어둠의 여왕과 비밀의 은신처~ (ライザのアトリエ ~常闇の女王と秘密の隠れ家~) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '라이자의 아틀리에 ~어둠의 여왕과 비밀의 은신처~ (ライザのアトリエ ~常闇の女王と秘密の隠れ가~) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'x9m4q2kt', createdAt: '2026-02-21', updatedAt: '2026-02-21', + isVerified: true, + purchaseDate: '', title: '드래곤볼 파이터즈', - price: 30000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 30000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/x9m4q2kt_01.jpg', '/images/games/x9m4q2kt_02.jpg', '/images/games/x9m4q2kt_03.jpg'], - + images: [ + '/images/games/x9m4q2kt_01.jpg', + '/images/games/x9m4q2kt_02.jpg', + '/images/games/x9m4q2kt_03.jpg', + ], description: '개봉품, 일본판(JP), 한국어 지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['드래곤볼 파이터즈 (ドラゴンボール ファイターズ) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '드래곤볼 파이터즈 (ドラゴンボール ファイターズ) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'p4x9m2zk', createdAt: '2026-02-21', updatedAt: '2026-02-21', + isVerified: true, + purchaseDate: '', title: '드래곤 퀘스트 트레저스 푸른 눈동자와 하늘의 나침반', - price: 30000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.BRAND_NEW, + price: 30000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/p4x9m2zk_01.jpg', '/images/games/p4x9m2zk_02.jpg', '/images/games/p4x9m2zk_03.jpg'], - + images: [ + '/images/games/p4x9m2zk_01.jpg', + '/images/games/p4x9m2zk_02.jpg', + '/images/games/p4x9m2zk_03.jpg', + ], description: '미개봉 새제품, 일본판(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['드래곤 퀘스트 트레저스 푸른 눈동자와 하늘의 나침반 (ドラゴンクエスト トレジャーズ 蒼き瞳と大空の羅針盤) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 제품입니다.', '한국어를 지원합니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '드래곤 퀘스트 트레저스 푸른 눈동자와 하늘의 나침반 (ドラゴンクエスト トレジャーズ 蒼き瞳と大空の羅針盤) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 제품입니다.', + '한국어를 지원합니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'r7c2v9km', createdAt: '2026-02-18', updatedAt: '2026-02-18', + isVerified: true, + purchaseDate: '', title: '한계돌파 모에로 크리스탈 H', - price: 75000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 75000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Korean'], - images: ['/images/games/r7c2v9km_01.webp', '/images/games/r7c2v9km_02.webp', '/images/games/r7c2v9km_03.webp'], - + images: [ + '/images/games/r7c2v9km_01.webp', + '/images/games/r7c2v9km_02.webp', + '/images/games/r7c2v9km_03.webp', + ], description: '개봉품, 한국 정발판, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['한계돌파 모에로 크리스탈 H (限界凸起 モエロクリスタル H) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판 제품입니다.', '', '개봉 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '한계돌파 모에로 크리스탈 H (限界凸起 モエロクリスタル H) 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매판 제품입니다.', + '', + '개봉 후 OPP에 넣어 보관·관리했으며', + '전체적으로 상태가 매우 좋은 편입니다.', + '', + '', + '', + ], }, { id: 'q8m3r5yk', createdAt: '2026-02-18', updatedAt: '2026-02-18', + isVerified: true, + purchaseDate: '', title: '페이퍼 마리오 종이접기 킹', - price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 40000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/q8m3r5yk_01.webp', '/images/games/q8m3r5yk_02.webp', '/images/games/q8m3r5yk_03.webp'], - + images: [ + '/images/games/q8m3r5yk_01.webp', + '/images/games/q8m3r5yk_02.webp', + '/images/games/q8m3r5yk_03.webp', + ], description: '개봉품, 일본판, 한국어 지원, OPP 보관', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['페이퍼 마리오 종이접기 킹 (ペーパーマリオオリガミキング) 닌텐도 스위치용 패키지입니다.', '일본판 제품이며 한국어를 지원합니다.', '', '개봉 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '페이퍼 마리오 종이접기 킹 (ペーパーマリオオリガミキング) 닌텐도 스위치용 패키지입니다.', + '일본판 제품이며 한국어를 지원합니다.', + '', + '개봉 후 OPP에 넣어 보관·관리했으며', + '전체적으로 상태가 매우 좋은 편입니다.', + '', + '', + '', + ], }, { id: 'k7p2x9qa', createdAt: '2026-02-18', updatedAt: '2026-02-18', + isVerified: true, + purchaseDate: '', title: '슈퍼 마리오 3D 컬렉션', - price: 140000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.BRAND_NEW, + price: 140000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/k7p2x9qa_01.webp', '/images/games/k7p2x9qa_02.webp', '/images/games/k7p2x9qa_03.webp'], - + images: [ + '/images/games/k7p2x9qa_01.webp', + '/images/games/k7p2x9qa_02.webp', + '/images/games/k7p2x9qa_03.webp', + ], description: '미개봉 새제품, 일본판, 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: [ '슈퍼 마리오 3D 컬렉션 (スーパーマリオ 3Dコレクション) 닌텐도 스위치용 패키지입니다.', '일본판 미개봉 새제품입니다.', @@ -334,209 +424,274 @@ const games = [ id: 'k8d2m4qs', createdAt: '2026-02-18', updatedAt: '2026-02-18', + isVerified: true, + purchaseDate: '', title: '사무라이 메이든', - price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 40000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/k8d2m4qs_01.webp', '/images/games/k8d2m4qs_02.webp', '/images/games/k8d2m4qs_03.webp'], - + images: [ + '/images/games/k8d2m4qs_01.webp', + '/images/games/k8d2m4qs_02.webp', + '/images/games/k8d2m4qs_03.webp', + ], description: '개봉 후 OPP 보관, 일본판(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['사무라이 메이든 (SAMURAI MAIDEN -サムライメイデン-) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 버전이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '사무라이 메이든 (SAMURAI MAIDEN -サムライメイデン-) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 버전이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'm8q2v7kx', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '니디 걸 오버도즈', - price: 30000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 30000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/m8q2v7kx_01.webp', '/images/games/m8q2v7kx_02.webp', '/images/games/m8q2v7kx_03.webp'], - + images: [ + '/images/games/m8q2v7kx_01.webp', + '/images/games/m8q2v7kx_02.webp', + '/images/games/m8q2v7kx_03.webp', + ], description: '개봉 후 OPP 보관, 일본판(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['니디 걸 오버도즈 (NEEDY GIRL OVERDOSE) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 버전이며 한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '니디 걸 오버도즈 (NEEDY GIRL OVERDOSE) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 버전이며 한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'q7n3x5pz', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '벽람항로 크로스 웨이브', - price: 60000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 60000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/q7n3x5pz_01.webp', '/images/games/q7n3x5pz_02.webp', '/images/games/q7n3x5pz_03.webp'], - + images: [ + '/images/games/q7n3x5pz_01.webp', + '/images/games/q7n3x5pz_02.webp', + '/images/games/q7n3x5pz_03.webp', + ], description: '개봉 후 OPP 보관, 일본판(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['벽람항로 크로스 웨이브 (アズールレーン クロスウェーブ) 닌텐도 스위치용 패키지입니다.', '일본판(JP) 버전이며 한국어는 지원하지 않습니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '벽람항로 크로스 웨이브 (アズールレーン クロスウェーブ) 닌텐도 스위치용 패키지입니다.', + '일본판(JP) 버전이며 한국어는 지원하지 않습니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'q7m2xk9p', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '13기병방위권', - price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 40000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Korean'], - images: ['/images/games/q7m2xk9p_01.webp', '/images/games/q7m2xk9p_02.webp', '/images/games/q7m2xk9p_03.webp'], - + images: [ + '/images/games/q7m2xk9p_01.webp', + '/images/games/q7m2xk9p_02.webp', + '/images/games/q7m2xk9p_03.webp', + ], description: '개봉 후 OPP 보관, 한국 정식 발매(KR)', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['13기병방위권 (十三機兵防衛圏) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매(KR) 버전입니다.', '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', '', '', '', '', ''], + fullDescription: [ + '13기병방위권 (十三機兵防衛圏) 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매(KR) 버전입니다.', + '개봉 후 OPP에 넣어 보관했으며 상태는 매우 좋습니다.', + '', + '', + '', + '', + '', + ], }, { id: 'm7q4z8kt', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '라즈베리 큐브', - price: 35000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 35000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Japanese'], - images: ['/images/games/m7q4z8kt_01.webp', '/images/games/m7q4z8kt_02.webp', '/images/games/m7q4z8kt_03.webp'], - + images: [ + '/images/games/m7q4z8kt_01.webp', + '/images/games/m7q4z8kt_02.webp', + '/images/games/m7q4z8kt_03.webp', + ], description: '개봉 후 OPP 보관, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['라즈베리 큐브 (ラズベリーキューブ) 일본판 패키지입니다.', '일본 내수용(JP) 제품입니다.', '한국어는 지원하지 않습니다.', '개봉 후 OPP에 보관되어 상태가 매우 좋습니다.', '', '', '', ''], + fullDescription: [ + '라즈베리 큐브 (ラズベリーキューブ) 일본판 패키지입니다.', + '일본 내수용(JP) 제품입니다.', + '한국어는 지원하지 않습니다.', + '개봉 후 OPP에 보관되어 상태가 매우 좋습니다.', + '', + '', + '', + '', + ], }, { id: 'v8m2q4zd', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '세계 게임 전집 51', - price: 30000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 30000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/v8m2q4zd_01.webp', '/images/games/v8m2q4zd_02.webp', '/images/games/v8m2q4zd_03.webp'], - + images: [ + '/images/games/v8m2q4zd_01.webp', + '/images/games/v8m2q4zd_02.webp', + '/images/games/v8m2q4zd_03.webp', + ], description: '개봉 후 OPP 보관, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['세계 게임 전집 51 (世界のアソビ大全51) 일본판 패키지입니다.', '일본 내수용(JP) 제품입니다.', '한국어는 지원하지 않습니다.', '개봉 후 OPP에 보관되어 상태가 매우 좋습니다.', '', '', '', ''], + fullDescription: [ + '세계 게임 전집 51 (世界のアソビ大全51) 일본판 패키지입니다.', + '일본 내수용(JP) 제품입니다.', + '한국어는 지원하지 않습니다.', + '개봉 후 OPP에 보관되어 상태가 매우 좋습니다.', + '', + '', + '', + '', + ], }, { id: 't9x4k2qm', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '키즈나 아이 - 터치 더 비트', - price: 20000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.BRAND_NEW, + price: 20000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Japanese'], - images: ['/images/games/t9x4k2qm_01.webp', '/images/games/t9x4k2qm_02.webp', '/images/games/t9x4k2qm_03.webp'], - + images: [ + '/images/games/t9x4k2qm_01.webp', + '/images/games/t9x4k2qm_02.webp', + '/images/games/t9x4k2qm_03.webp', + ], description: '미개봉 새제품, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['키즈나 아이 - 터치 더 비트 (Kizuna AI - Touch the Beat!) 일본어판 패키지입니다.', '일본 내수용(JP) 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '키즈나 아이 - 터치 더 비트 (Kizuna AI - Touch the Beat!) 일본어판 패키지입니다.', + '일본 내수용(JP) 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'a3k9x2pq', createdAt: '2026-02-16', updatedAt: '2026-02-16', + isVerified: true, + purchaseDate: '', title: '할로우 나이트', - price: 30000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '', + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + condition: CONDITIONS.EXCELLENT, + price: 30000, + currency: CURRENCIES.KRW, + customTag: '', tags: ['Japanese'], - images: ['/images/games/a3k9x2pq_01.webp', '/images/games/a3k9x2pq_02.webp', '/images/games/a3k9x2pq_03.webp'], - - description: '개봉 후 OPP 보관, 일본판(JP), 한국어 지원, 상태 매우 좋음', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['할로우 나이트 (Hollow Knight / ホロウナイト) 패키지입니다.', '일본판(JP) 제품입니다.', '한국어를 지원합니다.', '개봉 후 OPP에 넣어 보관했으며 상태가 매우 좋습니다.', '', '', '', ''], + images: [ + '/images/games/a3k9x2pq_01.webp', + '/images/games/a3k9x2pq_02.webp', + '/images/games/a3k9x2pq_03.webp', + ], + description: + '개봉 후 OPP 보관, 일본판(JP), 한국어 지원, 상태 매우 좋음', + fullDescription: [ + '할로우 나이트 (Hollow Knight / ホロウナイト) 패키지입니다.', + '일본판(JP) 제품입니다.', + '한국어를 지원합니다.', + '개봉 후 OPP에 넣어 보관했으며 상태가 매우 좋습니다.', + '', + '', + '', + '', + ], }, { id: 'm7x2k9qp', @@ -545,24 +700,31 @@ const games = [ title: '몽현 리마스터', price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', tags: ['Korean'], - images: ['/images/games/m7x2k9qp_01.webp', '/images/games/m7x2k9qp_02.webp', '/images/games/m7x2k9qp_03.webp'], + images: [ + '/images/games/m7x2k9qp_01.webp', + '/images/games/m7x2k9qp_02.webp', + '/images/games/m7x2k9qp_03.webp', + ], description: '한국어 정발(KR), 개봉 후 OPP 보관, 한글 지원', - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - - fullDescription: ['몽현 리마스터 (夢現Re:Master) 패키지입니다.', '한국어 정식 발매(KR) 제품입니다.', '한글을 지원합니다.', '개봉 후 OPP에 보관하여 상태는 매우 좋습니다..', '', '', '', ''], + fullDescription: [ + '몽현 리마스터 (夢現Re:Master) 패키지입니다.', + '한국어 정식 발매(KR) 제품입니다.', + '한글을 지원합니다.', + '개봉 후 OPP에 보관하여 상태는 매우 좋습니다..', + '', + '', + '', + '', + ], }, { id: 'q8t4m2zs', @@ -571,24 +733,32 @@ const games = [ title: '아마카노3', price: 200000, - currency: '₩', - category: 'Games', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, status: '미판매', customTag: '', tags: ['PC', 'Japanese', 'R19'], - images: ['/images/games/q8t4m2zs_01.webp', '/images/games/q8t4m2zs_02.webp', '/images/games/q8t4m2zs_03.webp', '/images/games/q8t4m2zs_04.webp'], + images: [ + '/images/games/q8t4m2zs_01.webp', + '/images/games/q8t4m2zs_02.webp', + '/images/games/q8t4m2zs_03.webp', + '/images/games/q8t4m2zs_04.webp', + ], description: '일본판(JP), R19, 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['아마카노3(アマカノ3) PC용 패키지입니다.', '일본 내수용(JP) 제품입니다.', 'R19 성인용 게임입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '아마존 한정 특정: B2 타페스트리(W스에이드), 아크릴 코스터, A4 코튼백 포함', ''], + fullDescription: [ + '아마카노3(アマカノ3) PC용 패키지입니다.', + '일본 내수용(JP) 제품입니다.', + 'R19 성인용 게임입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '아마존 한정 특정: B2 타페스트리(W스에이드), 아크릴 코스터, A4 코튼백 포함', + '', + ], }, { id: 'k3x9p7dm', @@ -597,24 +767,32 @@ const games = [ title: '아마카노2+', price: 200000, - currency: '₩', - category: 'Games', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, status: '미판매', customTag: '', tags: ['PC', 'Japanese', 'R19'], - images: ['/images/games/k3x9p7dm_01.webp', '/images/games/k3x9p7dm_02.webp', '/images/games/k3x9p7dm_03.webp', '/images/games/k3x9p7dm_04.webp'], + images: [ + '/images/games/k3x9p7dm_01.webp', + '/images/games/k3x9p7dm_02.webp', + '/images/games/k3x9p7dm_03.webp', + '/images/games/k3x9p7dm_04.webp', + ], description: '일본판(JP), R19, 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['아마카노2+(アマカノ2+) PC용 패키지입니다.', '일본 내수용(JP) 제품입니다.', 'R19 성인용 게임입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', ''], + fullDescription: [ + '아마카노2+(アマカノ2+) PC용 패키지입니다.', + '일본 내수용(JP) 제품입니다.', + 'R19 성인용 게임입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + ], }, { id: 'j4r9x6pm', @@ -623,24 +801,32 @@ const games = [ title: '-KATANA Project CompleteBox- 煌花絢爛', price: 250000, - currency: '₩', - category: 'Games', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, status: '미판매', customTag: 'R19', tags: ['PC', 'Japanese', 'R19'], - images: ['/images/games/j4r9x6pm_01.webp', '/images/games/j4r9x6pm_02.webp', '/images/games/j4r9x6pm_03.webp', '/images/games/j4r9x6pm_04.webp'], + images: [ + '/images/games/j4r9x6pm_01.webp', + '/images/games/j4r9x6pm_02.webp', + '/images/games/j4r9x6pm_03.webp', + '/images/games/j4r9x6pm_04.webp', + ], description: '일본 내수용(JP), 한국어 미지원, R19', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['-KATANA Project CompleteBox- 煌花絢爛 PC용 패키지입니다.', '일본 내수용(JP) 성인용(R19) 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '-KATANA Project CompleteBox- 煌花絢爛 PC용 패키지입니다.', + '일본 내수용(JP) 성인용(R19) 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'b5k8q2zn', @@ -649,24 +835,31 @@ const games = [ title: '9-nine- 호화판', price: 300000, - currency: '₩', - category: 'Games', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, status: '미판매', customTag: 'R19', tags: ['PC', 'Japanese', 'Limited Edition', 'R19'], - images: ['/images/games/b5k8q2zn_01.webp', '/images/games/b5k8q2zn_02.webp', '/images/games/b5k8q2zn_03.webp'], + images: [ + '/images/games/b5k8q2zn_01.webp', + '/images/games/b5k8q2zn_02.webp', + '/images/games/b5k8q2zn_03.webp', + ], description: '호화판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['9-nine- PC용 패키지입니다.', '일본 내수용(JP) 호화판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '9-nine- PC용 패키지입니다.', + '일본 내수용(JP) 호화판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 't6x3m8qe', @@ -675,24 +868,32 @@ const games = [ title: '홍마성 레밀리아 Ⅱ 요환의 진혼가', price: 60000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', tags: ['Nintendo Switch', 'Japanese'], - images: ['/images/games/t6x3m8qe_01.webp', '/images/games/t6x3m8qe_02.webp', '/images/games/t6x3m8qe_03.webp', '/images/games/t6x3m8qe_04.webp'], + images: [ + '/images/games/t6x3m8qe_01.webp', + '/images/games/t6x3m8qe_02.webp', + '/images/games/t6x3m8qe_03.webp', + '/images/games/t6x3m8qe_04.webp', + ], description: '일본 내수용(JP), 한국어 지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['홍마성 레밀리아 Ⅱ 요환의 진혼가 (紅魔城レミリアⅡ 妖幻の鎮魂歌) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 제품입니다.', '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '홍마성 레밀리아 Ⅱ 요환의 진혼가 (紅魔城レミリアⅡ 妖幻の鎮魂歌) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 제품입니다.', + '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'v9f2k6mb', @@ -701,24 +902,32 @@ const games = [ title: '아키바스 트립2 디렉터스 컷', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '초회 한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/v9f2k6mb_01.webp', '/images/games/v9f2k6mb_02.webp', '/images/games/v9f2k6mb_03.webp', '/images/games/v9f2k6mb_04.webp'], + images: [ + '/images/games/v9f2k6mb_01.webp', + '/images/games/v9f2k6mb_02.webp', + '/images/games/v9f2k6mb_03.webp', + '/images/games/v9f2k6mb_04.webp', + ], description: '초회 한정판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ["아키바스 트립2 디렉터스 컷 (AKIBA'S TRIP2 ディレクターズカット) 닌텐도 스위치용 패키지입니다.", '일본 내수용(JP) 초회 한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + "아키바스 트립2 디렉터스 컷 (AKIBA'S TRIP2 ディレクターズカット) 닌텐도 스위치용 패키지입니다.", + '일본 내수용(JP) 초회 한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'k2d9s7xa', @@ -727,24 +936,32 @@ const games = [ title: '아키바스 트립 퍼스트 메모리', price: 60000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '초회 한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/k2d9s7xa_01.webp', '/images/games/k2d9s7xa_02.webp', '/images/games/k2d9s7xa_03.webp', '/images/games/k2d9s7xa_04.webp'], + images: [ + '/images/games/k2d9s7xa_01.webp', + '/images/games/k2d9s7xa_02.webp', + '/images/games/k2d9s7xa_03.webp', + '/images/games/k2d9s7xa_04.webp', + ], description: '초회 한정판, 일본 내수용(JP), 한국어 지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ["아키바스 트립 퍼스트 메모리 (AKIBA'S TRIP ファーストメモリー) 닌텐도 스위치용 패키지입니다.", '일본 내수용(JP) 초회 한정판 제품입니다.', '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', '', '', '', '', ''], + fullDescription: [ + "아키바스 트립 퍼스트 메모리 (AKIBA'S TRIP ファーストメモリー) 닌텐도 스위치용 패키지입니다.", + '일본 내수용(JP) 초회 한정판 제품입니다.', + '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', + '', + '', + '', + '', + '', + ], }, { id: 'g5w8n2rb', @@ -753,24 +970,33 @@ const games = [ title: '하츠유키 사쿠라', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/g5w8n2rb_01.webp', '/images/games/g5w8n2rb_02.webp', '/images/games/g5w8n2rb_03.webp', '/images/games/g5w8n2rb_04.webp', '/images/games/g5w8n2rb_05.webp'], + images: [ + '/images/games/g5w8n2rb_01.webp', + '/images/games/g5w8n2rb_02.webp', + '/images/games/g5w8n2rb_03.webp', + '/images/games/g5w8n2rb_04.webp', + '/images/games/g5w8n2rb_05.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['하츠유키 사쿠라 (はつゆきさくら) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '하츠유키 사쿠라 (はつゆきさくら) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'd8m5r2yk', @@ -779,24 +1005,32 @@ const games = [ title: '토리노라인', price: 45000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/d8m5r2yk_01.webp', '/images/games/d8m5r2yk_02.webp', '/images/games/d8m5r2yk_03.webp', '/images/games/d8m5r2yk_04.webp'], + images: [ + '/images/games/d8m5r2yk_01.webp', + '/images/games/d8m5r2yk_02.webp', + '/images/games/d8m5r2yk_03.webp', + '/images/games/d8m5r2yk_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['토리노라인 (トリノライン) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '토리노라인 (トリ노ライン) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'h6q3z9vt', @@ -805,24 +1039,32 @@ const games = [ title: '사랑하는 그녀의 서투른 무대', price: 30000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/h6q3z9vt_01.webp', '/images/games/h6q3z9vt_02.webp', '/images/games/h6q3z9vt_03.webp', '/images/games/h6q3z9vt_04.webp'], + images: [ + '/images/games/h6q3z9vt_01.webp', + '/images/games/h6q3z9vt_02.webp', + '/images/games/h6q3z9vt_03.webp', + '/images/games/h6q3z9vt_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['사랑하는 그녀의 서투른 무대 (恋する彼女の不器用な舞台) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '사랑하는 그녀의 서투른 무대 (恋する彼女の不器용な舞台) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'p2w9e6ks', @@ -831,24 +1073,32 @@ const games = [ title: '추억을 안고 만나러 와!', price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/p2w9e6ks_01.webp', '/images/games/p2w9e6ks_02.webp', '/images/games/p2w9e6ks_03.webp', '/images/games/p2w9e6ks_04.webp'], + images: [ + '/images/games/p2w9e6ks_01.webp', + '/images/games/p2w9e6ks_02.webp', + '/images/games/p2w9e6ks_03.webp', + '/images/games/p2w9e6ks_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['추억을 안고 만나러 와! (思い出抱えて アイにコイ!!) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '추억을 안고 만나러 와! (思い出抱えて アイにコイ!!) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'u3n8x5ra', @@ -857,625 +1107,580 @@ const games = [ title: 'DeepOne', price: 60000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - images: ['/images/games/u3n8x5ra_01.webp', '/images/games/u3n8x5ra_02.webp', '/images/games/u3n8x5ra_03.webp', '/images/games/u3n8x5ra_04.webp'], + images: [ + '/images/games/u3n8x5ra_01.webp', + '/images/games/u3n8x5ra_02.webp', + '/images/games/u3n8x5ra_03.webp', + '/images/games/u3n8x5ra_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['DeepOne (ディープワン) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + 'DeepOne (ディープワン) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + '', + '', + '', + '', + ], }, { id: 'r4h8k2pz', createdAt: '2026-02-09', updatedAt: '2026-02-09', - title: '홍월 흔들리는 사랑의 등불', price: 60000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/r4h8k2pz_01.webp', '/images/games/r4h8k2pz_02.webp', '/images/games/r4h8k2pz_03.webp', '/images/games/r4h8k2pz_04.webp'], - + images: [ + '/images/games/r4h8k2pz_01.webp', + '/images/games/r4h8k2pz_02.webp', + '/images/games/r4h8k2pz_03.webp', + '/images/games/r4h8k2pz_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['홍월 흔들리는 사랑의 등불 (紅月ゆれる恋あかり) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '홍월 흔들리는 사랑의 등불 (紅月ゆれる恋あかり) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'c9v3k7mw', createdAt: '2026-02-09', updatedAt: '2026-02-09', - title: '시로가네×스피릿츠!', price: 90000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/c9v3k7mw_01.webp', '/images/games/c9v3k7mw_02.webp', '/images/games/c9v3k7mw_03.webp', '/images/games/c9v3k7mw_04.webp'], - + images: [ + '/images/games/c9v3k7mw_01.webp', + '/images/games/c9v3k7mw_02.webp', + '/images/games/c9v3k7mw_03.webp', + '/images/games/c9v3k7mw_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['시로가네×스피릿츠! (シロガネ×スピリッツ!) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '시로가네×스피릿츠! (シロガネ×スピリッツ!) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'x4r7p2ds', createdAt: '2026-02-08', updatedAt: '2026-02-08', - title: '하지러브 -Making*Lovers-', price: 70000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/x4r7p2ds_01.webp', '/images/games/x4r7p2ds_02.webp', '/images/games/x4r7p2ds_03.webp', '/images/games/x4r7p2ds_04.webp'], - + images: [ + '/images/games/x4r7p2ds_01.webp', + '/images/games/x4r7p2ds_02.webp', + '/images/games/x4r7p2ds_03.webp', + '/images/games/x4r7p2ds_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - - fullDescription: ['하지러브 -Making*Lovers- (ハジラブ -Making*Lovers-) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '하지러브 -Making*Lovers- (ハジラブ -Making*Lovers-) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'q8t2mz4k', createdAt: '2026-02-08', updatedAt: '2026-02-08', - title: '아이키스3 Cute', price: 110000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/q8t2mz4k_01.webp', '/images/games/q8t2mz4k_02.webp', '/images/games/q8t2mz4k_03.webp', '/images/games/q8t2mz4k_04.webp', '/images/games/q8t2mz4k_05.webp'], - + images: [ + '/images/games/q8t2mz4k_01.webp', + '/images/games/q8t2mz4k_02.webp', + '/images/games/q8t2mz4k_03.webp', + '/images/games/q8t2mz4k_04.webp', + '/images/games/q8t2mz4k_05.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['아이키스3 Cute (アイキス3 Cute) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '아이키스3 Cute (アイキス3 Cute) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'm7k2v9qp', createdAt: '2026-02-08', updatedAt: '2026-02-08', - title: '아이키스2', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/m7k2v9qp_01.webp', '/images/games/m7k2v9qp_02.webp', '/images/games/m7k2v9qp_03.webp', '/images/games/m7k2v9qp_04.webp'], - + images: [ + '/images/games/m7k2v9qp_01.webp', + '/images/games/m7k2v9qp_02.webp', + '/images/games/m7k2v9qp_03.webp', + '/images/games/m7k2v9qp_04.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['아이키스2 (アイキス2) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '아이키스2 (アイキス2) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'q8m2x4ra', createdAt: '2026-02-08', updatedAt: '2026-02-08', - title: '풀 키스 SS', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/q8m2x4ra_01.webp', '/images/games/q8m2x4ra_02.webp', '/images/games/q8m2x4ra_03.webp', '/images/games/q8m2x4ra_04.webp', '/images/games/q8m2x4ra_05.webp'], - + images: [ + '/images/games/q8m2x4ra_01.webp', + '/images/games/q8m2x4ra_02.webp', + '/images/games/q8m2x4ra_03.webp', + '/images/games/q8m2x4ra_04.webp', + '/images/games/q8m2x4ra_05.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['풀 키스 SS (フルキスSS) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '풀 키스 SS (フルキスSS) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'k3f8d2qa', createdAt: '2026-02-08', updatedAt: '2026-02-08', - title: '하루키스', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/k3f8d2qa_01.webp', '/images/games/k3f8d2qa_02.webp', '/images/games/k3f8d2qa_03.webp', '/images/games/k3f8d2qa_04.webp', '/images/games/k3f8d2qa_05.webp'], - + images: [ + '/images/games/k3f8d2qa_01.webp', + '/images/games/k3f8d2qa_02.webp', + '/images/games/k3f8d2qa_03.webp', + '/images/games/k3f8d2qa_04.webp', + '/images/games/k3f8d2qa_05.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['하루키스 (ハルキス) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어는 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '하루키스 (ハルキス) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어는 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'p4x9t2qa', createdAt: '2026-02-07', updatedAt: '2026-02-07', - title: '동방 루나 나이츠', price: 70000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '디럭스판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/p4x9t2qa_01.webp', '/images/games/p4x9t2qa_02.webp', '/images/games/p4x9t2qa_03.webp', '/images/games/p4x9t2qa_04.webp'], - + images: [ + '/images/games/p4x9t2qa_01.webp', + '/images/games/p4x9t2qa_02.webp', + '/images/games/p4x9t2qa_03.webp', + '/images/games/p4x9t2qa_04.webp', + ], description: '디럭스판, 일본 내수용(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['동방 루나 나이츠 (Touhou Luna Nights / 東方ルナナイツ) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 디럭스판 제품입니다.', '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '동방 루나 나이츠 (Touhou Luna Nights) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 디럭스판 제품입니다.', + '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'k8q3mz7r', createdAt: '2026-02-07', updatedAt: '2026-02-07', - title: '하이퍼→하이스피드→지니어스', price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '초회 한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/k8q3mz7r_01.webp', '/images/games/k8q3mz7r_02.webp', '/images/games/k8q3mz7r_03.webp', '/images/games/k8q3mz7r_04.webp'], - + images: [ + '/images/games/k8q3mz7r_01.webp', + '/images/games/k8q3mz7r_02.webp', + '/images/games/k8q3mz7r_03.webp', + '/images/games/k8q3mz7r_04.webp', + ], description: '초회 한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['하이퍼→하이스피드→지니어스 (Hyper→Highspeed→Genius / ハイパーハイスピードジーニアス) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 초회 한정판 제품입니다.', '한국어를 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '', '', ''], + fullDescription: [ + '하이퍼→하이스피드→지니어스 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 초회 한정판 제품입니다.', + '한국어를 지원하지 않습니다.', + '미개봉 새제품 상태입니다.', + ], }, { id: 'p4x8s2ke', createdAt: '2026-02-07', updatedAt: '2026-02-07', - title: '스다마 릴레이션', price: 65000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '완전생산한정판', - tags: ['Nintendo Switch', 'Japanese', 'Limited Edition'], - - images: ['/images/games/p4x8s2ke_01.webp', '/images/games/p4x8s2ke_02.webp', '/images/games/p4x8s2ke_03.webp', '/images/games/p4x8s2ke_04.webp', '/images/games/p4x8s2ke_05.webp', '/images/games/p4x8s2ke_06.webp'], - + images: [ + '/images/games/p4x8s2ke_01.webp', + '/images/games/p4x8s2ke_02.webp', + '/images/games/p4x8s2ke_03.webp', + '/images/games/p4x8s2ke_04.webp', + '/images/games/p4x8s2ke_05.webp', + '/images/games/p4x8s2ke_06.webp', + ], description: '완전생산한정판, 일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['스다마 릴레이션 (すだまリレイシヨン) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '한국어를 지원하지 않습니다.', '미개봉 새제품 상태입니다.', '', '클리어 파일은 존재는 하지만 상태는 좋지 않습니다.', '', ''], + fullDescription: [ + '스다마 릴레이션 (す다まリ레이シヨン) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 완전생산한정판 제품입니다.', + '한국어를 지원하지 않습니다.', + '미개봉 새제품 상태이며, 클리어 파일 상태는 좋지 않습니다.', + ], }, { id: 'm7t4q9bx', createdAt: '2026-02-06', updatedAt: '2026-02-06', - title: '파이어 엠블렘 무쌍 풍화설월', price: 50000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - - tags: ['Nintendo Switch', 'Nintendo Switch', 'Korean'], - - images: ['/images/games/m7t4q9bx_01.webp', '/images/games/m7t4q9bx_02.webp', '/images/games/m7t4q9bx_03.webp'], - + tags: ['Nintendo Switch', 'Korean'], + images: [ + '/images/games/m7t4q9bx_01.webp', + '/images/games/m7t4q9bx_02.webp', + '/images/games/m7t4q9bx_03.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - fullDescription: ['파이어 엠블렘 무쌍 풍화설월 (ファイアーエムブレム無双 風花雪月) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판(KR) 제품입니다.', '', '개봉 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '파이어 엠블렘 무쌍 풍화설월 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매판(KR) 제품입니다.', + '개봉 후 OPP에 넣어 보관하여 상태가 매우 좋습니다.', + ], }, { id: 'k3p9x2qa', createdAt: '2026-02-06', updatedAt: '2026-02-06', - title: '젤다무쌍 하이랄의 전설들 DX', price: 50000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - - tags: ['Nintendo Switch', 'Nintendo Switch', 'Korean'], - - images: ['/images/games/k3p9x2qa_01.webp', '/images/games/k3p9x2qa_02.webp', '/images/games/k3p9x2qa_03.webp'], - + tags: ['Nintendo Switch', 'Korean'], + images: [ + '/images/games/k3p9x2qa_01.webp', + '/images/games/k3p9x2qa_02.webp', + '/images/games/k3p9x2qa_03.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - fullDescription: ['젤다무쌍 하이랄의 전설들 DX (ゼルダ無双 ハイラルオールスターズ DX) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판(KR) 제품입니다.', '', '개봉 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '젤다무쌍 하이랄의 전설들 DX 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매판(KR) 제품입니다.', + '개봉 후 OPP 보관으로 상태가 우수합니다.', + ], }, { id: 'r8k2v4pd', createdAt: '2026-02-06', updatedAt: '2026-02-06', - title: '얼라이언스 얼라이브 HD Remastered', price: 50000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Nintendo Switch', 'Korean'], - - images: ['/images/games/r8k2v4pd_01.webp', '/images/games/r8k2v4pd_02.webp', '/images/games/r8k2v4pd_03.webp'], - + images: [ + '/images/games/r8k2v4pd_01.webp', + '/images/games/r8k2v4pd_02.webp', + '/images/games/r8k2v4pd_03.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - fullDescription: ['얼라이언스 얼라이브 HD Remastered (アライアンス・アライブ HDリマスター) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판(KR) 제품입니다.', '', '개봉 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '얼라이언스 얼라이브 HD Remastered 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매판(KR) 제품입니다.', + 'OPP 케이스 보관 제품으로 상태가 매우 좋습니다.', + ], }, { id: 'a7k3m9q2', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: '크라이스타', price: 40000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Nintendo Switch', 'Korean'], - - images: ['/images/games/a7k3m9q2_01.webp', '/images/games/a7k3m9q2_02.webp', '/images/games/a7k3m9q2_03.webp'], - + images: [ + '/images/games/a7k3m9q2_01.webp', + '/images/games/a7k3m9q2_02.webp', + '/images/games/a7k3m9q2_03.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - fullDescription: ['크라이스타 (CRYSTAR) 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판(KR) 제품입니다.', '', '사용 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '크라이스타 (CRYSTAR) 닌텐도 스위치용 패키지입니다.', + '한국 정식 발매판(KR) 제품입니다.', + '전체적으로 상태가 매우 좋은 편입니다.', + ], }, { id: 'fynzefa9', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: '신 같은 너에게', price: 45000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Nintendo Switch', 'Japanese'], - - images: ['/images/games/fynzefa9_01.webp', '/images/games/fynzefa9_02.webp', '/images/games/fynzefa9_03.webp'], - + images: [ + '/images/games/fynzefa9_01.webp', + '/images/games/fynzefa9_02.webp', + '/images/games/fynzefa9_03.webp', + ], description: '일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['신 같은 너에게 (神様のような君へ) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 제품입니다.', '미개봉 새제품 상태입니다.', '', '※ 한국어는 지원하지 않습니다.', '', '', ''], + fullDescription: [ + '신 같은 너에게 (神様のような君へ) 닌텐도 스위치용 패키지입니다.', + '일본 내수용(JP) 미개봉 새제품입니다.', + '※ 한국어는 지원하지 않습니다.', + ], }, { id: '0xutijk8', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: '드래곤볼 더 브레이커스 스페셜 에디션', price: 10000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Nintendo Switch', 'Korean'], - - images: ['/images/games/0xutijk8_01.webp', '/images/games/0xutijk8_02.webp', '/images/games/0xutijk8_03.webp'], - + images: [ + '/images/games/0xutijk8_01.webp', + '/images/games/0xutijk8_02.webp', + '/images/games/0xutijk8_03.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['드래곤볼 더 브레이커스 스페셜 에디션 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판(KR) 제품입니다.', '미개봉 새제품 상태입니다.', '', '', '', '', ''], + fullDescription: [ + '드래곤볼 더 브레이커스 스페셜 에디션 미개봉 새제품입니다.', + '한국 정식 발매판(KR) 제품입니다.', + ], }, { id: 'w5vyp5x2', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: '페어리 펜서 F 리프레인 코드', price: 25000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Nintendo Switch', 'Korean'], - - images: ['/images/games/w5vyp5x2_01.webp', '/images/games/w5vyp5x2_02.webp', '/images/games/w5vyp5x2_03.webp'], - + images: [ + '/images/games/w5vyp5x2_01.webp', + '/images/games/w5vyp5x2_02.webp', + '/images/games/w5vyp5x2_03.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['페어리 펜서 F 리프레인 코드 닌텐도 스위치용 패키지입니다.', '한국 정식 발매판(KR) 제품입니다.', '미개봉 새제품 상태입니다.', '', '', '', '', ''], + fullDescription: [ + '페어리 펜서 F 리프레인 코드 미개봉 새제품입니다.', + '한국 정식 발매판(KR) 제품입니다.', + ], }, { id: 'de41vs8u', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: "포켓몬스터 Let's Go! 이브이", price: 50000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - - tags: ['Nintendo Switch', 'Nintendo Switch', 'Japanese'], - - images: ['/images/games/de41vs8u_01.webp', '/images/games/de41vs8u_02.webp', '/images/games/de41vs8u_03.webp'], - + tags: ['Nintendo Switch', 'Japanese'], + images: [ + '/images/games/de41vs8u_01.webp', + '/images/games/de41vs8u_02.webp', + '/images/games/de41vs8u_03.webp', + ], description: '일본 내수용(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, fullDescription: [ - "포켓몬스터 Let's Go! 이브이 (ポケットモンスター Let's Go! イーブイ) 닌텐도 스위치용 패키지입니다.", - '일본 내수용(JP) 제품입니다.', + "포켓몬스터 Let's Go! 이브이 일본 내수용 패키지입니다.", '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', - '', - '사용 후 OPP에 넣어 보관·관리했으며', - '전체적으로 상태가 매우 좋은 편입니다.', - '', - '', - '', + 'OPP 보관으로 상태가 매우 좋습니다.', ], }, { id: 'z69xbqg7', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: '젤다의 전설 꿈꾸는 섬', price: 55000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - - tags: ['Nintendo Switch', 'Nintendo Switch', 'Japanese'], - - images: ['/images/games/z69xbqg7_01.webp', '/images/games/z69xbqg7_02.webp', '/images/games/z69xbqg7_03.webp'], + tags: ['Nintendo Switch', 'Japanese'], + images: [ + '/images/games/z69xbqg7_01.webp', + '/images/games/z69xbqg7_02.webp', + '/images/games/z69xbqg7_03.webp', + ], description: '일본 내수용(JP), 한국어 지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, - fullDescription: ['젤다의 전설 꿈꾸는 섬 (ゼルダの伝説 夢をみる島) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 제품입니다.', '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', '', '사용 후 OPP에 넣어 보관·관리했으며', '전체적으로 상태가 매우 좋은 편입니다.', '', '', ''], + fullDescription: [ + '젤다의 전설 꿈꾸는 섬 일본 내수용 패키지입니다.', + '멀티랭기지 지원으로 한국어 플레이가 가능합니다.', + '전체적으로 상태가 매우 좋은 편입니다.', + ], }, { id: 'q0422roj', createdAt: '2026-02-05', updatedAt: '2026-02-05', - title: 'LOOPERS', price: 25000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Nintendo Switch', 'Japanese'], - - images: ['/images/games/q0422roj_01.webp', '/images/games/q0422roj_02.webp', '/images/games/q0422roj_03.webp'], + images: [ + '/images/games/q0422roj_01.webp', + '/images/games/q0422roj_02.webp', + '/images/games/q0422roj_03.webp', + ], description: '일본 내수용(JP), 한국어 미지원', - - specs: { - purchaseDate: '', - condition: 'EXCELLENT', - isVerified: true, - }, fullDescription: [ - 'LOOPERS (ルーパーズ) 닌텐도 스위치용 패키지입니다.', - '일본 내수용(JP) 제품입니다.', - '엔젤비트(Angel Beats!) 등으로 유명한 Key 제작 작품입니다.', - '장르는 키네틱 노벨입니다.', - '', - '사용 후 OPP에 넣어 보관·관리했으며', - '전체적으로 상태가 매우 좋은 편입니다.', - '', - '※ 한국어는 지원하지 않습니다.', - '', - '', - '', + 'LOOPERS (ルーパーズ) 일본 내수용 패키지입니다.', + 'Key 제작의 키네틱 노벨 장르입니다.', + '상태는 매우 좋으나 한국어는 지원하지 않습니다.', ], }, { - // [1] 시스템 및 메타 정보 (가장 먼저 확인하게 되는 고유값) id: 'i3zgj4zl', createdAt: '2026-02-02', updatedAt: '2026-02-02', - - // [2] 기본 판매 정보 (리스트 카드에 바로 노출될 핵심 정보) title: '플로럴 플로우러브', price: 60000, - currency: '₩', - category: 'Games', - status: '판매중', - customTag: '완전생산한정판', // 카드 위에 띄울 뱃지용 - - // [3] 분류 및 필터 정보 (중복 선택 및 검색용) + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, + customTag: '완전생산한정판', tags: ['Nintendo Switch', 'Limited Edition', 'Japanese'], - - // [4] 시각 및 요약 정보 - images: ['/images/games/i3zgj4zl_01.webp', '/images/games/i3zgj4zl_02.webp', '/images/games/i3zgj4zl_03.webp', '/images/games/i3zgj4zl_04.webp'], + images: [ + '/images/games/i3zgj4zl_01.webp', + '/images/games/i3zgj4zl_02.webp', + '/images/games/i3zgj4zl_03.webp', + '/images/games/i3zgj4zl_04.webp', + ], description: '한정판, 일본 내수용(JP), 한글미지원', - - // [5] 상세 스펙 및 본문 (데이터 양이 가장 많으므로 하단 배치) - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['플로럴 플로우러브 (フローラル・フローラブ) 닌텐도 스위치용 패키지입니다.', '일본 내수용(JP) 완전생산한정판 제품입니다.', '미개봉 새제품 상태입니다.', '한글은 지원하지 않으며 일본어로 플레이 가능합니다.', '', '', '', '', '', '', '', '', '', ''], + fullDescription: [ + '플로럴 플로우러브 완전생산한정판 패키지입니다.', + '미개봉 새제품이며 일본어로 플레이 가능합니다.', + ], }, { id: 'nm4uzduj', createdAt: '2026-02-01', updatedAt: '2026-02-01', - title: '닌텐도 게임앤워치 젤다의 전설', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Game&Watch'], - - images: ['/images/games/nm4uzduj_01.webp', '/images/games/nm4uzduj_02.webp'], + images: [ + '/images/games/nm4uzduj_01.webp', + '/images/games/nm4uzduj_02.webp', + ], description: '일본 내수용(JP)', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['닌텐도 Game & Watch 젤다의 전설 에디션입니다.', '일본 내수용 제품입니다.', '미개봉 새제품 상태입니다.', '소장용으로 보관하기 좋은 상태입니다.', '', '※ 게임&워치는 한국어에 대응하지 않습니다.', '', '', '', '', '', '', '', ''], + fullDescription: [ + '닌텐도 Game & Watch 젤다의 전설 에디션 미개봉 새제품입니다.', + '일본 내수용이며 한국어는 대응하지 않습니다.', + ], }, { id: 'vzwe916n', createdAt: '2026-02-01', updatedAt: '2026-02-01', - title: '닌텐도 게임앤워치 슈퍼마리오 브라더스', price: 80000, - currency: '₩', - category: 'Games', - status: '판매중', + currency: CURRENCIES.KRW, + category: CATEGORIES.GAMES, + status: STATUS.ON_SALE, customTag: '', - tags: ['Game&Watch'], - - images: ['/images/games/vzwe916n_01.webp', '/images/games/vzwe916n_02.webp'], + images: [ + '/images/games/vzwe916n_01.webp', + '/images/games/vzwe916n_02.webp', + ], description: '한국 정식 발매판(KR)', - - specs: { - purchaseDate: '', - condition: 'BRAND_NEW', - isVerified: true, - }, - fullDescription: ['닌텐도 Game & Watch 슈퍼 마리오 에디션입니다.', '한국 정식 발매판으로 국내 유통된 제품입니다.', '미개봉 새제품 상태입니다.', '소장용으로 보관하기 좋은 상태입니다.', '', '※ 게임&워치는 한국어에 대응하지 않습니다.', '', '', '', '', '', '', '', ''], + fullDescription: [ + '닌텐도 Game & Watch 슈퍼 마리오 에디션 미개봉 새제품입니다.', + '한국 정식 발매판 제품입니다.', + ], }, ]; export default games; diff --git a/scripts/config.js b/scripts/config.js index bdf7641..694a877 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -37,31 +37,30 @@ export const SEARCH_CONFIG = { * isSystemVisible: 필터 목록 및 리스트 노출 여부 * soldOut: 판매 완료 처리 여부 (이미지 그레이스케일 등) */ +export const STATUS = { + UNLISTED: '미판매', + RESERVED: '판매예정', + ON_SALE: '판매중', + SOLD_OUT: '판매완료', +}; + export const STATUS_META = { - 미판매: { - selectable: false, - isDefaultActive: false, - isSystemVisible: true, - soldOut: false, - }, - 판매예정: { - selectable: false, - isDefaultActive: false, - isSystemVisible: true, - soldOut: false, - }, - 판매중: { - selectable: true, - isDefaultActive: true, - isSystemVisible: true, - soldOut: false, - }, - 판매완료: { - selectable: false, - isDefaultActive: false, - isSystemVisible: true, - soldOut: true, - }, + [STATUS.UNLISTED]: { selectable: false, isDefaultActive: false, isSystemVisible: true, soldOut: false }, + [STATUS.RESERVED]: { selectable: false, isDefaultActive: false, isSystemVisible: true, soldOut: false }, + [STATUS.ON_SALE]: { selectable: true, isDefaultActive: true, isSystemVisible: true, soldOut: false }, + [STATUS.SOLD_OUT]: { selectable: false, isDefaultActive: false, isSystemVisible: true, soldOut: true }, +}; + +export const CATEGORIES = { + GAMES: 'Games', + TECH: 'Tech', + FURNITURE: 'Furniture', +}; + +export const CURRENCIES = { + KRW: '₩', + USD: '$', + JPY: '¥' }; /** 필터 칩 표시 순서 정의 */ @@ -106,15 +105,26 @@ export const TAG_STYLES = { export const TAG_DEFAULT_STYLE = 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-400'; /** * 상품 상태(Condition) 등급 및 라벨 설정 - * specs.condition 값과 매칭됩니다. + * condition 값과 매칭됩니다. */ +export const CONDITIONS = { + BRAND_NEW: 'BRAND_NEW', + LIKE_NEW: 'LIKE_NEW', + EXCELLENT: 'EXCELLENT', + GOOD: 'GOOD', + INCOMPLETE: 'INCOMPLETE', + DAMAGED: 'DAMAGED', + JUNK: 'JUNK', + OTHER: 'OTHER', +}; + export const PRODUCT_CONDITIONS = { - BRAND_NEW: { label: 'Brand New (미개봉)', color: 'text-emerald-600', level: 'S' }, - LIKE_NEW: { label: 'Like New (단순개봉)', color: 'text-blue-600', level: 'A+' }, - EXCELLENT: { label: 'Excellent (최상급)', color: 'text-sky-600', level: 'A' }, - GOOD: { label: 'Good (보통/사용감)', color: 'text-slate-600', level: 'B' }, - INCOMPLETE: { label: 'Incomplete (구성품 누락)', color: 'text-amber-600', level: 'C' }, - DAMAGED: { label: 'Damaged (하자/파손)', color: 'text-orange-600', level: 'D' }, - JUNK: { label: 'Junk (동작불가/부품용)', color: 'text-red-600', level: 'F' }, - OTHER: { label: '기타 (상세설명 참고)', color: 'text-indigo-600', level: '-' }, + [CONDITIONS.BRAND_NEW]: { label: 'Brand New (미개봉)', color: 'text-emerald-600', level: 'S' }, + [CONDITIONS.LIKE_NEW]: { label: 'Like New (단순개봉)', color: 'text-blue-600', level: 'A+' }, + [CONDITIONS.EXCELLENT]: { label: 'Excellent (최상급)', color: 'text-sky-600', level: 'A' }, + [CONDITIONS.GOOD]: { label: 'Good (보통/사용감)', color: 'text-slate-600', level: 'B' }, + [CONDITIONS.INCOMPLETE]: { label: 'Incomplete (구성품 누락)', color: 'text-amber-600', level: 'C' }, + [CONDITIONS.DAMAGED]: { label: 'Damaged (하자/파손)', color: 'text-orange-600', level: 'D' }, + [CONDITIONS.JUNK]: { label: 'Junk (동작불가/부품용)', color: 'text-red-600', level: 'F' }, + [CONDITIONS.OTHER]: { label: '기타 (상세설명 참고)', color: 'text-indigo-600', level: '-' }, }; \ No newline at end of file diff --git a/scripts/filters.js b/scripts/filters.js index 2474f6b..68af27f 100644 --- a/scripts/filters.js +++ b/scripts/filters.js @@ -67,7 +67,7 @@ export function applyFilters() { const statusMatch = state.activeStatuses.has(product.status); const categoryMatch = state.activeCategories.has('All') || state.activeCategories.has(product.category); const searchMatch = checkSearchMatch(product, keyword); - const tagMatch = state.activeTags.size === 0 || Array.from(state.activeTags).every((tag) => product.tags && product.tags.includes(tag)); + const tagMatch = state.activeTags.size === 0 || (state.tagMode === 'AND' ? Array.from(state.activeTags).every((tag) => product.tags?.includes(tag)) : Array.from(state.activeTags).some((tag) => product.tags?.includes(tag))); return statusMatch && categoryMatch && searchMatch && tagMatch; }) @@ -195,8 +195,15 @@ export function renderTagChips() { ${hasActive ? 'bg-red-50 text-red-500 border-red-200 hover:bg-red-100' : 'bg-slate-50 text-slate-400 border-slate-200 opacity-60'}" title="태그 초기화"> `; + const modeBtnHtml = ` + +`; container.innerHTML = + modeBtnHtml + resetBtnHtml + sortedTags .map((tag) => { @@ -229,6 +236,11 @@ export function renderTagChips() { applyFilters(); }; + document.getElementById('tag-mode-btn').onclick = () => { + state.tagMode = state.tagMode === 'AND' ? 'OR' : 'AND'; + applyFilters(); // 필터 재적용 및 UI 갱신 + }; + container.querySelectorAll('.tag-chip').forEach((chip) => { chip.onclick = () => { const tag = chip.dataset.tag; @@ -263,23 +275,42 @@ export function toggleCategory(category) { * 로고(타이틀) 클릭 시 모든 필터 초기화 */ document.getElementById('logo-title')?.addEventListener('click', () => { + // 1. 기본 상태 초기화 state.searchKeyword = ''; + state.activeTags.clear(); + state.activeCategories.clear(); + state.activeCategories.add('All'); + state.currentPage = 1; + + // 2. [수정] config.js의 명칭(isDefaultActive)에 맞춰 필터 복구 + state.activeStatuses.clear(); + + // STATUS_FILTERS를 순회하며 STATUS_META에 정의된 기본 활성 상태를 추가 + STATUS_FILTERS.forEach((f) => { + // config.js에서 정의한 isDefaultActive 속성을 확인합니다. + if (STATUS_META[f.key]?.isDefaultActive) { + state.activeStatuses.add(f.key); + } + }); + + // 만약 config 설정 실수로 아무것도 추가되지 않았다면 '판매중'이라도 강제로 넣음 (안전장치) + if (state.activeStatuses.size === 0) { + state.activeStatuses.add('판매중'); + } + + // 3. UI 리셋 const searchInput = document.getElementById('search-input'); if (searchInput) searchInput.value = ''; - state.activeCategories.clear(); - state.activeCategories.add('All'); - - state.activeStatuses.clear(); - STATUS_FILTERS.filter((f) => f.defaultActive).forEach((f) => state.activeStatuses.add(f.key)); - - state.activeTags.clear(); - - applyFilters(); + // 4. 데이터 갱신 및 UI 렌더링 + applyFilters(); renderStatusChips(); renderCategoryChips(productsData); + renderTagChips(); window.scrollTo({ top: 0, behavior: 'smooth' }); + + console.log("필터 복구 완료:", Array.from(state.activeStatuses)); }); /** diff --git a/scripts/modal.js b/scripts/modal.js index 22c8fba..dc6add5 100644 --- a/scripts/modal.js +++ b/scripts/modal.js @@ -153,7 +153,7 @@ function renderModalInfo(product) { function renderSpecs(product) { // 구매일자 const modalDateRow = document.getElementById('modal-date-row'); - const pDate = product.specs?.purchaseDate; + const pDate = product.purchaseDate; if (pDate && String(pDate).trim() !== '' && String(pDate) !== 'null') { document.getElementById('modal-date').textContent = pDate; modalDateRow?.classList.replace('hidden', 'flex'); @@ -162,7 +162,7 @@ function renderSpecs(product) { } // 제품 상태(Condition) - const conditionKey = product.specs?.condition; + const conditionKey = product.condition; const conditionRowWrap = document.getElementById('modal-condition-row')?.parentElement; if (conditionKey) { const conditionLabel = PRODUCT_CONDITIONS[conditionKey]?.label || conditionKey; @@ -170,7 +170,7 @@ function renderSpecs(product) { conditionRowWrap?.classList.replace('hidden', 'flex'); const verifiedIcon = document.getElementById('modal-verified-icon'); - if (verifiedIcon) verifiedIcon.classList.toggle('hidden', !product.specs?.isVerified); + if (verifiedIcon) verifiedIcon.classList.toggle('hidden', !product.isVerified); } else { conditionRowWrap?.classList.replace('flex', 'hidden'); } diff --git a/scripts/productList.js b/scripts/productList.js index 8f8d621..8e01aef 100644 --- a/scripts/productList.js +++ b/scripts/productList.js @@ -81,7 +81,7 @@ window.handleThumbnailLeave = function (id) { window.toggleSelectItem = function (id) { if (state.selectedIds.has(id)) state.selectedIds.delete(id); else state.selectedIds.add(id); - + saveSelection(); renderProducts(state.currentPage); updateSummary(); @@ -128,7 +128,7 @@ function renderEmpty(grid, tableWrapper, paginationContainer) { grid.classList.remove('grid'); grid.classList.add('hidden'); tableWrapper.classList.add('hidden'); - + const emptyMsg = `