`backend` 옆에 `front` 가 있을 이유가 없었다. negosium 의 negodata/front 를 그대로 베꼈고 그게 왜 front 인지는 따져보지 않았다 — 근거 없이 들여온 이름이라 바로잡는다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019uYhHQdssRubirPirrdJJC
410 lines
18 KiB
TypeScript
410 lines
18 KiB
TypeScript
import type {IndustryData, IndustryType} from '@o2o/shared';
|
|
|
|
export const INDUSTRY_CONFIGS: Record<IndustryType, IndustryData> = {
|
|
stay: {
|
|
id: 'stay',
|
|
name: '숙박',
|
|
subName: '펜션 · 스테이',
|
|
description: '감성 스테이, 풀빌라, 독채 펜션, 게스트하우스',
|
|
channels: [
|
|
{ id: 'stay_platforms', name: '야놀자 · 여기어때', checked: true },
|
|
{ id: 'naver_place', name: '네이버 플레이스', checked: true },
|
|
{ id: 'instagram', name: '인스타그램', checked: true },
|
|
],
|
|
sections: [
|
|
{ id: 'hero', type: 'hero', name: '히어로', isLocked: true, isEnabled: true, description: '상단 메인 비주얼과 대표 문구' },
|
|
{ id: 'intro', type: 'intro', name: '소개', isLocked: false, isEnabled: true, description: '스테이의 철학과 공간 스토리' },
|
|
{ id: 'rooms', type: 'rooms', name: '객실 안내', isLocked: false, isEnabled: true, description: '객실 타입, 구조, 비치 물품' },
|
|
{ id: 'info', type: 'info', name: '기본 정보', isLocked: true, isEnabled: true, description: '체크인, 주차, 시설 핵심 정보' },
|
|
{ id: 'rules', type: 'rules', name: '이용 규정', isLocked: false, isEnabled: true, description: '환불 규정, 입실 수칙 및 에티켓' },
|
|
{ id: 'booking', type: 'booking', name: '실시간 예약', isLocked: false, isEnabled: true, description: '예약 현황 및 예약 신청' },
|
|
{ id: 'photos', type: 'photos', name: '사진 갤러리', isLocked: false, isEnabled: true, description: '감성 인테리어와 외부 풍경' },
|
|
{ id: 'map', type: 'map', name: '오시는 길', isLocked: true, isEnabled: true, description: '위치 안내 및 대중교통 경로' },
|
|
{ id: 'weather', type: 'weather', name: '날씨', isLocked: false, isEnabled: true, description: '현재 기온과 사업장 주변 날씨' },
|
|
{ id: 'local', type: 'local', name: '지역 정보', isLocked: false, isEnabled: true, description: '주변 관광지 및 맛집 추천' },
|
|
{ id: 'faq', type: 'faq', name: '자주 묻는 질문', isLocked: false, isEnabled: true, description: '고객들이 자주 묻는 질문과 답변' },
|
|
],
|
|
templates: [
|
|
{
|
|
id: 'stay-o2o-editorial',
|
|
industryId: 'stay',
|
|
name: 'O2O 에디토리얼',
|
|
tone: 'photo',
|
|
toneLabel: '차분한 모던',
|
|
description: '절제된 타이포그래피와 여백, 차분한 슬레이트 톤으로 신뢰감과 감성을 함께 전합니다.',
|
|
colors: {
|
|
primary: '#18181b',
|
|
secondary: '#52525b',
|
|
bg: '#ffffff',
|
|
card: '#fafafa',
|
|
text: '#09090b',
|
|
accent: '#2563eb',
|
|
},
|
|
fontStyle: 'Modern Editorial',
|
|
},
|
|
{
|
|
id: 'stay-quiet-margin',
|
|
industryId: 'stay',
|
|
name: '조용한 여백',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '넓은 여백과 감성적인 사진 배치로 여유로운 휴식 분위기를 전달합니다.',
|
|
colors: {
|
|
primary: '#1e293b',
|
|
secondary: '#64748b',
|
|
bg: '#ffffff',
|
|
card: '#f8fafc',
|
|
text: '#0f172a',
|
|
accent: '#0284c7',
|
|
},
|
|
fontStyle: 'Clean Minimalist',
|
|
},
|
|
{
|
|
id: 'stay-warm-wood',
|
|
industryId: 'stay',
|
|
name: '따뜻한 목조',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '아늑하고 내추럴한 톤으로 자연 친화적인 공간의 따스함을 극대화합니다.',
|
|
colors: {
|
|
primary: '#43302b',
|
|
secondary: '#786055',
|
|
bg: '#faf8f5',
|
|
card: '#f2ece4',
|
|
text: '#29201d',
|
|
accent: '#c27847',
|
|
},
|
|
fontStyle: 'Warm Natural',
|
|
},
|
|
{
|
|
id: 'stay-clear-info',
|
|
industryId: 'stay',
|
|
name: '또렷한 정보',
|
|
tone: 'info',
|
|
toneLabel: '정보 중심',
|
|
description: '객실 옵션, 구비 시설, 체크인 규정을 한눈에 파악할 수 있는 실용적인 구조입니다.',
|
|
colors: {
|
|
primary: '#0f172a',
|
|
secondary: '#475569',
|
|
bg: '#ffffff',
|
|
card: '#f1f5f9',
|
|
text: '#020617',
|
|
accent: '#2563eb',
|
|
},
|
|
fontStyle: 'Crisp Modern',
|
|
},
|
|
{
|
|
id: 'stay-booking-focus',
|
|
industryId: 'stay',
|
|
name: '예약 중심',
|
|
tone: 'book',
|
|
toneLabel: '예약·신청 강조',
|
|
description: '객실별 예약 버튼과 실시간 문의 CTA를 전면에 배치하여 전환율을 높입니다.',
|
|
colors: {
|
|
primary: '#18181b',
|
|
secondary: '#52525b',
|
|
bg: '#ffffff',
|
|
card: '#fafafa',
|
|
text: '#09090b',
|
|
accent: '#059669',
|
|
},
|
|
fontStyle: 'Conversion Driven',
|
|
},
|
|
],
|
|
},
|
|
|
|
cafe: {
|
|
id: 'cafe',
|
|
name: '카페',
|
|
subName: '대형카페 · 로스터리',
|
|
description: '스페셜티 로스터리, 베이커리 카페, 오션·마운틴 뷰 대형 카페',
|
|
channels: [
|
|
{ id: 'naver_place', name: '네이버 플레이스', checked: true },
|
|
{ id: 'instagram', name: '인스타그램', checked: true },
|
|
{ id: 'kakao_map', name: '카카오맵', checked: true },
|
|
],
|
|
sections: [
|
|
{ id: 'hero', type: 'hero', name: '히어로', isLocked: true, isEnabled: true, description: '시그니처 비주얼과 카페 슬로건' },
|
|
{ id: 'intro', type: 'intro', name: '소개', isLocked: false, isEnabled: true, description: '로스팅 철학과 공간 스토리' },
|
|
{ id: 'menu', type: 'menu', name: '시그니처 메뉴', isLocked: false, isEnabled: true, description: '대표 원두, 음료, 시그니처 디저트' },
|
|
{ id: 'info', type: 'info', name: '기본 정보', isLocked: true, isEnabled: true, description: '영업시간, 좌석수, 편의시설 정보' },
|
|
{ id: 'space', type: 'space', name: '공간 · 좌석 안내', isLocked: false, isEnabled: true, description: '1/2층 공간 구성 및 야외 테라스석' },
|
|
{ id: 'photos', type: 'photos', name: '사진 갤러리', isLocked: false, isEnabled: true, description: '인테리어, 커피, 베이커리 비주얼' },
|
|
{ id: 'inquiry', type: 'inquiry', name: '대관 및 단체 문의', isLocked: false, isEnabled: true, description: '촬영 대관 및 단체 예약 접수' },
|
|
{ id: 'map', type: 'map', name: '오시는 길', isLocked: true, isEnabled: true, description: '드라이브 코스 및 주차 진입로 안내' },
|
|
{ id: 'weather', type: 'weather', name: '날씨', isLocked: false, isEnabled: true, description: '현재 기온과 매장 주변 날씨' },
|
|
{ id: 'local', type: 'local', name: '주변 나들이', isLocked: false, isEnabled: true, description: '양평 드라이브 코스 및 명소' },
|
|
{ id: 'faq', type: 'faq', name: '자주 묻는 질문', isLocked: false, isEnabled: true, description: '반려견 동반, 주차, 케어키즈존 안내' },
|
|
],
|
|
templates: [
|
|
{
|
|
id: 'cafe-modern-espresso',
|
|
industryId: 'cafe',
|
|
name: '모던 에스프레소',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '다크 차콜 톤과 고해상도 커피 샷으로 프로페셔널한 스페셜티 이미지를 완성합니다.',
|
|
colors: {
|
|
primary: '#1c1917',
|
|
secondary: '#78716c',
|
|
bg: '#ffffff',
|
|
card: '#fafaf9',
|
|
text: '#0c0a09',
|
|
accent: '#b45309',
|
|
},
|
|
fontStyle: 'Sleek Roast',
|
|
},
|
|
{
|
|
id: 'cafe-sun-terrace',
|
|
industryId: 'cafe',
|
|
name: '햇살과 테라스',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '산뜻한 화이트와 그린 포인트로 자연 채광 가득한 힐링 테라스 분위기를 연출합니다.',
|
|
colors: {
|
|
primary: '#14532d',
|
|
secondary: '#4b5563',
|
|
bg: '#ffffff',
|
|
card: '#f0fdf4',
|
|
text: '#052e16',
|
|
accent: '#16a34a',
|
|
},
|
|
fontStyle: 'Garden Terrace',
|
|
},
|
|
{
|
|
id: 'cafe-roastery-story',
|
|
industryId: 'cafe',
|
|
name: '감성 로스터리',
|
|
tone: 'info',
|
|
toneLabel: '정보 중심',
|
|
description: '원두 컵노트, 로스팅 프로파일, 브루잉 가이드를 체계적으로 정리해 전달합니다.',
|
|
colors: {
|
|
primary: '#332924',
|
|
secondary: '#6c584c',
|
|
bg: '#fcfaf8',
|
|
card: '#f4ede6',
|
|
text: '#201815',
|
|
accent: '#8c5e3d',
|
|
},
|
|
fontStyle: 'Artisan Roast',
|
|
},
|
|
{
|
|
id: 'cafe-quick-order',
|
|
industryId: 'cafe',
|
|
name: '퀵 오더 & 예약',
|
|
tone: 'book',
|
|
toneLabel: '예약·신청 강조',
|
|
description: '시그니처 원두 패키지 스마트스토어 링크 및 단체 대관 접수를 최우선으로 노출합니다.',
|
|
colors: {
|
|
primary: '#0f172a',
|
|
secondary: '#475569',
|
|
bg: '#ffffff',
|
|
card: '#f8fafc',
|
|
text: '#020617',
|
|
accent: '#ea580c',
|
|
},
|
|
fontStyle: 'Dynamic Commerce',
|
|
},
|
|
],
|
|
},
|
|
|
|
restaurant: {
|
|
id: 'restaurant',
|
|
name: '음식점',
|
|
subName: '식당 · 주점',
|
|
description: '한식 다이닝, 일식 오마카세, 이탈리안 비스트로, 고기집',
|
|
channels: [
|
|
{ id: 'naver_place', name: '네이버 플레이스', checked: true },
|
|
{ id: 'catchtable', name: '캐치테이블', checked: true },
|
|
{ id: 'instagram', name: '인스타그램', checked: true },
|
|
],
|
|
sections: [
|
|
{ id: 'hero', type: 'hero', name: '히어로', isLocked: true, isEnabled: true, description: '대표 요리 비주얼 및 다이닝 소개' },
|
|
{ id: 'intro', type: 'intro', name: '소개', isLocked: false, isEnabled: true, description: '셰프의 조리 철학과 식재료 원산지 이야기' },
|
|
{ id: 'menu', type: 'menu', name: '코스 및 메뉴', isLocked: false, isEnabled: true, description: '점심/저녁 코스, 단품 요리, 주류 페어링' },
|
|
{ id: 'info', type: 'info', name: '기본 정보', isLocked: true, isEnabled: true, description: '영업시간, 휴무일, 주차, 예약 안내' },
|
|
{ id: 'booking', type: 'booking', name: '예약 · 포장 안내', isLocked: false, isEnabled: true, description: '캐치테이블 실시간 룸 예약 및 포장' },
|
|
{ id: 'photos', type: 'photos', name: '사진 갤러리', isLocked: false, isEnabled: true, description: '플레이팅, 룸 인테리어, 정갈한 상차림' },
|
|
{ id: 'inquiry', type: 'inquiry', name: '단체 행사 문의', isLocked: false, isEnabled: true, description: '상견례, 돌잔치, 기업 대관 문의' },
|
|
{ id: 'map', type: 'map', name: '오시는 길', isLocked: true, isEnabled: true, description: '지하철역 출구 및 발렛부스 위치' },
|
|
{ id: 'weather', type: 'weather', name: '날씨', isLocked: false, isEnabled: true, description: '현재 기온과 매장 주변 날씨' },
|
|
{ id: 'local', type: 'local', name: '주변 안내', isLocked: false, isEnabled: true, description: '청담 명품거리 및 갤러리 안내' },
|
|
{ id: 'faq', type: 'faq', name: '자주 묻는 질문', isLocked: false, isEnabled: true, description: '콜키지 정책, 알러지 케어, 주차 안내' },
|
|
],
|
|
templates: [
|
|
{
|
|
id: 'rest-neat-table',
|
|
industryId: 'restaurant',
|
|
name: '정갈한 한상',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '단아한 여백과 요리 고유의 색감을 살려 프리미엄 다이닝의 격을 높입니다.',
|
|
colors: {
|
|
primary: '#1c1917',
|
|
secondary: '#57534e',
|
|
bg: '#ffffff',
|
|
card: '#fafaf9',
|
|
text: '#0c0a09',
|
|
accent: '#b45309',
|
|
},
|
|
fontStyle: 'Sophisticated Table',
|
|
},
|
|
{
|
|
id: 'rest-modern-dining',
|
|
industryId: 'restaurant',
|
|
name: '모던 다이닝',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '세련된 다크 모던 톤으로 주류 페어링과 비스트로의 트렌디함을 강조합니다.',
|
|
colors: {
|
|
primary: '#09090b',
|
|
secondary: '#52525b',
|
|
bg: '#ffffff',
|
|
card: '#f4f4f5',
|
|
text: '#09090b',
|
|
accent: '#e11d48',
|
|
},
|
|
fontStyle: 'Chic Bistro',
|
|
},
|
|
{
|
|
id: 'rest-taste-origin',
|
|
industryId: 'restaurant',
|
|
name: '맛과 원산지',
|
|
tone: 'info',
|
|
toneLabel: '정보 중심',
|
|
description: '계절 코스 구성, 식재료 산지 지도, 조리 과정을 상세히 기록하여 신뢰도를 높입니다.',
|
|
colors: {
|
|
primary: '#1e293b',
|
|
secondary: '#475569',
|
|
bg: '#ffffff',
|
|
card: '#f1f5f9',
|
|
text: '#0f172a',
|
|
accent: '#0d9488',
|
|
},
|
|
fontStyle: 'Artisan Story',
|
|
},
|
|
{
|
|
id: 'rest-booking-type',
|
|
industryId: 'restaurant',
|
|
name: '테이블 예약형',
|
|
tone: 'book',
|
|
toneLabel: '예약·신청 강조',
|
|
description: '시간대별 룸 예약 위젯과 잔여석 상태를 직관적으로 노출합니다.',
|
|
colors: {
|
|
primary: '#0f172a',
|
|
secondary: '#334155',
|
|
bg: '#ffffff',
|
|
card: '#f8fafc',
|
|
text: '#020617',
|
|
accent: '#2563eb',
|
|
},
|
|
fontStyle: 'Direct Reserve',
|
|
},
|
|
],
|
|
},
|
|
|
|
tour: {
|
|
id: 'tour',
|
|
name: '관광 · 체험',
|
|
subName: '체험공간 · 전시',
|
|
description: '원데이 클래스, 도자기·목공 공방, 사설 갤러리, 팜스테이',
|
|
channels: [
|
|
{ id: 'naver_place', name: '네이버 플레이스', checked: true },
|
|
{ id: 'frip', name: '프립 (체험 플랫폼)', checked: true },
|
|
{ id: 'instagram', name: '인스타그램', checked: true },
|
|
],
|
|
sections: [
|
|
{ id: 'hero', type: 'hero', name: '히어로', isLocked: true, isEnabled: true, description: '대표 프로그램 비주얼 및 감성 슬로건' },
|
|
{ id: 'intro', type: 'intro', name: '소개', isLocked: false, isEnabled: true, description: '스튜디오 역사와 작가진 소개' },
|
|
{ id: 'programs', type: 'programs', name: '체험 프로그램', isLocked: false, isEnabled: true, description: '물레 체험, 핸드빌딩, 키즈 클래스' },
|
|
{ id: 'info', type: 'info', name: '기본 정보', isLocked: true, isEnabled: true, description: '운영시간, 입장료, 주차, 예약 방식' },
|
|
{ id: 'exhibition', type: 'exhibition', name: '관람 및 갤러리 안내', isLocked: false, isEnabled: true, description: '전시 일정 및 도자기 아트숍' },
|
|
{ id: 'photos', type: 'photos', name: '사진 갤러리', isLocked: false, isEnabled: true, description: '체험 모습, 완성 작품, 공방 풍경' },
|
|
{ id: 'inquiry', type: 'inquiry', name: '단체 및 출강 문의', isLocked: false, isEnabled: true, description: '기업 워크숍, 학교 단체 체험 접수' },
|
|
{ id: 'map', type: 'map', name: '오시는 길', isLocked: true, isEnabled: true, description: '이천 예스파크 진입로 및 주차장' },
|
|
{ id: 'weather', type: 'weather', name: '날씨', isLocked: false, isEnabled: true, description: '현재 기온과 체험장 주변 날씨' },
|
|
{ id: 'local', type: 'local', name: '주변 관광 코스', isLocked: false, isEnabled: true, description: '도예마을 맛집 및 주변 힐링 스팟' },
|
|
{ id: 'faq', type: 'faq', name: '자주 묻는 질문', isLocked: false, isEnabled: true, description: '작품 수령 기간, 복장, 환불 규정' },
|
|
],
|
|
templates: [
|
|
{
|
|
id: 'tour-visual-tour',
|
|
industryId: 'tour',
|
|
name: '비주얼 투어',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '체험 현장의 생생한 사진과 감각적인 그리드로 방문 욕구를 자극합니다.',
|
|
colors: {
|
|
primary: '#0f172a',
|
|
secondary: '#475569',
|
|
bg: '#ffffff',
|
|
card: '#f8fafc',
|
|
text: '#020617',
|
|
accent: '#0284c7',
|
|
},
|
|
fontStyle: 'Visual Journey',
|
|
},
|
|
{
|
|
id: 'tour-gallery-archive',
|
|
industryId: 'tour',
|
|
name: '갤러리 아카이브',
|
|
tone: 'photo',
|
|
toneLabel: '사진 중심',
|
|
description: '단아한 미술관 도록 스타일로 공예품과 전시 작품의 미학을 돋보이게 합니다.',
|
|
colors: {
|
|
primary: '#27272a',
|
|
secondary: '#71717a',
|
|
bg: '#fafafa',
|
|
card: '#f4f4f5',
|
|
text: '#18181b',
|
|
accent: '#d97706',
|
|
},
|
|
fontStyle: 'Art Museum',
|
|
},
|
|
{
|
|
id: 'tour-detailed-guide',
|
|
industryId: 'tour',
|
|
name: '상세 안내형',
|
|
tone: 'info',
|
|
toneLabel: '정보 중심',
|
|
description: '연령대별 추천 코스, 단계별 커리큘럼, 준비물 안내를 명확하게 정리합니다.',
|
|
colors: {
|
|
primary: '#1e293b',
|
|
secondary: '#64748b',
|
|
bg: '#ffffff',
|
|
card: '#f1f5f9',
|
|
text: '#0f172a',
|
|
accent: '#4f46e5',
|
|
},
|
|
fontStyle: 'Curriculum Guide',
|
|
},
|
|
{
|
|
id: 'tour-ticket-booking',
|
|
industryId: 'tour',
|
|
name: '티켓 예매형',
|
|
tone: 'book',
|
|
toneLabel: '예약·신청 강조',
|
|
description: '클래스 날짜 선택과 즉시 티켓 결제 연동에 최적화된 고전환 레이아웃입니다.',
|
|
colors: {
|
|
primary: '#0f172a',
|
|
secondary: '#334155',
|
|
bg: '#ffffff',
|
|
card: '#f8fafc',
|
|
text: '#020617',
|
|
accent: '#059669',
|
|
},
|
|
fontStyle: 'Instant Booking',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
/**
|
|
* 업종을 아직 모를 때 떨어질 자리.
|
|
*
|
|
* ★ 스토어의 초기 업종이자, 서버 category 를 못 알아봤을 때의 기본값이다(placeAdapter).
|
|
* 두 곳이 다른 값을 쓰면 "빌더가 처음 보여준 화면"과 "사업장을 열었을 때 화면"의
|
|
* 섹션·문구가 달라진다 — 사장님 눈에는 값이 바뀐 것으로 보인다.
|
|
*/
|
|
export const FALLBACK_INDUSTRY: IndustryType = 'stay';
|