diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4653f5e..760597b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ concurrency: cancel-in-progress: true env: - PNPM_VERSION: 10 + # pnpm 버전은 package.json 의 packageManager 필드 참고 (action-setup 이 읽음) NODE_VERSION: 20 jobs: @@ -36,9 +36,8 @@ jobs: steps: - uses: actions/checkout@v4 + # pnpm 버전은 package.json 의 packageManager 필드에서 자동 추출 - uses: pnpm/action-setup@v4 - with: - version: ${{ env.PNPM_VERSION }} - uses: actions/setup-node@v4 with: @@ -68,9 +67,8 @@ jobs: steps: - uses: actions/checkout@v4 + # pnpm 버전은 package.json 의 packageManager 필드에서 자동 추출 - uses: pnpm/action-setup@v4 - with: - version: ${{ env.PNPM_VERSION }} - uses: actions/setup-node@v4 with: diff --git a/.gitignore b/.gitignore index 288d1ec..62b7138 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,12 @@ apps/web/playwright/.cache/ .cache/ tmp/ temp/ + +# 메뉴판 OCR 원본 (대용량 로컬 참조 자료) +docs/메뉴판 사진/ +docs/메뉴판 사진 정문/ +docs/기술과 경영_메뉴판 정리.xlsx + +# Python bytecode +__pycache__/ +*.pyc diff --git a/apps/api/prisma/migrations/20260511000000_add_free_major_college/migration.sql b/apps/api/prisma/migrations/20260511000000_add_free_major_college/migration.sql new file mode 100644 index 0000000..8564f22 --- /dev/null +++ b/apps/api/prisma/migrations/20260511000000_add_free_major_college/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "College" ADD VALUE 'FREE_MAJOR'; diff --git a/apps/api/prisma/migrations/20260511112007_add_restaurant_cover_image/migration.sql b/apps/api/prisma/migrations/20260511112007_add_restaurant_cover_image/migration.sql new file mode 100644 index 0000000..cf2b483 --- /dev/null +++ b/apps/api/prisma/migrations/20260511112007_add_restaurant_cover_image/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Restaurant" ADD COLUMN "coverImageUrl" TEXT; diff --git a/apps/api/prisma/migrations/20260512020741_add_menu_category_and_price_options/migration.sql b/apps/api/prisma/migrations/20260512020741_add_menu_category_and_price_options/migration.sql new file mode 100644 index 0000000..41a53fe --- /dev/null +++ b/apps/api/prisma/migrations/20260512020741_add_menu_category_and_price_options/migration.sql @@ -0,0 +1,6 @@ +-- AlterTable +ALTER TABLE "Menu" ADD COLUMN "category" TEXT, +ADD COLUMN "priceOptions" JSONB; + +-- CreateIndex +CREATE INDEX "Menu_restaurantId_category_idx" ON "Menu"("restaurantId", "category"); diff --git a/apps/api/prisma/migrations/20260512023542_add_external_menu_url/migration.sql b/apps/api/prisma/migrations/20260512023542_add_external_menu_url/migration.sql new file mode 100644 index 0000000..9a04ea5 --- /dev/null +++ b/apps/api/prisma/migrations/20260512023542_add_external_menu_url/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Restaurant" ADD COLUMN "externalMenuUrl" TEXT; diff --git a/apps/api/prisma/schema.prisma b/apps/api/prisma/schema.prisma index 6d48c20..4f27117 100644 --- a/apps/api/prisma/schema.prisma +++ b/apps/api/prisma/schema.prisma @@ -41,6 +41,7 @@ enum College { ELECTRONICS_INFO HUMANITIES_SOCIAL POLICY_LAW + FREE_MAJOR } enum NoticeCategory { @@ -59,6 +60,8 @@ model Restaurant { phone String? businessHours Json isPartner Boolean @default(false) + coverImageUrl String? + externalMenuUrl String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt menus Menu[] @@ -85,20 +88,25 @@ model RestaurantPartnership { @@index([college]) } +/// 사이즈/옵션별 가격 표현 시 Menu.priceOptions 에 [{"label":"소","price":30000},...] 저장. +/// Menu.category 는 메뉴 카테고리 라벨 (예: "커피", "찌개류"). 없으면 "기타" 그룹으로 처리. model Menu { - id String @id @default(cuid()) - restaurantId String - name String - price Int - imageUrl String? - isSignature Boolean @default(false) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - restaurant Restaurant @relation(fields: [restaurantId], references: [id], onDelete: Cascade) - reports Report[] + id String @id @default(cuid()) + restaurantId String + name String + price Int + priceOptions Json? + category String? + imageUrl String? + isSignature Boolean @default(false) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + restaurant Restaurant @relation(fields: [restaurantId], references: [id], onDelete: Cascade) + reports Report[] @@index([restaurantId]) @@index([restaurantId, isSignature]) + @@index([restaurantId, category]) } model Category { diff --git a/apps/api/src/common/utils/business-hours.util.ts b/apps/api/src/common/utils/business-hours.util.ts index bc4544e..08956f9 100644 --- a/apps/api/src/common/utils/business-hours.util.ts +++ b/apps/api/src/common/utils/business-hours.util.ts @@ -4,26 +4,115 @@ interface DayHours { open?: string; close?: string; closed?: boolean; + breakStart?: string; + breakEnd?: string; } type BusinessHoursMap = Partial>; const DAY_KEYS: DayKey[] = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; +function kstNow(): Date { + // UTC 메서드 호출 시 KST 값이 나오도록 +9h 시프트 + return new Date(Date.now() + 9 * 60 * 60 * 1000); +} + +function timeStr(d: Date): string { + const hh = String(d.getUTCHours()).padStart(2, '0'); + const mm = String(d.getUTCMinutes()).padStart(2, '0'); + return `${hh}:${mm}`; +} + +/** + * 영업 중 여부 판정. + * + * 지원하는 형태: + * - 일반: open ≤ now ≤ close + * - 자정 넘김: close < open (예: 14:30 ~ 02:30) — 자정 이후 시간은 0X 시로 표기 + * · 어제의 close 가 오늘 새벽이면 그 구간도 영업중으로 인정 + * - 브레이크: breakStart ≤ now < breakEnd 구간은 영업 중에 있어도 false + */ export function isRestaurantOpen(businessHours: unknown): boolean { if (!businessHours || typeof businessHours !== 'object') return false; - const hours = businessHours as BusinessHoursMap; - // KST = UTC+9 - const now = new Date(Date.now() + 9 * 60 * 60 * 1000); - const dayKey = DAY_KEYS[now.getUTCDay()]; - const hh = String(now.getUTCHours()).padStart(2, '0'); - const mm = String(now.getUTCMinutes()).padStart(2, '0'); - const currentTime = `${hh}:${mm}`; + const now = kstNow(); + const todayIdx = now.getUTCDay(); + const yesterdayIdx = (todayIdx + 6) % 7; + const t = timeStr(now); + + // 어제 영업이 자정 넘어 오늘 새벽까지 이어진 경우 + const yesterday = hours[DAY_KEYS[yesterdayIdx]]; + if ( + yesterday && + !yesterday.closed && + yesterday.open && + yesterday.close && + yesterday.close < yesterday.open && // 자정 넘김 + t <= yesterday.close + ) { + return true; + } - const today = hours[dayKey]; + // 오늘 영업 + const today = hours[DAY_KEYS[todayIdx]]; if (!today || today.closed || !today.open || !today.close) return false; - return currentTime >= today.open && currentTime <= today.close; + // 오늘 영업 시간 내인지 (일반 vs 자정 넘김 분기) + const inHours = + today.close < today.open + ? t >= today.open // 오늘 open ~ 23:59 까지 영업중 (자정 이후는 위 yesterday 분기로 처리) + : t >= today.open && t <= today.close; + + if (!inHours) return false; + + // 브레이크 중이면 영업 중이 아님 + if (today.breakStart && today.breakEnd) { + if (t >= today.breakStart && t < today.breakEnd) return false; + } + + return true; +} + +/** + * 다음 영업 시작 시각을 ISO datetime (UTC) 으로 반환. + * 마감 상태 / 휴무일 / 브레이크 중일 때의 "다음 열림 시각" 을 계산. + * 7일 안에 영업 시작이 없으면 null. + */ +export function getNextOpenAt(businessHours: unknown): string | null { + if (!businessHours || typeof businessHours !== 'object') return null; + const hours = businessHours as BusinessHoursMap; + + const nowKst = kstNow(); + const nowT = timeStr(nowKst); + + for (let dayOffset = 0; dayOffset < 7; dayOffset++) { + const candidate = new Date(nowKst); + candidate.setUTCDate(candidate.getUTCDate() + dayOffset); + + const dayKey = DAY_KEYS[candidate.getUTCDay()]; + const day = hours[dayKey]; + if (!day || day.closed || !day.open) continue; + + // 후보 시각 목록: open 시작 / 브레이크 종료 + const candidateTimes: string[] = [day.open]; + if (day.breakStart && day.breakEnd) candidateTimes.push(day.breakEnd); + + for (const targetT of candidateTimes.sort()) { + // 오늘이면 미래 시각만 허용 + if (dayOffset === 0 && targetT <= nowT) continue; + + const [hh, mm] = targetT.split(':').map(Number); + if (Number.isNaN(hh) || Number.isNaN(mm)) continue; + + const next = new Date(candidate); + next.setUTCHours(hh, mm, 0, 0); + + // KST 표현을 실제 UTC 로 변환 (-9h) + const actualUtc = new Date(next.getTime() - 9 * 60 * 60 * 1000); + return actualUtc.toISOString(); + } + } + + return null; } diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index 91991ef..d9b9042 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -8,8 +8,12 @@ import { HttpExceptionFilter } from './common/filters/http-exception.filter'; async function bootstrap() { const app = await NestFactory.create(AppModule); + // CORS_ORIGIN 은 콤마로 여러 origin 지원 (예: "http://localhost:3000,http://192.168.0.10:3000") app.enableCors({ - origin: process.env.CORS_ORIGIN || 'http://localhost:3000', + origin: (process.env.CORS_ORIGIN ?? 'http://localhost:3000') + .split(',') + .map((s) => s.trim()) + .filter(Boolean), credentials: true, }); diff --git a/apps/api/src/restaurants/dto/create-restaurant.dto.ts b/apps/api/src/restaurants/dto/create-restaurant.dto.ts index 2e5759c..f61aa0b 100644 --- a/apps/api/src/restaurants/dto/create-restaurant.dto.ts +++ b/apps/api/src/restaurants/dto/create-restaurant.dto.ts @@ -70,6 +70,24 @@ export class CreateRestaurantDto { @IsBoolean() isPartner?: boolean; + @ApiPropertyOptional({ + example: 'https://cdn.example.com/cover/abc.jpg', + description: '식당 대표 사진 URL (S3 업로드 결과)', + }) + @IsOptional() + @IsString() + @MaxLength(500) + coverImageUrl?: string; + + @ApiPropertyOptional({ + example: 'https://bondosirak.com/menu', + description: '체인점 등 공식 메뉴 페이지 URL', + }) + @IsOptional() + @IsString() + @MaxLength(500) + externalMenuUrl?: string; + @ApiPropertyOptional({ type: [PartnershipInputDto], description: '제휴 단과대학 + Instagram URL 목록 (식당당 단과대학별 1개)', diff --git a/apps/api/src/restaurants/restaurants.service.ts b/apps/api/src/restaurants/restaurants.service.ts index 6ab027d..439bba9 100644 --- a/apps/api/src/restaurants/restaurants.service.ts +++ b/apps/api/src/restaurants/restaurants.service.ts @@ -1,7 +1,10 @@ import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common'; import { Prisma } from '@prisma/client'; -import { isRestaurantOpen } from '../common/utils/business-hours.util'; +import { + getNextOpenAt, + isRestaurantOpen, +} from '../common/utils/business-hours.util'; import { PrismaService } from '../prisma/prisma.service'; import { CreateRestaurantDto, PartnershipInputDto } from './dto/create-restaurant.dto'; @@ -25,17 +28,26 @@ const RESTAURANT_LIST_SELECT = { phone: true, businessHours: true, isPartner: true, + coverImageUrl: true, + externalMenuUrl: true, categories: { select: { category: { select: { id: true, name: true, icon: true } }, }, }, menus: { - select: { id: true, name: true, price: true, imageUrl: true, isSignature: true }, - orderBy: [ - { isSignature: 'desc' as const }, - { price: 'asc' as const }, - ], + select: { + id: true, + name: true, + price: true, + priceOptions: true, + category: true, + imageUrl: true, + isSignature: true, + }, + // 입력 순서(첫 메뉴 = 대표) 보존. Python import 시 clock_timestamp() 로 row 마다 + // createdAt 미세 차이를 주므로 정렬 가능. + orderBy: { createdAt: 'asc' as const }, take: 1, }, ...PARTNERSHIPS_SELECT, @@ -51,6 +63,8 @@ const RESTAURANT_DETAIL_SELECT = { phone: true, businessHours: true, isPartner: true, + coverImageUrl: true, + externalMenuUrl: true, createdAt: true, updatedAt: true, categories: { @@ -63,13 +77,13 @@ const RESTAURANT_DETAIL_SELECT = { id: true, name: true, price: true, + priceOptions: true, + category: true, imageUrl: true, isSignature: true, }, - orderBy: [ - { isSignature: 'desc' as const }, - { price: 'asc' as const }, - ], + // 입력 순서 보존 — MenuList 카테고리 탭과 일관 + orderBy: { createdAt: 'asc' as const }, }, ...PARTNERSHIPS_SELECT, } satisfies Prisma.RestaurantSelect; @@ -98,21 +112,25 @@ export class RestaurantsService { orderBy: { name: 'asc' }, }); - const result = rows.map((r) => ({ - id: r.id, - name: r.name, - zone: r.zone, - latitude: r.latitude, - longitude: r.longitude, - address: r.address, - phone: r.phone, - businessHours: r.businessHours, - isPartner: r.isPartner, - partnerships: r.partnerships, - isOpen: isRestaurantOpen(r.businessHours), - categories: r.categories.map((rc) => rc.category), - featuredMenu: r.menus[0] ?? null, - })); + const result = rows.map((r) => { + const open = isRestaurantOpen(r.businessHours); + return { + id: r.id, + name: r.name, + zone: r.zone, + latitude: r.latitude, + longitude: r.longitude, + address: r.address, + phone: r.phone, + businessHours: r.businessHours, + isPartner: r.isPartner, + partnerships: r.partnerships, + isOpen: open, + nextOpenAt: open ? null : getNextOpenAt(r.businessHours), + categories: r.categories.map((rc) => rc.category), + featuredMenu: r.menus[0] ?? null, + }; + }); if (query.isOpen !== undefined) { return result.filter((r) => r.isOpen === query.isOpen); @@ -131,9 +149,11 @@ export class RestaurantsService { throw new NotFoundException(`식당을 찾을 수 없어요 (id: ${id})`); } + const open = isRestaurantOpen(restaurant.businessHours); return { ...restaurant, - isOpen: isRestaurantOpen(restaurant.businessHours), + isOpen: open, + nextOpenAt: open ? null : getNextOpenAt(restaurant.businessHours), categories: restaurant.categories.map((rc) => rc.category), }; } diff --git a/apps/web/app/admin/restaurants/[id]/page.tsx b/apps/web/app/admin/restaurants/[id]/page.tsx index eef82cd..919cc1d 100644 --- a/apps/web/app/admin/restaurants/[id]/page.tsx +++ b/apps/web/app/admin/restaurants/[id]/page.tsx @@ -45,6 +45,8 @@ export default function EditRestaurantPage() { longitude: values.longitude, businessHours: buildBusinessHours(values), isPartner: values.isPartner, + coverImageUrl: values.coverImageUrl || undefined, + externalMenuUrl: values.externalMenuUrl || undefined, partnerships: values.isPartner ? values.partnerships ?? [] : [], categoryIds: values.categoryIds, }); @@ -123,8 +125,22 @@ export default function EditRestaurantPage() { function buildBusinessHours(values: RestaurantFormValues) { const result: Record = {}; - for (const [day, hours] of Object.entries(values.businessHours)) { - result[day] = hours.closed ? { closed: true } : { open: hours.open, close: hours.close }; + const { note, ...days } = values.businessHours; + for (const [day, hours] of Object.entries(days)) { + if (hours.closed) { + result[day] = { closed: true }; + continue; + } + const dayResult: Record = { + open: hours.open ?? '', + close: hours.close ?? '', + }; + if (hours.breakStart && hours.breakEnd) { + dayResult.breakStart = hours.breakStart; + dayResult.breakEnd = hours.breakEnd; + } + result[day] = dayResult; } + if (note && note.trim()) result.note = note.trim(); return result; } diff --git a/apps/web/app/admin/restaurants/new/page.tsx b/apps/web/app/admin/restaurants/new/page.tsx index 43220e1..400e56a 100644 --- a/apps/web/app/admin/restaurants/new/page.tsx +++ b/apps/web/app/admin/restaurants/new/page.tsx @@ -42,6 +42,8 @@ export default function NewRestaurantPage() { longitude: values.longitude, businessHours: buildBusinessHours(values), isPartner: values.isPartner, + coverImageUrl: values.coverImageUrl || undefined, + externalMenuUrl: values.externalMenuUrl || undefined, partnerships: values.isPartner ? values.partnerships ?? [] : [], categoryIds: values.categoryIds, }); @@ -81,8 +83,22 @@ export default function NewRestaurantPage() { function buildBusinessHours(values: RestaurantFormValues) { const result: Record = {}; - for (const [day, hours] of Object.entries(values.businessHours)) { - result[day] = hours.closed ? { closed: true } : { open: hours.open, close: hours.close }; + const { note, ...days } = values.businessHours; + for (const [day, hours] of Object.entries(days)) { + if (hours.closed) { + result[day] = { closed: true }; + continue; + } + const dayResult: Record = { + open: hours.open ?? '', + close: hours.close ?? '', + }; + if (hours.breakStart && hours.breakEnd) { + dayResult.breakStart = hours.breakStart; + dayResult.breakEnd = hours.breakEnd; + } + result[day] = dayResult; } + if (note && note.trim()) result.note = note.trim(); return result; } diff --git a/apps/web/app/admin/restaurants/page.tsx b/apps/web/app/admin/restaurants/page.tsx index e0c102b..26bb581 100644 --- a/apps/web/app/admin/restaurants/page.tsx +++ b/apps/web/app/admin/restaurants/page.tsx @@ -1,9 +1,9 @@ 'use client'; import type { Zone } from '@pangchelin/types'; -import { Plus, Pencil, Trash2 } from 'lucide-react'; +import { Plus, Pencil, Search, Trash2, X } from 'lucide-react'; import { useRouter } from 'next/navigation'; -import { useState } from 'react'; +import { useMemo, useState } from 'react'; import { useDeleteRestaurant } from '@/hooks/mutations/useRestaurantMutations'; import { useRestaurants } from '@/hooks/queries/useRestaurants'; @@ -20,6 +20,15 @@ export default function AdminRestaurantsPage() { const { data: restaurants, isLoading } = useRestaurants(); const deleteRestaurant = useDeleteRestaurant(); const [deleteTargetId, setDeleteTargetId] = useState(null); + const [query, setQuery] = useState(''); + + // 식당명 부분 일치(대소문자 무관). 100여 개 규모라 클라이언트 필터링 충분. + const filtered = useMemo(() => { + if (!restaurants) return restaurants; + const q = query.trim().toLowerCase(); + if (!q) return restaurants; + return restaurants.filter((r) => r.name.toLowerCase().includes(q)); + }, [restaurants, query]); function handleDeleteConfirm() { if (!deleteTargetId) return; @@ -41,6 +50,33 @@ export default function AdminRestaurantsPage() { + {/* 검색창 — 식당명 부분 일치 */} +
+ + setQuery(e.target.value)} + placeholder="식당 이름으로 검색" + className="flex-1 bg-transparent text-sm text-ink-primary placeholder:text-ink-subtle focus:outline-none" + /> + {query && ( + + )} + {!isLoading && query && ( + + {filtered?.length ?? 0}개 + + )} +
+
@@ -61,15 +97,17 @@ export default function AdminRestaurantsPage() { ))} )) - : restaurants?.length === 0 + : filtered?.length === 0 ? ( ) - : restaurants?.map((r) => ( + : filtered?.map((r) => (
- 등록된 식당이 없어요 + {query + ? `"${query}" 검색 결과가 없어요` + : '등록된 식당이 없어요'}
{r.name} diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index 8329cda..0438392 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -1,6 +1,7 @@ 'use client'; import { PanelLeftOpen, X } from 'lucide-react'; +import { useRouter } from 'next/navigation'; import { useCallback, useMemo, useRef, useState } from 'react'; import { ActiveFilterBar } from '@/components/filters/ActiveFilterBar'; @@ -8,6 +9,7 @@ import { FilterButton } from '@/components/filters/FilterButton'; import { FilterSheet } from '@/components/filters/FilterSheet'; import { BottomSheet } from '@/components/layout/BottomSheet'; import { MobileHeader } from '@/components/layout/MobileHeader'; +import { ClusterPicker } from '@/components/map/ClusterPicker'; import { KakaoMap, type KakaoMapHandle } from '@/components/map/KakaoMap'; import { MapFloatingButtons } from '@/components/map/MapFloatingButtons'; import { RestaurantMarker } from '@/components/map/RestaurantMarker'; @@ -20,16 +22,30 @@ import { MARKER_CLUSTER_THRESHOLD, useMarkerClusterer, } from '@/hooks/useMarkerClusterer'; +import { groupRestaurantsByLocation } from '@/lib/groupRestaurants'; import { useFilterStore } from '@/lib/stores/filterStore'; +import { useMapStore } from '@/lib/stores/mapStore'; import { useSheetStore } from '@/lib/stores/sheetStore'; +interface MapBounds { + minLat: number; + maxLat: number; + minLng: number; + maxLng: number; +} + export default function HomePage() { + const router = useRouter(); const mapRef = useRef(null); const [map, setMap] = useState(null); const [selectedId, setSelectedId] = useState(null); const [sidebarOpen, setSidebarOpen] = useState(true); const [filterOpen, setFilterOpen] = useState(false); const [searchOpen, setSearchOpen] = useState(false); + // 지도 가시 영역 — idle 이벤트로 갱신해서 패닝 중 리렌더 방지 + const [bounds, setBounds] = useState(null); + // 클러스터 클릭 시 그 안의 식당 id 목록 (null = 팝업 닫힘) + const [clusterIds, setClusterIds] = useState(null); const { zones, categoryIds, maxPrice, isOpen: isOpenFilter } = useFilterStore(); const { setSnap } = useSheetStore(); @@ -47,14 +63,52 @@ export default function HomePage() { const { data: restaurants = [], isLoading, isError } = useRestaurants(filters); - // 지도 배경 클릭 시 바텀 시트 내리기 + // 지도 배경 클릭 시 바텀 시트 내리기 + 가시 영역 추적 + 뷰포트 저장/복원 const handleMapReady = useCallback( (mapInstance: kakao.maps.Map) => { setMap(mapInstance); + + // 메뉴 상세 → 뒤로 가기로 돌아왔을 때 직전 뷰포트 복원. + // getState() 로 읽어 useCallback 의존성에서 빼고 1회만 적용. + const saved = useMapStore.getState(); + if (saved.center && saved.level != null) { + mapInstance.setCenter( + new window.kakao.maps.LatLng(saved.center.lat, saved.center.lng), + ); + mapInstance.setLevel(saved.level); + } + window.kakao.maps.event.addListener(mapInstance, 'click', () => { setSnap('peek'); setSelectedId(null); }); + + const updateBoundsAndView = () => { + const b = mapInstance.getBounds(); + const sw = b.getSouthWest(); + const ne = b.getNorthEast(); + setBounds({ + minLat: sw.getLat(), + maxLat: ne.getLat(), + minLng: sw.getLng(), + maxLng: ne.getLng(), + }); + // 다음 페이지 → 뒤로 복귀 시 복원하도록 현재 뷰포트도 저장 + const c = mapInstance.getCenter(); + useMapStore + .getState() + .setView( + { lat: c.getLat(), lng: c.getLng() }, + mapInstance.getLevel(), + ); + }; + // 초기값 1회 + 이후 패닝/줌이 멈출 때마다 갱신 + updateBoundsAndView(); + window.kakao.maps.event.addListener( + mapInstance, + 'idle', + updateBoundsAndView, + ); }, [setSnap], ); @@ -74,30 +128,93 @@ export default function HomePage() { } }, [locate, lat, lng]); - // 선택된 식당을 리스트 맨 앞으로 - const orderedRestaurants = useMemo( - () => - selectedId - ? [ - ...restaurants.filter((r) => r.id === selectedId), - ...restaurants.filter((r) => r.id !== selectedId), - ] - : restaurants, - [restaurants, selectedId], + // 검색 결과 선택 시: 지도 이동 + 줌인 + 마커 선택 + 바텀시트 half 로 펼침. + // panTo + setLevel 을 동시에 호출하면 두 애니메이션이 충돌해 종착점이 흔들림. + // setCenter(즉시 중심 이동) 한 뒤 setLevel(애니메이션 줌인) 으로 분리하면 안정적. + const handleSearchSelect = useCallback( + (restaurant: { id: string; latitude: number; longitude: number }) => { + const m = mapRef.current?.map; + if (m) { + const target = new window.kakao.maps.LatLng( + restaurant.latitude, + restaurant.longitude, + ); + m.setCenter(target); + // level 1 = 클러스터링 해제 (minLevel: 2). 개별 마커 확실히 노출. + if (m.getLevel() > 1) m.setLevel(1, { animate: true }); + // setLevel 애니메이션 도중 사용자가 바로 카드를 탭해 화면을 떠나면 + // idle 이벤트가 못 따라잡으므로 store 에도 즉시 저장. + useMapStore + .getState() + .setView( + { lat: restaurant.latitude, lng: restaurant.longitude }, + 1, + ); + } + setSelectedId(restaurant.id); + setSnap('half'); + }, + [setSnap], + ); + + // 지도 가시 영역 내 식당만 (bounds 가 없으면 fallback 으로 전체) + const visibleRestaurants = useMemo(() => { + if (!bounds) return restaurants; + return restaurants.filter( + (r) => + r.latitude >= bounds.minLat && + r.latitude <= bounds.maxLat && + r.longitude >= bounds.minLng && + r.longitude <= bounds.maxLng, + ); + }, [restaurants, bounds]); + + // 선택된 식당이 가시 영역 밖이어도 맨 앞에 노출 (사용자가 직접 클릭한 의도 존중) + const orderedRestaurants = useMemo(() => { + if (!selectedId) return visibleRestaurants; + const selected = restaurants.find((r) => r.id === selectedId); + const rest = visibleRestaurants.filter((r) => r.id !== selectedId); + return selected ? [selected, ...rest] : rest; + }, [visibleRestaurants, restaurants, selectedId]); + + // 같은 건물(좌표) 식당은 한 마커로 묶기. count===1 은 단일, 2+ 는 건물 마커. + const restaurantGroups = useMemo( + () => groupRestaurantsByLocation(restaurants), + [restaurants], ); // 데이터가 적을 땐 CustomOverlay(개성 있는 핀) 만, 임계치 넘으면 클러스터러로 전환 - const useClusterer = restaurants.length >= MARKER_CLUSTER_THRESHOLD; + const useClusterer = restaurantGroups.length >= MARKER_CLUSTER_THRESHOLD; const clusterMarkers = useMemo( () => - restaurants.map((r) => ({ id: r.id, lat: r.latitude, lng: r.longitude })), - [restaurants], + restaurantGroups.map((g) => ({ + id: g.restaurants[0].id, + lat: g.lat, + lng: g.lng, + isOpen: g.restaurants.some((r) => r.isOpen), + isPartner: g.restaurants.some((r) => r.isPartner), + count: g.restaurants.length, + restaurantIds: g.restaurants.map((r) => r.id), + })), + [restaurantGroups], ); useMarkerClusterer(map, clusterMarkers, { enabled: useClusterer, + selectedId, onMarkerClick: handleMarkerClick, + onClusterClick: (ids) => setClusterIds(ids), }); + const clusterRestaurants = useMemo( + () => + clusterIds + ? clusterIds + .map((id) => restaurants.find((r) => r.id === id)) + .filter((r): r is (typeof restaurants)[number] => Boolean(r)) + : [], + [clusterIds, restaurants], + ); + return (
@@ -112,18 +229,32 @@ export default function HomePage() { {map && !useClusterer && - restaurants.map((r) => ( - handleMarkerClick(r.id)} - /> - ))} + restaurantGroups.map((g) => { + const first = g.restaurants[0]; + const isAnyOpen = g.restaurants.some((r) => r.isOpen); + const isAnyPartner = g.restaurants.some((r) => r.isPartner); + const isAnySelected = g.restaurants.some( + (r) => r.id === selectedId, + ); + return ( + { + if (g.restaurants.length === 1) { + handleMarkerClick(first.id); + } else { + setClusterIds(g.restaurants.map((r) => r.id)); + } + }} + /> + ); + })} {/* FAB: 필터 / 현재 위치 / 검색 — 우측 하단 세로 정렬 */}
@@ -137,7 +268,21 @@ export default function HomePage() {
setFilterOpen(false)} /> - setSearchOpen(false)} /> + setSearchOpen(false)} + onSelect={handleSearchSelect} + /> + + { + setClusterIds(null); + router.push(`/restaurants/${id}`); + }} + onClose={() => setClusterIds(null)} + /> {/* 모바일 바텀 시트 */}
@@ -147,6 +292,10 @@ export default function HomePage() { restaurants={orderedRestaurants} isLoading={isLoading} isError={isError} + hasMoreOutsideView={ + restaurants.length > 0 && visibleRestaurants.length === 0 + } + selectedId={selectedId} />
@@ -157,7 +306,11 @@ export default function HomePage() { {/* 패널 헤더 */}
- 식당 목록 {restaurants.length > 0 && `(${restaurants.length})`} + 식당 목록{' '} + {restaurants.length > 0 && + (visibleRestaurants.length === restaurants.length + ? `(${restaurants.length})` + : `(${visibleRestaurants.length} / ${restaurants.length})`)}
diff --git a/apps/web/app/restaurants/[id]/page.tsx b/apps/web/app/restaurants/[id]/page.tsx index 47896d1..7fe0825 100644 --- a/apps/web/app/restaurants/[id]/page.tsx +++ b/apps/web/app/restaurants/[id]/page.tsx @@ -48,7 +48,11 @@ export default async function RestaurantDetailPage({ params }: Props) {
- +
diff --git a/apps/web/components/admin/RestaurantForm.helpers.ts b/apps/web/components/admin/RestaurantForm.helpers.ts index 70e7b95..270024a 100644 --- a/apps/web/components/admin/RestaurantForm.helpers.ts +++ b/apps/web/components/admin/RestaurantForm.helpers.ts @@ -4,14 +4,27 @@ import type { RestaurantWithRelations } from '@pangchelin/types'; import type { RestaurantFormValues } from './RestaurantForm'; function defaultDayHours() { - return { closed: false, open: '11:00', close: '21:00' }; + return { closed: false, open: '11:00', close: '21:00', breakStart: '', breakEnd: '' }; } export function toFormValues(r: RestaurantWithRelations): RestaurantFormValues { const bh = (r.businessHours ?? {}) as Record< string, - { open?: string; close?: string; closed?: boolean } + | { open?: string; close?: string; closed?: boolean; breakStart?: string; breakEnd?: string } + | string + | undefined >; + const day = (k: string) => { + const d = bh[k]; + if (!d || typeof d === 'string') return { closed: false, open: '11:00', close: '21:00' }; + return { + closed: d.closed ?? false, + open: d.open ?? '11:00', + close: d.close ?? '21:00', + breakStart: d.breakStart ?? '', + breakEnd: d.breakEnd ?? '', + }; + }; return { name: r.name, zone: r.zone as RestaurantFormValues['zone'], @@ -20,14 +33,17 @@ export function toFormValues(r: RestaurantWithRelations): RestaurantFormValues { latitude: r.latitude, longitude: r.longitude, businessHours: { - mon: { closed: bh.mon?.closed ?? false, open: bh.mon?.open ?? '11:00', close: bh.mon?.close ?? '21:00' }, - tue: { closed: bh.tue?.closed ?? false, open: bh.tue?.open ?? '11:00', close: bh.tue?.close ?? '21:00' }, - wed: { closed: bh.wed?.closed ?? false, open: bh.wed?.open ?? '11:00', close: bh.wed?.close ?? '21:00' }, - thu: { closed: bh.thu?.closed ?? false, open: bh.thu?.open ?? '11:00', close: bh.thu?.close ?? '21:00' }, - fri: { closed: bh.fri?.closed ?? false, open: bh.fri?.open ?? '11:00', close: bh.fri?.close ?? '21:00' }, - sat: { closed: bh.sat?.closed ?? false, open: bh.sat?.open ?? '11:00', close: bh.sat?.close ?? '21:00' }, - sun: { closed: bh.sun?.closed ?? true, open: bh.sun?.open ?? '11:00', close: bh.sun?.close ?? '21:00' }, + mon: day('mon'), + tue: day('tue'), + wed: day('wed'), + thu: day('thu'), + fri: day('fri'), + sat: day('sat'), + sun: bh.sun && typeof bh.sun !== 'string' ? day('sun') : { closed: true, open: '11:00', close: '21:00' }, + note: typeof bh.note === 'string' ? bh.note : '', }, + coverImageUrl: r.coverImageUrl ?? '', + externalMenuUrl: r.externalMenuUrl ?? '', isPartner: r.isPartner, partnerships: r.partnerships?.map((p) => ({ @@ -65,9 +81,12 @@ export function defaultFormValues(): RestaurantFormValues { thu: defaultDayHours(), fri: defaultDayHours(), sat: defaultDayHours(), - sun: { closed: true, open: '11:00', close: '21:00' }, + sun: { closed: true, open: '11:00', close: '21:00', breakStart: '', breakEnd: '' }, + note: '', }, isPartner: false, + coverImageUrl: '', + externalMenuUrl: '', partnerships: [], categoryIds: [], menus: [], diff --git a/apps/web/components/admin/RestaurantForm.tsx b/apps/web/components/admin/RestaurantForm.tsx index 85145f4..a97277a 100644 --- a/apps/web/components/admin/RestaurantForm.tsx +++ b/apps/web/components/admin/RestaurantForm.tsx @@ -38,6 +38,8 @@ const dayHoursSchema = z.object({ closed: z.boolean().default(false), open: z.string().optional(), close: z.string().optional(), + breakStart: z.string().optional(), + breakEnd: z.string().optional(), }); const menuRowSchema = z.object({ @@ -57,6 +59,7 @@ const partnershipRowSchema = z.object({ 'ELECTRONICS_INFO', 'HUMANITIES_SOCIAL', 'POLICY_LAW', + 'FREE_MAJOR', ]), instagramUrl: z .string() @@ -74,8 +77,12 @@ const restaurantSchema = z.object({ businessHours: z.object({ mon: dayHoursSchema, tue: dayHoursSchema, wed: dayHoursSchema, thu: dayHoursSchema, fri: dayHoursSchema, sat: dayHoursSchema, sun: dayHoursSchema, + /** 격주 휴무 등 자유 텍스트 비고 */ + note: z.string().optional(), }), isPartner: z.boolean().default(false), + coverImageUrl: z.string().optional(), + externalMenuUrl: z.string().optional(), partnerships: z.array(partnershipRowSchema).default([]), categoryIds: z.array(z.string()).default([]), menus: z.array(menuRowSchema).default([]), @@ -197,6 +204,12 @@ export function RestaurantForm({ defaultValues, onSubmit, isSubmitting, submitLa setValue(`menus.${index}.imageUrl`, res.url); } + async function handleCoverImageUpload(file: File) { + if (!token) return; + const res = await adminUploadImage(file, token); + setValue('coverImageUrl', res.url); + } + return (
{/* 카카오 장소 검색 */} @@ -356,14 +369,83 @@ export function RestaurantForm({ defaultValues, onSubmit, isSubmitting, submitLa />
+ {/* 대표 사진 */} +
+

대표 사진

+

+ 식당 카드와 상세 페이지 상단에 표시됩니다. 없으면 대표 메뉴 사진이 대신 사용돼요. +

+ {watch('coverImageUrl') ? ( +
+ {/* eslint-disable-next-line @next/next/no-img-element */} + 대표 사진 미리보기 +
+ + +
+
+ ) : ( + + )} +
+ + {/* 공식 메뉴 URL (체인점용) */} +
+

공식 메뉴 URL (체인점 선택)

+

+ 체인점이거나 공식 사이트에 메뉴가 있는 경우 URL 입력. 식당 상세 페이지에 "공식 메뉴 보기" 버튼이 노출됩니다. +

+ +
+ {/* 영업시간 */}

영업시간

{DAYS.map(({ key, label }) => { const closed = watch(`businessHours.${key}.closed`); + const breakStart = watch(`businessHours.${key}.breakStart`); + const hasBreak = !!breakStart; return ( -
+
{label} + {!hasBreak ? ( + + ) : ( + + 브레이크 + + ~ + + + + )} )} {closed && 휴무일} @@ -400,6 +520,20 @@ export function RestaurantForm({ defaultValues, onSubmit, isSubmitting, submitLa ); })}
+ + {/* 비고 — 격주 휴무 등 정형화하기 어려운 메모 */} +
+ + +

+ 격주 휴무처럼 위 표로 표현 못 하는 정보는 여기에 자유롭게 적어주세요. 식당 상세 페이지에 그대로 노출됩니다. +

+
{/* 제휴 */} @@ -453,6 +587,7 @@ export function RestaurantForm({ defaultValues, onSubmit, isSubmitting, submitLa + + ); + })} +
+ ); +} diff --git a/apps/web/components/layout/BottomSheet.tsx b/apps/web/components/layout/BottomSheet.tsx index d571248..ca86e7f 100644 --- a/apps/web/components/layout/BottomSheet.tsx +++ b/apps/web/components/layout/BottomSheet.tsx @@ -27,25 +27,24 @@ interface BottomSheetProps { children: ReactNode; } +// SSR/client hydration mismatch 방지를 위해 window 비의존 상수로 시작. +// 어떤 viewport 높이보다도 큰 값이라 시트가 화면 아래에 위치 → 첫 paint 시 안 보임. +// mount 후 useEffect 에서 실제 windowHeight 기반 snap 위치로 spring 애니메이션. +const SAFE_BELOW_VIEWPORT = 9999; + export function BottomSheet({ children }: BottomSheetProps) { const { snap, setSnap } = useSheetStore(); - const y = useMotionValue(0); const windowHeight = useRef( typeof window !== 'undefined' ? window.innerHeight : 800, ); + const y = useMotionValue(SAFE_BELOW_VIEWPORT); - // snap 변경 시 애니메이션 + // mount 및 snap 변경 시 spring 애니메이션 — 첫 mount 도 아래에서 위로 올라옴 useEffect(() => { const target = getSnapY(snap, windowHeight.current); animate(y, target, { type: 'spring', stiffness: 400, damping: 40 }); }, [snap, y]); - // 초기 위치 설정 - useEffect(() => { - y.set(getSnapY('peek', windowHeight.current)); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - // 드래그 종료 시 가장 가까운 snap으로 이동 function handleDragEnd() { const currentY = y.get(); @@ -66,6 +65,13 @@ export function BottomSheet({ children }: BottomSheetProps) { [0.3, 0], ); + // 스크롤 영역의 최대 높이 = 시트의 viewport 안에 보이는 부분 - 드래그 핸들(약 30px). + // 시트 자체 height 가 100dvh 라 그대로 두면 스크롤 영역이 viewport 밖까지 늘어나 + // 스크롤 max 위치에서 마지막 아이템이 화면 가장자리 너머에 가려지는 문제가 있음. + const scrollMaxHeight = useTransform(y, (val) => + Math.max(60, windowHeight.current - val - 30), + ); + return ( <> {/* 배경 오버레이 (full 상태 시) */} @@ -90,13 +96,17 @@ export function BottomSheet({ children }: BottomSheetProps) {
- {/* 콘텐츠 영역 (스크롤) */} -
{children} -
+ ); diff --git a/apps/web/components/map/ClusterPicker.tsx b/apps/web/components/map/ClusterPicker.tsx new file mode 100644 index 0000000..71ae86c --- /dev/null +++ b/apps/web/components/map/ClusterPicker.tsx @@ -0,0 +1,127 @@ +'use client'; + +import type { RestaurantListItem } from '@pangchelin/types'; +import { X } from 'lucide-react'; +import Image from 'next/image'; +import { useEffect } from 'react'; + +import { formatNextOpen } from '@/lib/formatNextOpen'; + +const ZONE_LABEL: Record = { + FRONT_GATE: '정문', + BACK_GATE: '후문', + KWANGWOON_STATION: '광운대역', + UICHEON: '우이천', +}; + +interface Props { + open: boolean; + /** 클러스터 안 식당들 */ + restaurants: RestaurantListItem[]; + onSelect: (id: string) => void; + onClose: () => void; +} + +/** + * 클러스터(겹친 마커) 클릭 시 그 안의 식당 리스트를 보여주는 작은 모달. + * 사용자가 식당 하나 선택 → onSelect 호출 → 부모가 marker 선택 처리. + * + * 모바일 mid-sheet 스타일 (화면 중앙, 작은 카드). 백드롭 클릭/X/ESC 로 닫힘. + */ +export function ClusterPicker({ open, restaurants, onSelect, onClose }: Props) { + // ESC 키로 닫기 + useEffect(() => { + if (!open) return; + const handler = (e: KeyboardEvent) => { + if (e.key === 'Escape') onClose(); + }; + window.addEventListener('keydown', handler); + return () => window.removeEventListener('keydown', handler); + }, [open, onClose]); + + if (!open) return null; + + return ( +
+
e.stopPropagation()} + > + {/* 헤더 */} +
+ + 이 위치의 식당 {restaurants.length}개 + + +
+ + {/* 리스트 — 최대 60vh 까지, 그 이상은 스크롤 */} +
    + {restaurants.map((r) => ( +
  • + +
  • + ))} +
+
+
+ ); +} diff --git a/apps/web/components/map/KakaoMap.tsx b/apps/web/components/map/KakaoMap.tsx index 5ece458..aac1a05 100644 --- a/apps/web/components/map/KakaoMap.tsx +++ b/apps/web/components/map/KakaoMap.tsx @@ -36,11 +36,13 @@ export const KakaoMap = forwardRef( level: 5, }); mapRef.current = map; - // 컨테이너 크기가 확정된 뒤 relayout으로 중심 재설정 + // onMapReady 가 먼저 호출되어 사용자가 setCenter/setLevel 로 뷰포트 복원할 + // 기회를 갖도록 한 다음, 컨테이너 크기 보정용 relayout 만 실행. + // (이전엔 setCenter 로 다시 KWU_CENTER 로 되돌려 복원이 덮어써졌음) + onMapReady?.(map); setTimeout(() => { - map.setCenter(center); + map.relayout(); }, 100); - onMapReady?.(map); }); }, [scriptLoaded, onMapReady]); diff --git a/apps/web/components/map/RestaurantMarker.tsx b/apps/web/components/map/RestaurantMarker.tsx index 87a5aa7..f938549 100644 --- a/apps/web/components/map/RestaurantMarker.tsx +++ b/apps/web/components/map/RestaurantMarker.tsx @@ -40,12 +40,14 @@ interface RestaurantMarkerProps { function buildContent(isOpen: boolean, isPartner: boolean, isSelected: boolean): HTMLElement { const color = isOpen ? '#D85A30' : '#8A7D6E'; - const size = isSelected ? 36 : 30; + // 선택 시 핀 크기 키움(30→38) + 외곽에 흰 링 + drop shadow. 어두운 색 사용 안 함. + const size = isSelected ? 38 : 30; const shadow = isSelected - ? `0 0 0 4px ${color}40, 0 2px 8px rgba(0,0,0,0.3)` + ? '0 0 0 3px white, 0 5px 12px rgba(0,0,0,0.35)' : '0 2px 6px rgba(0,0,0,0.25)'; // 44px 최소 탭 영역을 위해 wrapper를 넉넉히 + // 선택된 마커가 다른 마커 위에 떠 보이도록 z-index 상향 const wrapper = document.createElement('div'); wrapper.style.cssText = [ 'display:flex', @@ -57,7 +59,9 @@ function buildContent(isOpen: boolean, isPartner: boolean, isSelected: boolean): 'min-height:44px', 'padding-bottom:2px', 'transition:transform 0.15s ease', - ].join(';'); + isSelected ? 'z-index:10' : 'z-index:1', + 'position:relative', + ].filter(Boolean).join(';'); const pin = document.createElement('div'); pin.style.cssText = [ @@ -70,7 +74,7 @@ function buildContent(isOpen: boolean, isPartner: boolean, isSelected: boolean): 'align-items:center', 'justify-content:center', `box-shadow:${shadow}`, - 'transition:box-shadow 0.2s,width 0.15s,height 0.15s', + 'transition:box-shadow 0.2s,width 0.2s,height 0.2s', ].join(';'); if (isPartner) { diff --git a/apps/web/components/restaurant/BottomSheetContent.tsx b/apps/web/components/restaurant/BottomSheetContent.tsx index 1e4ce88..13ba02f 100644 --- a/apps/web/components/restaurant/BottomSheetContent.tsx +++ b/apps/web/components/restaurant/BottomSheetContent.tsx @@ -3,15 +3,21 @@ import type { RestaurantListItem } from '@pangchelin/types'; import { RotateCcw } from 'lucide-react'; +import { CategoryChipsBar } from '@/components/filters/CategoryChipsBar'; import { useFilterStore } from '@/lib/stores/filterStore'; import { useSheetStore } from '@/lib/stores/sheetStore'; import { RestaurantListItem as RestaurantCard } from './RestaurantListItem'; +import { WelcomeStats } from './WelcomeStats'; interface Props { restaurants: RestaurantListItem[]; isLoading: boolean; isError: boolean; + // 필터/검색은 비어있지 않은데 지도 가시 영역 안에만 0건일 때 안내 메시지 분기 + hasMoreOutsideView?: boolean; + // 지도 마커를 눌러 선택한 식당 id — 리스트에서 강조 표시 + selectedId?: string | null; } function SkeletonCard() { @@ -27,7 +33,13 @@ function SkeletonCard() { ); } -export function BottomSheetContent({ restaurants, isLoading, isError }: Props) { +export function BottomSheetContent({ + restaurants, + isLoading, + isError, + hasMoreOutsideView, + selectedId, +}: Props) { const { snap, setSnap } = useSheetStore(); const { zones, categoryIds, isOpen, maxPrice, reset } = useFilterStore(); const hasActiveFilters = @@ -52,6 +64,16 @@ export function BottomSheetContent({ restaurants, isLoading, isError }: Props) { } if (restaurants.length === 0) { + if (hasMoreOutsideView) { + return ( +
+

+ 이 화면 안에는 식당이 없어요 +

+

지도를 움직이거나 줌을 줄여 보세요

+
+ ); + } if (hasActiveFilters) { return (
@@ -81,6 +103,9 @@ export function BottomSheetContent({ restaurants, isLoading, isError }: Props) { ); } + // 선택·필터 없는 '신선 진입' 상태에서만 환영 메시지 노출. + const isFreshEntry = !selectedId && !hasActiveFilters; + return (
{/* full 상태: 검색창 */} @@ -94,10 +119,19 @@ export function BottomSheetContent({ restaurants, isLoading, isError }: Props) {
)} + {/* 신선 진입 상태 + peek/half: 인사말 + 통계 */} + {isFreshEntry && snap !== 'full' && } + + {/* 카테고리 빠른 필터 칩 — 항상 노출 (단 full 상태 검색 모드 외) */} + + {/* peek 상태: 첫 번째 카드 + 더보기 */} {snap === 'peek' ? (
- + {restaurants.length > 1 && (
)} diff --git a/apps/web/components/restaurant/MenuList.tsx b/apps/web/components/restaurant/MenuList.tsx index b8eef38..a61e4ef 100644 --- a/apps/web/components/restaurant/MenuList.tsx +++ b/apps/web/components/restaurant/MenuList.tsx @@ -1,37 +1,118 @@ -import type { Menu } from '@pangchelin/types'; +'use client'; + +import type { Menu, MenuPriceOption } from '@pangchelin/types'; import Image from 'next/image'; -import { memo, useMemo } from 'react'; +import { memo, useMemo, useRef, useState } from 'react'; interface Props { menus: Menu[]; } +const UNCATEGORIZED_LABEL = '기타'; +const ALL_LABEL = '전체'; +const DISCLAIMER = '메뉴 항목과 가격은 각 매장의 사정에 따라 기재된 내용과 다를 수 있습니다.'; + function formatPrice(price: number) { return price.toLocaleString('ko-KR') + '원'; } +function formatPriceOptions(options: MenuPriceOption[]): string { + return options.map((o) => `${o.label} ${o.price.toLocaleString('ko-KR')}원`).join(' / '); +} + +/** + * 카테고리를 메인 → (식사) → 사이드 → 기타 → 음료/주류 순으로 묶기 위한 점수. + * 키워드 매칭으로 그룹화하고, 그룹 내에서는 입력 순서(idx) 유지. + * 카페·전문점 (COFFEE/PHO 등) 처럼 카테고리가 곧 주력 메뉴면 default(20) 로 메인 직후에 배치. + */ +function categoryPriority(category: string): number { + if (category === ALL_LABEL) return 0; + if (/메인|대표|시그니처|main/i.test(category)) return 10; + if (/사이드|토핑|안주|추가|side/i.test(category)) return 30; + if (category === UNCATEGORIZED_LABEL) return 40; + if (/음료|주류|드링크|칵테일|cocktail|juice|drink|soft/i.test(category)) return 50; + return 20; +} + function MenuListComponent({ menus }: Props) { - // 훅은 early return 이전에 호출 (rules-of-hooks) - const sorted = useMemo( - () => [...menus].sort((a, b) => Number(b.isSignature) - Number(a.isSignature)), - [menus], + // 카테고리별 그룹화 → 우선순위(메인/사이드/음료) 재정렬, 동순위는 입력 순서 유지 + const { categories, grouped } = useMemo(() => { + const inputOrder: string[] = []; + const map = new Map(); + for (const m of menus) { + const key = m.category?.trim() || UNCATEGORIZED_LABEL; + if (!map.has(key)) { + map.set(key, []); + inputOrder.push(key); + } + map.get(key)!.push(m); + } + // 각 카테고리 내부에서 추천 메뉴 먼저 + map.forEach((list) => { + list.sort((a, b) => Number(b.isSignature) - Number(a.isSignature)); + }); + // 우선순위 정렬 (stable: 동순위는 입력 순서) + const order = inputOrder + .map((c, idx) => ({ c, idx, p: categoryPriority(c) })) + .sort((a, b) => a.p - b.p || a.idx - b.idx) + .map((x) => x.c); + return { categories: order, grouped: map }; + }, [menus]); + + // 카테고리 2개 이상일 때만 탭 UI 사용. 그 외는 단일 리스트. + const hasTabs = categories.length >= 2; + const [activeTab, setActiveTab] = useState(() => + hasTabs ? ALL_LABEL : categories[0] ?? UNCATEGORIZED_LABEL, ); + const tabBarRef = useRef(null); if (menus.length === 0) { return (

메뉴

아직 등록된 메뉴가 없어요

+

{DISCLAIMER}

); } + // 표시할 메뉴 선택 + const visibleMenus = + !hasTabs || activeTab === ALL_LABEL + ? categories.flatMap((c) => grouped.get(c) ?? []) + : grouped.get(activeTab) ?? []; + return (

메뉴

+ {hasTabs && ( +
+
+ setActiveTab(ALL_LABEL)} + /> + {categories.map((c) => ( + setActiveTab(c)} + /> + ))} +
+
+ )} +
    - {sorted.map((menu) => ( + {visibleMenus.map((menu) => (
  • {/* 썸네일 */}
    @@ -61,14 +142,49 @@ function MenuListComponent({ menus }: Props) { )}
    - {formatPrice(menu.price)} + {menu.priceOptions && menu.priceOptions.length > 0 + ? formatPriceOptions(menu.priceOptions) + : formatPrice(menu.price)}
))} + +

{DISCLAIMER}

); } +interface TabButtonProps { + label: string; + active: boolean; + onClick: () => void; + count?: number; +} + +function TabButton({ label, active, onClick, count }: TabButtonProps) { + return ( + + ); +} + export const MenuList = memo(MenuListComponent); diff --git a/apps/web/components/restaurant/RestaurantHero.tsx b/apps/web/components/restaurant/RestaurantHero.tsx index bd57deb..c8c2f69 100644 --- a/apps/web/components/restaurant/RestaurantHero.tsx +++ b/apps/web/components/restaurant/RestaurantHero.tsx @@ -8,10 +8,13 @@ import { useState } from 'react'; interface Props { menus: Menu[]; name: string; + /** 식당 대표 사진. 있으면 슬라이드 첫 번째로 노출 */ + coverImageUrl?: string | null; } -export function RestaurantHero({ menus, name }: Props) { - const images = menus.filter((m) => m.imageUrl).map((m) => m.imageUrl!); +export function RestaurantHero({ menus, name, coverImageUrl }: Props) { + const menuImages = menus.filter((m) => m.imageUrl).map((m) => m.imageUrl!); + const images = coverImageUrl ? [coverImageUrl, ...menuImages] : menuImages; const [activeIdx, setActiveIdx] = useState(0); if (images.length === 0) { diff --git a/apps/web/components/restaurant/RestaurantInfo.tsx b/apps/web/components/restaurant/RestaurantInfo.tsx index 8023aa4..239083b 100644 --- a/apps/web/components/restaurant/RestaurantInfo.tsx +++ b/apps/web/components/restaurant/RestaurantInfo.tsx @@ -1,5 +1,7 @@ import type { RestaurantWithRelations } from '@pangchelin/types'; -import { MapPin, Phone } from 'lucide-react'; +import { Info, MapPin, Phone } from 'lucide-react'; + +import { formatNextOpen } from '@/lib/formatNextOpen'; const ZONE_LABEL: Record = { KWANGWOON_STATION: '광운대역', @@ -13,6 +15,11 @@ interface Props { } export function RestaurantInfo({ restaurant }: Props) { + const businessHoursNote = + typeof (restaurant.businessHours as { note?: unknown })?.note === 'string' + ? ((restaurant.businessHours as { note: string }).note || '').trim() + : ''; + return (
{/* 이름 + 배지 */} @@ -33,7 +40,9 @@ export function RestaurantInfo({ restaurant }: Props) { : 'bg-muted text-ink-muted', ].join(' ')} > - {restaurant.isOpen ? '영업중' : '오늘은 끝났어요'} + {restaurant.isOpen + ? '영업중' + : `오늘은 끝났어요 · ${formatNextOpen(restaurant.nextOpenAt) || '내일 다시 와주세요'}`}
@@ -60,6 +69,14 @@ export function RestaurantInfo({ restaurant }: Props) { {restaurant.phone} )} + + {/* 영업시간 비고 — 격주 휴무 등 정형화 못 한 정보 */} + {businessHoursNote && ( +
+ + {businessHoursNote} +
+ )}
); } diff --git a/apps/web/components/restaurant/RestaurantListItem.tsx b/apps/web/components/restaurant/RestaurantListItem.tsx index 90070b3..02b85a7 100644 --- a/apps/web/components/restaurant/RestaurantListItem.tsx +++ b/apps/web/components/restaurant/RestaurantListItem.tsx @@ -3,6 +3,8 @@ import Image from 'next/image'; import Link from 'next/link'; import { memo } from 'react'; +import { formatNextOpen } from '@/lib/formatNextOpen'; + const ZONE_LABEL: Record = { FRONT_GATE: '정문', BACK_GATE: '후문', @@ -12,22 +14,32 @@ const ZONE_LABEL: Record = { interface Props { restaurant: RestaurantListItemType; + /** 지도에서 클릭해 선택된 식당이면 시각적으로 강조 */ + isSelected?: boolean; } -function RestaurantListItemComponent({ restaurant }: Props) { - const { id, name, zone, isOpen, isPartner, categories, featuredMenu } = restaurant; +function RestaurantListItemComponent({ restaurant, isSelected = false }: Props) { + const { id, name, zone, isOpen, isPartner, categories, featuredMenu, nextOpenAt, coverImageUrl } = + restaurant; const category = categories[0]; + const closedLabel = !isOpen ? formatNextOpen(nextOpenAt) || '마감' : null; + // 썸네일 우선순위: 대표사진 → 대표 메뉴 사진 → 이모지 fallback + const thumbnailUrl = coverImageUrl || featuredMenu?.imageUrl || null; return ( - {/* 썸네일 */} + {/* 썸네일 — 대표사진 우선, 없으면 대표 메뉴 사진 */}
- {featuredMenu?.imageUrl ? ( + {thumbnailUrl ? ( {name} - {isOpen ? '영업중' : '마감'} + {isOpen ? '영업중' : closedLabel}
diff --git a/apps/web/components/restaurant/WelcomeStats.tsx b/apps/web/components/restaurant/WelcomeStats.tsx new file mode 100644 index 0000000..664632b --- /dev/null +++ b/apps/web/components/restaurant/WelcomeStats.tsx @@ -0,0 +1,30 @@ +'use client'; + +import { useRestaurants } from '@/hooks/queries/useRestaurants'; + +/** + * 첫 화면 (필터/선택 없는 peek) 에 노출되는 인사말 + 통계. + * 광운대 맛집 가이드 브랜드를 첫인상에 짧게 노출. + * + * 통계는 지도 가시 영역과 무관한 '전체' 기준 — 화면 줌/이동에 따라 + * 숫자가 바뀌면 의미가 약해지므로 useRestaurants() 결과(API 응답)를 + * 직접 사용. fresh entry 상태에서만 호출되므로 filter 도 없는 상태. + */ +export function WelcomeStats() { + const { data: restaurants = [] } = useRestaurants(); + const openCount = restaurants.filter((r) => r.isOpen).length; + const partnerCount = restaurants.filter((r) => r.isPartner).length; + + return ( +
+

+ 팡슐랭에 오신 걸 환영해요 🍽 +

+

+ 지금 영업중{' '} + {openCount}개 · 제휴{' '} + {partnerCount}개 +

+
+ ); +} diff --git a/apps/web/components/search/SearchSheet.tsx b/apps/web/components/search/SearchSheet.tsx index 6abccdf..5211458 100644 --- a/apps/web/components/search/SearchSheet.tsx +++ b/apps/web/components/search/SearchSheet.tsx @@ -1,8 +1,8 @@ 'use client'; +import type { RestaurantListItem } from '@pangchelin/types'; import { AnimatePresence, motion } from 'framer-motion'; import { ChevronRight, Search, X } from 'lucide-react'; -import Link from 'next/link'; import { useEffect, useRef, useState } from 'react'; import { useRestaurants } from '@/hooks/queries/useRestaurants'; @@ -10,9 +10,11 @@ import { useRestaurants } from '@/hooks/queries/useRestaurants'; interface Props { open: boolean; onClose: () => void; + /** 검색 결과 선택 시 호출. 미지정이면 기본 동작(상세 페이지로 이동) 안 함 — 호출 측이 처리. */ + onSelect?: (restaurant: RestaurantListItem) => void; } -export function SearchSheet({ open, onClose }: Props) { +export function SearchSheet({ open, onClose, onSelect }: Props) { const [query, setQuery] = useState(''); const inputRef = useRef(null); // 검색은 필터와 무관하게 전체 식당에서 — 별도 쿼리 키 @@ -102,10 +104,13 @@ export function SearchSheet({ open, onClose }: Props) {
    {filtered.map((r) => (
  • - { + onSelect?.(r); + onClose(); + }} + className="flex w-full items-center justify-between gap-3 px-4 py-4 text-left active:bg-muted" >

    @@ -120,7 +125,7 @@ export function SearchSheet({ open, onClose }: Props) { strokeWidth={1.75} className="flex-shrink-0 text-ink-muted" /> - +

  • ))}
diff --git a/apps/web/hooks/useMarkerClusterer.ts b/apps/web/hooks/useMarkerClusterer.ts index e461243..67c4050 100644 --- a/apps/web/hooks/useMarkerClusterer.ts +++ b/apps/web/hooks/useMarkerClusterer.ts @@ -4,39 +4,128 @@ import { useEffect, useRef } from 'react'; /** * 마커가 이 개수 이상이면 CustomOverlay 대신 native Marker + Clusterer 로 전환. - * 시드 데이터 수준(5개 안팎) 에서는 의미 없고, 운영 데이터가 쌓이면 활성화. + * 마커 디자인을 통일한 뒤로는 사실상 항상 clusterer 경로를 쓰는 게 맞다 — + * 필터로 식당 수가 줄어도 가까운 것끼리 묶이게 하려면 임계값이 낮아야 함. */ -export const MARKER_CLUSTER_THRESHOLD = 50; +export const MARKER_CLUSTER_THRESHOLD = 1; + +const BRAND_COLOR = '#D85A30'; +const PARTNER_STAR_COLOR = '#EF9F27'; +const CLOSED_OPACITY = 0.4; +// 선택 마커 = 브랜드 색 유지. 흰 stroke 굵게 + 사이즈 1.2x 로만 차별. +const SELECTED_SCALE = 1.22; + +type SizeTier = 'dot' | 'small' | 'full'; interface ClusterMarkerInput { + /** 그룹 식별 키 (그룹 내 첫 식당 id 등) */ id: string; lat: number; lng: number; + /** 그룹 내 하나라도 영업중이면 true */ + isOpen: boolean; + /** 그룹 내 하나라도 제휴면 true */ + isPartner: boolean; + /** 그룹 크기 — 1 = 단일 식당, 2+ = 같은 건물 묶음 */ + count: number; + /** 그룹 안 식당 id 목록 (single 일 땐 1개) */ + restaurantIds: string[]; } interface UseMarkerClustererOptions { enabled: boolean; minClusterSize?: number; + /** 선택된 식당 id — 해당 마커 SVG 가 진한 테두리 버전으로 교체됨 */ + selectedId?: string | null; + /** 단일 식당 마커 클릭 시 */ onMarkerClick?: (id: string) => void; + /** 건물(2+) 마커 또는 Kakao 클러스터 버블 클릭 시 */ + onClusterClick?: (restaurantIds: string[]) => void; +} + +// 선택 마커: stroke 색은 흰색 유지(브랜드 디자인 보존) + 굵기 2배. +// 추가로 SVG dimension 자체를 1.22배 키워 한눈에 식별. 색은 절대 안 바꿈. +function strokeAttrs(isSelected: boolean, baseWidth: number): string { + const width = isSelected ? baseWidth * 2 : baseWidth; + return `stroke="white" stroke-width="${width}"`; +} + +function buildSinglePinSvg(size: SizeTier, isPartner: boolean, isSelected: boolean): string { + if (size === 'dot') { + // 손가락 탭 가능하도록 18~20px 로 키움. viewBox 는 그대로 유지해 디자인 비례 보존. + if (isPartner) { + return ``; + } + return ``; + } + if (size === 'small') { + const star = isPartner + ? `` + : ''; + return `${star}`; + } + const star = isPartner + ? `` + : ''; + return `${star}`; +} + +function buildGroupPinSvg(size: SizeTier, count: number, isSelected: boolean): string { + // dot 사이즈는 숫자 못 보여주지만 단일보다 살짝 크게 — 묶음임을 시각적으로 차별. + if (size === 'dot') { + return ``; + } + // 표시 가능한 최대치 — 100개 넘는 건물은 없을 거지만 안전장치 + const label = count > 99 ? '99+' : String(count); + if (size === 'small') { + return `${label}`; + } + return `${label}`; +} + +function tierForLevel(level: number): SizeTier { + if (level >= 4) return 'dot'; + if (level === 3) return 'small'; + return 'full'; +} + +// 줌 레벨별 클러스터 그리드 크기 (픽셀). +// level 1 (최대 줌인) 은 minLevel 로 제외되니 값은 의미 없음. +// 2 → 5 까지 점진적으로 더 공격적으로 묶기. +function gridSizeForLevel(level: number): number { + if (level === 1) return 80; + if (level === 2) return 100; + if (level === 3) return 140; + if (level === 4) return 200; + return 320; // level 5+ } /** * 카카오맵 MarkerClusterer 래퍼. * - * - enabled=false: no-op (CustomOverlay 기반 RestaurantMarker 만 렌더링) - * - enabled=true: native Marker 인스턴스를 만들어 Clusterer 에 묶고, - * 호출측은 RestaurantMarker 렌더링을 건너뛰어야 한다. - * - * 활성/비활성 전환 기준은 MARKER_CLUSTER_THRESHOLD. + * 입력: 그룹화된 마커 (같은 건물 = 1 입력). count 가 1 이면 단일, 2+ 면 건물. + * - 단일 마커 클릭 → onMarkerClick(식당 id) + * - 건물 마커 클릭 → onClusterClick(식당 id 들) + * - Kakao 클러스터 버블 클릭 → onClusterClick(포함된 모든 식당 id 들) + * 줌 레벨에 따라 marker image 자동 교체. 영업 종료(그룹 내 전원 마감)는 opacity 0.4. */ export function useMarkerClusterer( map: kakao.maps.Map | null, markers: ClusterMarkerInput[], - { enabled, minClusterSize = 5, onMarkerClick }: UseMarkerClustererOptions, + { enabled, minClusterSize = 2, selectedId, onMarkerClick, onClusterClick }: UseMarkerClustererOptions, ) { const clustererRef = useRef(null); const onMarkerClickRef = useRef(onMarkerClick); onMarkerClickRef.current = onMarkerClick; + const onClusterClickRef = useRef(onClusterClick); + onClusterClickRef.current = onClusterClick; + // selectedId 변경 시 마커 이미지만 갱신하기 위해 markersData 를 ref 로 노출 + const markersDataRef = useRef<{ marker: kakao.maps.Marker; input: ClusterMarkerInput }[]>([]); + const currentTierRef = useRef('full'); + // pickImage 클로저 — selectedId 갱신 시 다른 useEffect 에서 호출 + const pickImageRef = useRef<((tier: SizeTier, m: ClusterMarkerInput) => kakao.maps.MarkerImage) | null>(null); + const selectedIdRef = useRef(selectedId); + selectedIdRef.current = selectedId; useEffect(() => { if (!map || !enabled) return; @@ -44,30 +133,198 @@ export function useMarkerClusterer( return; } + const makeImg = (svg: string, w: number, h: number) => + new window.kakao.maps.MarkerImage( + `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`, + new window.kakao.maps.Size(w, h), + { offset: new window.kakao.maps.Point(w / 2, h) }, + ); + const makeDotImg = (svg: string, w: number, h: number) => + new window.kakao.maps.MarkerImage( + `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`, + new window.kakao.maps.Size(w, h), + { offset: new window.kakao.maps.Point(w / 2, h / 2) }, + ); + + // 선택 시 dimension 만 1.22x — viewBox 는 SVG 내부에서 자동 스케일 + const scaled = (n: number, isSelected: boolean) => + Math.round(n * (isSelected ? SELECTED_SCALE : 1)); + + // 단일 식당용 12 이미지 (3 tier × 2 partner × 2 selected) — lazy 생성 + const singleImageCache = new Map(); + const getSingleImage = (tier: SizeTier, isPartner: boolean, isSelected: boolean) => { + const key = `${tier}:${isPartner ? 1 : 0}:${isSelected ? 1 : 0}`; + const cached = singleImageCache.get(key); + if (cached) return cached; + const svg = buildSinglePinSvg(tier, isPartner, isSelected); + const baseW = + tier === 'dot' ? (isPartner ? 20 : 18) : tier === 'small' ? 22 : 32; + const baseH = tier === 'dot' ? baseW : tier === 'small' ? 28 : 40; + const w = scaled(baseW, isSelected); + const h = scaled(baseH, isSelected); + const img = tier === 'dot' ? makeDotImg(svg, w, h) : makeImg(svg, w, h); + singleImageCache.set(key, img); + return img; + }; + + // 그룹 마커용 이미지 캐시 — tier:count:selected 별로 lazy 생성. + const groupImageCache = new Map(); + const getGroupImage = (tier: SizeTier, count: number, isSelected: boolean) => { + const key = `${tier}:${count}:${isSelected ? 1 : 0}`; + const cached = groupImageCache.get(key); + if (cached) return cached; + const svg = buildGroupPinSvg(tier, count, isSelected); + const baseW = tier === 'dot' ? 22 : tier === 'small' ? 25 : 36; + const baseH = tier === 'dot' ? 22 : tier === 'small' ? 31 : 44; + const w = scaled(baseW, isSelected); + const h = scaled(baseH, isSelected); + const img = tier === 'dot' ? makeDotImg(svg, w, h) : makeImg(svg, w, h); + groupImageCache.set(key, img); + return img; + }; + + // pickImage 는 ref(selectedIdRef) 를 매번 읽어서 항상 최신 선택 상태 반영 + const pickImage = (tier: SizeTier, m: ClusterMarkerInput) => { + const sid = selectedIdRef.current; + const isSelected = !!sid && m.restaurantIds.includes(sid); + if (m.count > 1) return getGroupImage(tier, m.count, isSelected); + return getSingleImage(tier, m.isPartner, isSelected); + }; + pickImageRef.current = pickImage; + const clusterer = new window.kakao.maps.MarkerClusterer({ map, averageCenter: true, - minLevel: 4, + // 클러스터링 활성화 시작 줌 레벨. level 1 (최대 줌인) 에선 개별 마커 우선. + minLevel: 2, minClusterSize, - disableClickZoom: false, + disableClickZoom: true, + // 초기 줌 레벨에 맞는 gridSize. zoom_changed 핸들러에서 동적 갱신됨. + gridSize: gridSizeForLevel(map.getLevel()), + calculator: [10, 30, 100], + styles: [ + { + width: '40px', + height: '40px', + background: 'rgba(216, 90, 48, 0.92)', + borderRadius: '50%', + color: '#fff', + textAlign: 'center', + fontWeight: '700', + lineHeight: '40px', + fontSize: '13px', + boxShadow: '0 2px 8px rgba(0,0,0,0.25)', + }, + { + width: '50px', + height: '50px', + background: 'rgba(216, 90, 48, 0.95)', + borderRadius: '50%', + color: '#fff', + textAlign: 'center', + fontWeight: '700', + lineHeight: '50px', + fontSize: '15px', + boxShadow: '0 2px 10px rgba(0,0,0,0.3)', + }, + { + width: '60px', + height: '60px', + background: 'rgba(216, 90, 48, 1)', + borderRadius: '50%', + color: '#fff', + textAlign: 'center', + fontWeight: '700', + lineHeight: '60px', + fontSize: '17px', + boxShadow: '0 3px 12px rgba(0,0,0,0.35)', + }, + ], }); - const kakaoMarkers = markers.map((m) => { + let currentTier = tierForLevel(map.getLevel()); + currentTierRef.current = currentTier; + let currentGridSize = gridSizeForLevel(map.getLevel()); + + // Kakao 클러스터 click 핸들러용: Marker → 그 그룹의 모든 식당 id + const markerToIds = new WeakMap(); + + const markersData = markers.map((m) => { const marker = new window.kakao.maps.Marker({ position: new window.kakao.maps.LatLng(m.lat, m.lng), + image: pickImage(currentTier, m), + opacity: m.isOpen ? 1 : CLOSED_OPACITY, }); + markerToIds.set(marker, m.restaurantIds); window.kakao.maps.event.addListener(marker, 'click', () => { - onMarkerClickRef.current?.(m.id); + if (m.count === 1) { + onMarkerClickRef.current?.(m.restaurantIds[0]); + } else { + onClusterClickRef.current?.(m.restaurantIds); + } }); - return marker; + return { marker, input: m }; }); - clusterer.addMarkers(kakaoMarkers); + clusterer.addMarkers(markersData.map((d) => d.marker)); clustererRef.current = clusterer; + markersDataRef.current = markersData; + + // Kakao 클러스터 (여러 건물 묶음) 클릭 → 모든 식당 id flatten + const handleClusterClick = (cluster: kakao.maps.Cluster) => { + const ids = cluster + .getMarkers() + .flatMap((m) => markerToIds.get(m) ?? []); + onClusterClickRef.current?.(ids); + }; + window.kakao.maps.event.addListener( + clusterer, + 'clusterclick', + handleClusterClick, + ); + + // 줌 단계 변화 시: 마커 이미지(tier) + 클러스터 gridSize 를 각각 변화 있을 때만 갱신. + // tier 와 gridSize 는 같은 level 에서 동시에 바뀌지 않을 수 있어 분리해서 체크. + const handleZoom = () => { + const nextLevel = map.getLevel(); + const nextTier = tierForLevel(nextLevel); + if (nextTier !== currentTier) { + currentTier = nextTier; + currentTierRef.current = nextTier; + markersData.forEach(({ marker, input }) => { + marker.setImage(pickImage(nextTier, input)); + }); + } + const nextGridSize = gridSizeForLevel(nextLevel); + if (nextGridSize !== currentGridSize) { + currentGridSize = nextGridSize; + clusterer.setGridSize(nextGridSize); + clusterer.redraw(); + } + }; + window.kakao.maps.event.addListener(map, 'zoom_changed', handleZoom); return () => { + window.kakao.maps.event.removeListener(map, 'zoom_changed', handleZoom); + window.kakao.maps.event.removeListener( + clusterer, + 'clusterclick', + handleClusterClick, + ); clusterer.clear(); - kakaoMarkers.forEach((m) => m.setMap(null)); + markersData.forEach(({ marker }) => marker.setMap(null)); clustererRef.current = null; + markersDataRef.current = []; + pickImageRef.current = null; }; }, [map, markers, enabled, minClusterSize]); + + // selectedId 변경 → 영향 마커 이미지만 setImage 로 교체 (clusterer 재생성 없음) + useEffect(() => { + const pick = pickImageRef.current; + const tier = currentTierRef.current; + if (!pick) return; + markersDataRef.current.forEach(({ marker, input }) => { + marker.setImage(pick(tier, input)); + }); + }, [selectedId]); } diff --git a/apps/web/lib/formatNextOpen.ts b/apps/web/lib/formatNextOpen.ts new file mode 100644 index 0000000..dbd1b12 --- /dev/null +++ b/apps/web/lib/formatNextOpen.ts @@ -0,0 +1,37 @@ +/** + * 다음 영업 시작 시각 (ISO datetime UTC) 을 KST 기준 친근한 한국어 문자열로 변환. + * + * - 오늘 안 → "18:00 오픈" (오후 6시 같은 형태도 가능했지만 일관성 위해 HH:mm) + * - 내일 → "내일 09:00 오픈" + * - 그 이후 → "수요일 11:00 오픈" + */ +const DAY_LABELS = ['일', '월', '화', '수', '목', '금', '토'] as const; + +export function formatNextOpen(nextOpenAt: string | null): string { + if (!nextOpenAt) return ''; + const target = new Date(nextOpenAt); + if (Number.isNaN(target.getTime())) return ''; + + // KST 기준 비교를 위해 둘 다 +9h 시프트 (UTC 메서드가 KST 값 반환하도록) + const nowKst = new Date(Date.now() + 9 * 60 * 60 * 1000); + const targetKst = new Date(target.getTime() + 9 * 60 * 60 * 1000); + + const hh = String(targetKst.getUTCHours()).padStart(2, '0'); + const mm = String(targetKst.getUTCMinutes()).padStart(2, '0'); + const timeStr = `${hh}:${mm}`; + + // 같은 KST 날짜(yyyy-mm-dd) 비교 — 자정 넘어가는 케이스를 일별로 판정 + const sameDay = (a: Date, b: Date) => + a.getUTCFullYear() === b.getUTCFullYear() && + a.getUTCMonth() === b.getUTCMonth() && + a.getUTCDate() === b.getUTCDate(); + + if (sameDay(nowKst, targetKst)) return `${timeStr} 오픈`; + + const tomorrow = new Date(nowKst); + tomorrow.setUTCDate(tomorrow.getUTCDate() + 1); + if (sameDay(tomorrow, targetKst)) return `내일 ${timeStr} 오픈`; + + const dayName = DAY_LABELS[targetKst.getUTCDay()]; + return `${dayName}요일 ${timeStr} 오픈`; +} diff --git a/apps/web/lib/groupRestaurants.ts b/apps/web/lib/groupRestaurants.ts new file mode 100644 index 0000000..6d8a8dc --- /dev/null +++ b/apps/web/lib/groupRestaurants.ts @@ -0,0 +1,40 @@ +import type { RestaurantListItem } from '@pangchelin/types'; + +/** + * 같은 건물에 있는 식당을 좌표 기준으로 묶기. + * 약 11m tolerance — 카카오 지오코딩이 같은 건물에 동일 좌표를 주는 경우가 + * 대부분이라 이 정도면 충분. + * + * 그룹은 입력 순서를 보존 (첫 번째 식당이 그룹 anchor). + */ +const COORD_TOLERANCE = 0.0001; // 약 11m + +export interface RestaurantGroup { + /** anchor 좌표 (그룹 내 첫 식당의 좌표) */ + lat: number; + lng: number; + restaurants: RestaurantListItem[]; +} + +export function groupRestaurantsByLocation( + restaurants: RestaurantListItem[], +): RestaurantGroup[] { + const groups: RestaurantGroup[] = []; + for (const r of restaurants) { + const existing = groups.find( + (g) => + Math.abs(g.lat - r.latitude) < COORD_TOLERANCE && + Math.abs(g.lng - r.longitude) < COORD_TOLERANCE, + ); + if (existing) { + existing.restaurants.push(r); + } else { + groups.push({ + lat: r.latitude, + lng: r.longitude, + restaurants: [r], + }); + } + } + return groups; +} diff --git a/apps/web/lib/stores/mapStore.ts b/apps/web/lib/stores/mapStore.ts new file mode 100644 index 0000000..8590801 --- /dev/null +++ b/apps/web/lib/stores/mapStore.ts @@ -0,0 +1,20 @@ +import { create } from 'zustand'; + +/** + * 지도 뷰포트(중심 좌표 + 줌 레벨)를 보관. + * 메뉴 상세 → 뒤로 가기 시 직전에 보던 위치/줌 으로 복원하기 위함. + * + * - in-memory: 새로고침 시 초기화 (KWU_CENTER level 5 로 다시 시작) + * - SPA 네비게이션 (push/back) 사이엔 유지 + */ +interface MapStore { + center: { lat: number; lng: number } | null; + level: number | null; + setView: (center: { lat: number; lng: number }, level: number) => void; +} + +export const useMapStore = create((set) => ({ + center: null, + level: null, + setView: (center, level) => set({ center, level }), +})); diff --git a/apps/web/lib/stores/sheetStore.ts b/apps/web/lib/stores/sheetStore.ts index dc8d147..8e1d9d3 100644 --- a/apps/web/lib/stores/sheetStore.ts +++ b/apps/web/lib/stores/sheetStore.ts @@ -8,6 +8,8 @@ interface SheetStore { } export const useSheetStore = create((set) => ({ - snap: 'peek', + // 첫 진입 시 환영 + 카테고리 + 식당 리스트 미리보기가 보이도록 half 기본. + // 사용자가 지도 더 보고 싶으면 드래그 다운으로 peek 까지 내릴 수 있음. + snap: 'half', setSnap: (snap) => set({ snap }), })); diff --git "a/apps/web/public/restaurants/1\354\235\2741\354\236\224.jpg" "b/apps/web/public/restaurants/1\354\235\2741\354\236\224.jpg" new file mode 100644 index 0000000..be3da27 Binary files /dev/null and "b/apps/web/public/restaurants/1\354\235\2741\354\236\224.jpg" differ diff --git "a/apps/web/public/restaurants/5\354\235\274\354\236\245 \355\226\204\353\262\204\352\261\260.jpg" "b/apps/web/public/restaurants/5\354\235\274\354\236\245 \355\226\204\353\262\204\352\261\260.jpg" new file mode 100644 index 0000000..94af44a Binary files /dev/null and "b/apps/web/public/restaurants/5\354\235\274\354\236\245 \355\226\204\353\262\204\352\261\260.jpg" differ diff --git a/apps/web/public/restaurants/CAFE FIASCO.jpg b/apps/web/public/restaurants/CAFE FIASCO.jpg new file mode 100644 index 0000000..487942c Binary files /dev/null and b/apps/web/public/restaurants/CAFE FIASCO.jpg differ diff --git a/apps/web/public/restaurants/CORD Jr..jpg b/apps/web/public/restaurants/CORD Jr..jpg new file mode 100644 index 0000000..1859212 Binary files /dev/null and b/apps/web/public/restaurants/CORD Jr..jpg differ diff --git "a/apps/web/public/restaurants/\352\260\200\353\247\210\354\206\245\353\274\210\353\213\244\352\267\200\352\260\220\354\236\220\355\203\225.jpg" "b/apps/web/public/restaurants/\352\260\200\353\247\210\354\206\245\353\274\210\353\213\244\352\267\200\352\260\220\354\236\220\355\203\225.jpg" new file mode 100644 index 0000000..4dab6d1 Binary files /dev/null and "b/apps/web/public/restaurants/\352\260\200\353\247\210\354\206\245\353\274\210\353\213\244\352\267\200\352\260\220\354\236\220\355\203\225.jpg" differ diff --git "a/apps/web/public/restaurants/\352\262\275\353\214\200\354\273\265\353\260\245 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\352\262\275\353\214\200\354\273\265\353\260\245 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..f5331ee Binary files /dev/null and "b/apps/web/public/restaurants/\352\262\275\353\214\200\354\273\265\353\260\245 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\352\263\240\354\224\250\353\204\244 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\352\263\240\354\224\250\353\204\244 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..c7e3dd9 Binary files /dev/null and "b/apps/web/public/restaurants/\352\263\240\354\224\250\353\204\244 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\352\264\221\354\232\264\354\273\244\355\224\274.jpg" "b/apps/web/public/restaurants/\352\264\221\354\232\264\354\273\244\355\224\274.jpg" new file mode 100644 index 0000000..8c7bda2 Binary files /dev/null and "b/apps/web/public/restaurants/\352\264\221\354\232\264\354\273\244\355\224\274.jpg" differ diff --git "a/apps/web/public/restaurants/\352\265\255\354\210\230\354\262\234\354\231\225 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\352\265\255\354\210\230\354\262\234\354\231\225 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..dace6bb Binary files /dev/null and "b/apps/web/public/restaurants/\352\265\255\354\210\230\354\262\234\354\231\225 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\352\267\270\354\230\233\353\202\2401947\354\231\225\353\247\214\353\221\220.jpg" "b/apps/web/public/restaurants/\352\267\270\354\230\233\353\202\2401947\354\231\225\353\247\214\353\221\220.jpg" new file mode 100644 index 0000000..2825738 Binary files /dev/null and "b/apps/web/public/restaurants/\352\267\270\354\230\233\353\202\2401947\354\231\225\353\247\214\353\221\220.jpg" differ diff --git "a/apps/web/public/restaurants/\352\275\203\354\240\234\353\271\204\354\271\274\352\265\255\354\210\230.jpg" "b/apps/web/public/restaurants/\352\275\203\354\240\234\353\271\204\354\271\274\352\265\255\354\210\230.jpg" new file mode 100644 index 0000000..c748c2a Binary files /dev/null and "b/apps/web/public/restaurants/\352\275\203\354\240\234\353\271\204\354\271\274\352\265\255\354\210\230.jpg" differ diff --git "a/apps/web/public/restaurants/\353\215\224\354\233\220.jpg" "b/apps/web/public/restaurants/\353\215\224\354\233\220.jpg" new file mode 100644 index 0000000..f3aacb1 Binary files /dev/null and "b/apps/web/public/restaurants/\353\215\224\354\233\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\215\260\354\235\264\353\241\261\354\271\264\355\216\230 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\353\215\260\354\235\264\353\241\261\354\271\264\355\216\230 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..9b85a48 Binary files /dev/null and "b/apps/web/public/restaurants/\353\215\260\354\235\264\353\241\261\354\271\264\355\216\230 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\217\210\354\236\245\352\265\260 \352\264\221\354\232\264\353\214\200\353\263\270\354\240\220.jpg" "b/apps/web/public/restaurants/\353\217\210\354\236\245\352\265\260 \352\264\221\354\232\264\353\214\200\353\263\270\354\240\220.jpg" new file mode 100644 index 0000000..f3a5dec Binary files /dev/null and "b/apps/web/public/restaurants/\353\217\210\354\236\245\352\265\260 \352\264\221\354\232\264\353\214\200\353\263\270\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\224\224\353\215\270\353\246\254 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\353\224\224\353\215\270\353\246\254 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..3f673f9 Binary files /dev/null and "b/apps/web/public/restaurants/\353\224\224\353\215\270\353\246\254 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\230\220\354\231\200\354\247\221\354\210\234\353\214\200\352\265\255.jpg" "b/apps/web/public/restaurants/\353\230\220\354\231\200\354\247\221\354\210\234\353\214\200\352\265\255.jpg" new file mode 100644 index 0000000..2864cb1 Binary files /dev/null and "b/apps/web/public/restaurants/\353\230\220\354\231\200\354\247\221\354\210\234\353\214\200\352\265\255.jpg" differ diff --git "a/apps/web/public/restaurants/\353\241\234\354\212\2442000.jpg" "b/apps/web/public/restaurants/\353\241\234\354\212\2442000.jpg" new file mode 100644 index 0000000..a7da0ea Binary files /dev/null and "b/apps/web/public/restaurants/\353\241\234\354\212\2442000.jpg" differ diff --git "a/apps/web/public/restaurants/\353\247\210\353\243\250.jpg" "b/apps/web/public/restaurants/\353\247\210\353\243\250.jpg" new file mode 100644 index 0000000..53c6470 Binary files /dev/null and "b/apps/web/public/restaurants/\353\247\210\353\243\250.jpg" differ diff --git "a/apps/web/public/restaurants/\353\247\210\354\202\260\354\225\204\352\265\254\354\260\234.jpg" "b/apps/web/public/restaurants/\353\247\210\354\202\260\354\225\204\352\265\254\354\260\234.jpg" new file mode 100644 index 0000000..3447a1c Binary files /dev/null and "b/apps/web/public/restaurants/\353\247\210\354\202\260\354\225\204\352\265\254\354\260\234.jpg" differ diff --git "a/apps/web/public/restaurants/\353\247\210\355\217\254\354\227\260\355\203\204\353\266\210\352\263\240\352\270\260.jpg" "b/apps/web/public/restaurants/\353\247\210\355\217\254\354\227\260\355\203\204\353\266\210\352\263\240\352\270\260.jpg" new file mode 100644 index 0000000..c937d9b Binary files /dev/null and "b/apps/web/public/restaurants/\353\247\210\355\217\254\354\227\260\355\203\204\353\266\210\352\263\240\352\270\260.jpg" differ diff --git "a/apps/web/public/restaurants/\353\247\233\353\266\210.jpg" "b/apps/web/public/restaurants/\353\247\233\353\266\210.jpg" new file mode 100644 index 0000000..e6e1c89 Binary files /dev/null and "b/apps/web/public/restaurants/\353\247\233\353\266\210.jpg" differ diff --git "a/apps/web/public/restaurants/\353\252\205\355\203\234\354\235\264\354\225\274\352\270\260.jpg" "b/apps/web/public/restaurants/\353\252\205\355\203\234\354\235\264\354\225\274\352\270\260.jpg" new file mode 100644 index 0000000..1ca0ff1 Binary files /dev/null and "b/apps/web/public/restaurants/\353\252\205\355\203\234\354\235\264\354\225\274\352\270\260.jpg" differ diff --git "a/apps/web/public/restaurants/\353\252\251\355\217\254\355\231\215\355\203\201.jpg" "b/apps/web/public/restaurants/\353\252\251\355\217\254\355\231\215\355\203\201.jpg" new file mode 100644 index 0000000..4e8e91d Binary files /dev/null and "b/apps/web/public/restaurants/\353\252\251\355\217\254\355\231\215\355\203\201.jpg" differ diff --git "a/apps/web/public/restaurants/\353\257\270\354\213\235\354\204\261.jpg" "b/apps/web/public/restaurants/\353\257\270\354\213\235\354\204\261.jpg" new file mode 100644 index 0000000..6667ca9 Binary files /dev/null and "b/apps/web/public/restaurants/\353\257\270\354\213\235\354\204\261.jpg" differ diff --git "a/apps/web/public/restaurants/\353\257\274\353\223\244\353\240\210\352\265\255\354\213\234.jpg" "b/apps/web/public/restaurants/\353\257\274\353\223\244\353\240\210\352\265\255\354\213\234.jpg" new file mode 100644 index 0000000..23e72ad Binary files /dev/null and "b/apps/web/public/restaurants/\353\257\274\353\223\244\353\240\210\352\265\255\354\213\234.jpg" differ diff --git "a/apps/web/public/restaurants/\353\260\245\354\235\200\355\231\224 \352\264\221\354\232\264\353\214\200\353\263\270\354\240\220.jpg" "b/apps/web/public/restaurants/\353\260\245\354\235\200\355\231\224 \352\264\221\354\232\264\353\214\200\353\263\270\354\240\220.jpg" new file mode 100644 index 0000000..7e4e3cf Binary files /dev/null and "b/apps/web/public/restaurants/\353\260\245\354\235\200\355\231\224 \352\264\221\354\232\264\353\214\200\353\263\270\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\263\204\353\202\234\354\243\274\354\240\220 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\353\263\204\353\202\234\354\243\274\354\240\220 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..7bfdffd Binary files /dev/null and "b/apps/web/public/restaurants/\353\263\204\353\202\234\354\243\274\354\240\220 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\263\270\353\217\204\354\213\234\353\235\275 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" "b/apps/web/public/restaurants/\353\263\270\353\217\204\354\213\234\353\235\275 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" new file mode 100644 index 0000000..5a6514a Binary files /dev/null and "b/apps/web/public/restaurants/\353\263\270\353\217\204\354\213\234\353\235\275 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\353\271\210\353\214\200\353\226\241\354\213\240\354\202\254.jpg" "b/apps/web/public/restaurants/\353\271\210\353\214\200\353\226\241\354\213\240\354\202\254.jpg" new file mode 100644 index 0000000..8c88ce7 Binary files /dev/null and "b/apps/web/public/restaurants/\353\271\210\353\214\200\353\226\241\354\213\240\354\202\254.jpg" differ diff --git "a/apps/web/public/restaurants/\353\271\240\353\247\220.jpg" "b/apps/web/public/restaurants/\353\271\240\353\247\220.jpg" new file mode 100644 index 0000000..7e6da9f Binary files /dev/null and "b/apps/web/public/restaurants/\353\271\240\353\247\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\202\254\352\263\204\354\240\210\352\271\200\353\260\245.jpg" "b/apps/web/public/restaurants/\354\202\254\352\263\204\354\240\210\352\271\200\353\260\245.jpg" new file mode 100644 index 0000000..f791835 Binary files /dev/null and "b/apps/web/public/restaurants/\354\202\254\352\263\204\354\240\210\352\271\200\353\260\245.jpg" differ diff --git "a/apps/web/public/restaurants/\354\203\220\353\237\254\353\246\254\354\225\204 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\354\203\220\353\237\254\353\246\254\354\225\204 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..722b076 Binary files /dev/null and "b/apps/web/public/restaurants/\354\203\220\353\237\254\353\246\254\354\225\204 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\204\234\354\204\240\354\203\235\352\271\200\354\271\230\354\260\234.jpg" "b/apps/web/public/restaurants/\354\204\234\354\204\240\354\203\235\352\271\200\354\271\230\354\260\234.jpg" new file mode 100644 index 0000000..c977676 Binary files /dev/null and "b/apps/web/public/restaurants/\354\204\234\354\204\240\354\203\235\352\271\200\354\271\230\354\260\234.jpg" differ diff --git "a/apps/web/public/restaurants/\354\204\234\354\264\210\354\232\260\353\217\231 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" "b/apps/web/public/restaurants/\354\204\234\354\264\210\354\232\260\353\217\231 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" new file mode 100644 index 0000000..f092f02 Binary files /dev/null and "b/apps/web/public/restaurants/\354\204\234\354\264\210\354\232\260\353\217\231 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\206\214\353\213\264\353\260\245\354\203\201.jpg" "b/apps/web/public/restaurants/\354\206\214\353\213\264\353\260\245\354\203\201.jpg" new file mode 100644 index 0000000..a9f00b1 Binary files /dev/null and "b/apps/web/public/restaurants/\354\206\214\353\213\264\353\260\245\354\203\201.jpg" differ diff --git "a/apps/web/public/restaurants/\354\212\244\353\247\210\354\235\274\353\217\210\352\271\214\354\212\244.jpg" "b/apps/web/public/restaurants/\354\212\244\353\247\210\354\235\274\353\217\210\352\271\214\354\212\244.jpg" new file mode 100644 index 0000000..8db98d5 Binary files /dev/null and "b/apps/web/public/restaurants/\354\212\244\353\247\210\354\235\274\353\217\210\352\271\214\354\212\244.jpg" differ diff --git "a/apps/web/public/restaurants/\354\213\240\354\227\260\353\247\210\353\235\274\355\203\225.jpg" "b/apps/web/public/restaurants/\354\213\240\354\227\260\353\247\210\353\235\274\355\203\225.jpg" new file mode 100644 index 0000000..24fdf86 Binary files /dev/null and "b/apps/web/public/restaurants/\354\213\240\354\227\260\353\247\210\353\235\274\355\203\225.jpg" differ diff --git "a/apps/web/public/restaurants/\354\215\254\353\215\224\354\271\230\355\202\250 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\354\215\254\353\215\224\354\271\230\355\202\250 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..73b8ed4 Binary files /dev/null and "b/apps/web/public/restaurants/\354\215\254\353\215\224\354\271\230\355\202\250 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\225\204 \352\267\270\354\247\221.jpg" "b/apps/web/public/restaurants/\354\225\204 \352\267\270\354\247\221.jpg" new file mode 100644 index 0000000..2a651c7 Binary files /dev/null and "b/apps/web/public/restaurants/\354\225\204 \352\267\270\354\247\221.jpg" differ diff --git "a/apps/web/public/restaurants/\354\227\204\353\247\210\354\206\220\352\271\200\353\260\245&\353\266\204\354\213\235.jpg" "b/apps/web/public/restaurants/\354\227\204\353\247\210\354\206\220\352\271\200\353\260\245&\353\266\204\354\213\235.jpg" new file mode 100644 index 0000000..b53ccdd Binary files /dev/null and "b/apps/web/public/restaurants/\354\227\204\353\247\210\354\206\220\352\271\200\353\260\245&\353\266\204\354\213\235.jpg" differ diff --git "a/apps/web/public/restaurants/\354\230\201\354\266\225\354\202\260\354\240\225\354\234\241\354\213\235\353\213\271.jpg" "b/apps/web/public/restaurants/\354\230\201\354\266\225\354\202\260\354\240\225\354\234\241\354\213\235\353\213\271.jpg" new file mode 100644 index 0000000..a14a8ca Binary files /dev/null and "b/apps/web/public/restaurants/\354\230\201\354\266\225\354\202\260\354\240\225\354\234\241\354\213\235\353\213\271.jpg" differ diff --git "a/apps/web/public/restaurants/\354\230\244\354\216\204.jpg" "b/apps/web/public/restaurants/\354\230\244\354\216\204.jpg" new file mode 100644 index 0000000..43d7adc Binary files /dev/null and "b/apps/web/public/restaurants/\354\230\244\354\216\204.jpg" differ diff --git "a/apps/web/public/restaurants/\354\231\225\355\206\240\354\242\205\354\210\234\353\214\200\352\265\255.jpg" "b/apps/web/public/restaurants/\354\231\225\355\206\240\354\242\205\354\210\234\353\214\200\352\265\255.jpg" new file mode 100644 index 0000000..027e7b1 Binary files /dev/null and "b/apps/web/public/restaurants/\354\231\225\355\206\240\354\242\205\354\210\234\353\214\200\352\265\255.jpg" differ diff --git "a/apps/web/public/restaurants/\354\232\251\352\270\260\354\202\254 \354\213\235\353\213\271.jpg" "b/apps/web/public/restaurants/\354\232\251\352\270\260\354\202\254 \354\213\235\353\213\271.jpg" new file mode 100644 index 0000000..0ae714e Binary files /dev/null and "b/apps/web/public/restaurants/\354\232\251\352\270\260\354\202\254 \354\213\235\353\213\271.jpg" differ diff --git "a/apps/web/public/restaurants/\354\232\260\354\232\260\354\246\210\353\262\240\354\235\264\354\273\244\353\246\254.jpg" "b/apps/web/public/restaurants/\354\232\260\354\232\260\354\246\210\353\262\240\354\235\264\354\273\244\353\246\254.jpg" new file mode 100644 index 0000000..ea49c1f Binary files /dev/null and "b/apps/web/public/restaurants/\354\232\260\354\232\260\354\246\210\353\262\240\354\235\264\354\273\244\353\246\254.jpg" differ diff --git "a/apps/web/public/restaurants/\354\234\244\354\212\244\354\277\241.jpg" "b/apps/web/public/restaurants/\354\234\244\354\212\244\354\277\241.jpg" new file mode 100644 index 0000000..e1fdc2a Binary files /dev/null and "b/apps/web/public/restaurants/\354\234\244\354\212\244\354\277\241.jpg" differ diff --git "a/apps/web/public/restaurants/\354\235\264\354\270\265\354\247\221.jpg" "b/apps/web/public/restaurants/\354\235\264\354\270\265\354\247\221.jpg" new file mode 100644 index 0000000..6fc43e8 Binary files /dev/null and "b/apps/web/public/restaurants/\354\235\264\354\270\265\354\247\221.jpg" differ diff --git "a/apps/web/public/restaurants/\354\235\274\354\213\254\355\205\220\353\217\231 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\354\235\274\354\213\254\355\205\220\353\217\231 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..1ba123b Binary files /dev/null and "b/apps/web/public/restaurants/\354\235\274\354\213\254\355\205\220\353\217\231 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\235\274\354\213\254\355\225\264\354\236\245\352\265\255 \354\233\224\352\263\204\354\240\220.jpg" "b/apps/web/public/restaurants/\354\235\274\354\213\254\355\225\264\354\236\245\352\265\255 \354\233\224\352\263\204\354\240\220.jpg" new file mode 100644 index 0000000..e608f32 Binary files /dev/null and "b/apps/web/public/restaurants/\354\235\274\354\213\254\355\225\264\354\236\245\352\265\255 \354\233\224\352\263\204\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\236\245\354\210\230\352\265\255\354\210\230 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\354\236\245\354\210\230\352\265\255\354\210\230 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..8b7823a Binary files /dev/null and "b/apps/web/public/restaurants/\354\236\245\354\210\230\352\265\255\354\210\230 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\240\204\354\204\244\354\235\230\353\251\270\354\271\230\352\265\255\354\210\230 \354\233\224\352\263\204\354\240\220.jpg" "b/apps/web/public/restaurants/\354\240\204\354\204\244\354\235\230\353\251\270\354\271\230\352\265\255\354\210\230 \354\233\224\352\263\204\354\240\220.jpg" new file mode 100644 index 0000000..5105990 Binary files /dev/null and "b/apps/web/public/restaurants/\354\240\204\354\204\244\354\235\230\353\251\270\354\271\230\352\265\255\354\210\230 \354\233\224\352\263\204\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\240\204\354\243\274\353\260\245\354\203\201\354\214\210\353\260\245.jpg" "b/apps/web/public/restaurants/\354\240\204\354\243\274\353\260\245\354\203\201\354\214\210\353\260\245.jpg" new file mode 100644 index 0000000..7bd6654 Binary files /dev/null and "b/apps/web/public/restaurants/\354\240\204\354\243\274\353\260\245\354\203\201\354\214\210\353\260\245.jpg" differ diff --git "a/apps/web/public/restaurants/\354\240\225\353\213\264\354\206\214\353\260\230.jpg" "b/apps/web/public/restaurants/\354\240\225\353\213\264\354\206\214\353\260\230.jpg" new file mode 100644 index 0000000..3ce0325 Binary files /dev/null and "b/apps/web/public/restaurants/\354\240\225\353\213\264\354\206\214\353\260\230.jpg" differ diff --git "a/apps/web/public/restaurants/\354\244\221\355\231\224\355\230\270\353\260\230\353\213\255\352\260\210\353\271\204 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\354\244\221\355\231\224\355\230\270\353\260\230\353\213\255\352\260\210\353\271\204 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..f2ab129 Binary files /dev/null and "b/apps/web/public/restaurants/\354\244\221\355\231\224\355\230\270\353\260\230\353\213\255\352\260\210\353\271\204 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\247\200\354\247\200\352\263\240 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\354\247\200\354\247\200\352\263\240 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..859e397 Binary files /dev/null and "b/apps/web/public/restaurants/\354\247\200\354\247\200\352\263\240 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\247\204\353\257\270\355\206\265\353\213\255.jpg" "b/apps/web/public/restaurants/\354\247\204\353\257\270\355\206\265\353\213\255.jpg" new file mode 100644 index 0000000..a206d07 Binary files /dev/null and "b/apps/web/public/restaurants/\354\247\204\353\257\270\355\206\265\353\213\255.jpg" differ diff --git "a/apps/web/public/restaurants/\354\247\221\353\260\245.jpg" "b/apps/web/public/restaurants/\354\247\221\353\260\245.jpg" new file mode 100644 index 0000000..4530e9a Binary files /dev/null and "b/apps/web/public/restaurants/\354\247\221\353\260\245.jpg" differ diff --git "a/apps/web/public/restaurants/\354\247\235\355\203\234\354\264\214\353\205\270\352\260\200\353\246\254.jpg" "b/apps/web/public/restaurants/\354\247\235\355\203\234\354\264\214\353\205\270\352\260\200\353\246\254.jpg" new file mode 100644 index 0000000..fbd537a Binary files /dev/null and "b/apps/web/public/restaurants/\354\247\235\355\203\234\354\264\214\353\205\270\352\260\200\353\246\254.jpg" differ diff --git "a/apps/web/public/restaurants/\354\262\234\353\205\204\354\264\210\354\232\260\353\246\254\353\260\200\354\271\274\352\265\255\354\210\230.jpg" "b/apps/web/public/restaurants/\354\262\234\353\205\204\354\264\210\354\232\260\353\246\254\353\260\200\354\271\274\352\265\255\354\210\230.jpg" new file mode 100644 index 0000000..3d43213 Binary files /dev/null and "b/apps/web/public/restaurants/\354\262\234\353\205\204\354\264\210\354\232\260\353\246\254\353\260\200\354\271\274\352\265\255\354\210\230.jpg" differ diff --git "a/apps/web/public/restaurants/\354\262\255\352\263\204 \353\271\250\352\260\204\354\247\221.jpg" "b/apps/web/public/restaurants/\354\262\255\352\263\204 \353\271\250\352\260\204\354\247\221.jpg" new file mode 100644 index 0000000..701328f Binary files /dev/null and "b/apps/web/public/restaurants/\354\262\255\352\263\204 \353\271\250\352\260\204\354\247\221.jpg" differ diff --git "a/apps/web/public/restaurants/\354\271\230\355\202\250\355\201\264\353\237\275 \354\204\261\353\266\201\354\227\255\353\263\270\354\240\220.jpg" "b/apps/web/public/restaurants/\354\271\230\355\202\250\355\201\264\353\237\275 \354\204\261\353\266\201\354\227\255\353\263\270\354\240\220.jpg" new file mode 100644 index 0000000..95abe0a Binary files /dev/null and "b/apps/web/public/restaurants/\354\271\230\355\202\250\355\201\264\353\237\275 \354\204\261\353\266\201\354\227\255\353\263\270\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\271\264\354\270\240\353\260\261 \354\233\224\352\263\204\354\240\220.jpg" "b/apps/web/public/restaurants/\354\271\264\354\270\240\353\260\261 \354\233\224\352\263\204\354\240\220.jpg" new file mode 100644 index 0000000..1843624 Binary files /dev/null and "b/apps/web/public/restaurants/\354\271\264\354\270\240\353\260\261 \354\233\224\352\263\204\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\354\271\264\355\216\230\353\262\240\353\245\264\353\215\260.jpg" "b/apps/web/public/restaurants/\354\271\264\355\216\230\353\262\240\353\245\264\353\215\260.jpg" new file mode 100644 index 0000000..3de5be6 Binary files /dev/null and "b/apps/web/public/restaurants/\354\271\264\355\216\230\353\262\240\353\245\264\353\215\260.jpg" differ diff --git "a/apps/web/public/restaurants/\354\273\244\355\224\274\353\212\224\352\270\260\354\226\265\354\235\230\353\201\214\353\246\274.jpg" "b/apps/web/public/restaurants/\354\273\244\355\224\274\353\212\224\352\270\260\354\226\265\354\235\230\353\201\214\353\246\274.jpg" new file mode 100644 index 0000000..3f6a75a Binary files /dev/null and "b/apps/web/public/restaurants/\354\273\244\355\224\274\353\212\224\352\270\260\354\226\265\354\235\230\353\201\214\353\246\274.jpg" differ diff --git "a/apps/web/public/restaurants/\355\201\260\353\247\230\355\225\240\353\247\244\354\210\234\353\214\200\352\265\255 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\355\201\260\353\247\230\355\225\240\353\247\244\354\210\234\353\214\200\352\265\255 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..65c7775 Binary files /dev/null and "b/apps/web/public/restaurants/\355\201\260\353\247\230\355\225\240\353\247\244\354\210\234\353\214\200\352\265\255 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\355\201\260\354\247\221\353\213\255\352\260\225\354\240\225 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\355\201\260\354\247\221\353\213\255\352\260\225\354\240\225 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..5bac273 Binary files /dev/null and "b/apps/web/public/restaurants/\355\201\260\354\247\221\353\213\255\352\260\225\354\240\225 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\355\212\200\353\247\245.jpg" "b/apps/web/public/restaurants/\355\212\200\353\247\245.jpg" new file mode 100644 index 0000000..be099b4 Binary files /dev/null and "b/apps/web/public/restaurants/\355\212\200\353\247\245.jpg" differ diff --git "a/apps/web/public/restaurants/\355\217\254 \353\240\210\354\230\244.jpg" "b/apps/web/public/restaurants/\355\217\254 \353\240\210\354\230\244.jpg" new file mode 100644 index 0000000..f68aec1 Binary files /dev/null and "b/apps/web/public/restaurants/\355\217\254 \353\240\210\354\230\244.jpg" differ diff --git "a/apps/web/public/restaurants/\355\221\270\353\245\270\354\212\244\354\213\234.jpg" "b/apps/web/public/restaurants/\355\221\270\353\245\270\354\212\244\354\213\234.jpg" new file mode 100644 index 0000000..355cfd2 Binary files /dev/null and "b/apps/web/public/restaurants/\355\221\270\353\245\270\354\212\244\354\213\234.jpg" differ diff --git "a/apps/web/public/restaurants/\355\224\204\353\236\255\355\201\254\353\262\204\352\261\260 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\355\224\204\353\236\255\355\201\254\353\262\204\352\261\260 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..118679a Binary files /dev/null and "b/apps/web/public/restaurants/\355\224\204\353\236\255\355\201\254\353\262\204\352\261\260 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\355\225\230\354\235\264\353\240\210.jpg" "b/apps/web/public/restaurants/\355\225\230\354\235\264\353\240\210.jpg" new file mode 100644 index 0000000..50e42b7 Binary files /dev/null and "b/apps/web/public/restaurants/\355\225\230\354\235\264\353\240\210.jpg" differ diff --git "a/apps/web/public/restaurants/\355\225\234\352\267\270\353\246\207.jpg" "b/apps/web/public/restaurants/\355\225\234\352\267\270\353\246\207.jpg" new file mode 100644 index 0000000..3878cc8 Binary files /dev/null and "b/apps/web/public/restaurants/\355\225\234\352\267\270\353\246\207.jpg" differ diff --git "a/apps/web/public/restaurants/\355\225\234\353\201\274\354\262\240\355\214\220 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\355\225\234\353\201\274\354\262\240\355\214\220 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..67e4991 Binary files /dev/null and "b/apps/web/public/restaurants/\355\225\234\353\201\274\354\262\240\355\214\220 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\355\225\234\353\235\274\354\202\260\352\260\220\354\236\220\355\203\225.jpg" "b/apps/web/public/restaurants/\355\225\234\353\235\274\354\202\260\352\260\220\354\236\220\355\203\225.jpg" new file mode 100644 index 0000000..5d59bea Binary files /dev/null and "b/apps/web/public/restaurants/\355\225\234\353\235\274\354\202\260\352\260\220\354\236\220\355\203\225.jpg" differ diff --git "a/apps/web/public/restaurants/\355\225\234\353\260\251\354\240\204\354\243\274\354\275\251\353\202\230\353\254\274\352\265\255\353\260\245 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" "b/apps/web/public/restaurants/\355\225\234\353\260\251\354\240\204\354\243\274\354\275\251\353\202\230\353\254\274\352\265\255\353\260\245 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" new file mode 100644 index 0000000..d56ea5d Binary files /dev/null and "b/apps/web/public/restaurants/\355\225\234\353\260\251\354\240\204\354\243\274\354\275\251\353\202\230\353\254\274\352\265\255\353\260\245 \352\264\221\354\232\264\353\214\200\354\227\255\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\355\231\224\353\241\234\354\203\201\355\232\214 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" "b/apps/web/public/restaurants/\355\231\224\353\241\234\354\203\201\355\232\214 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" new file mode 100644 index 0000000..deb8f61 Binary files /dev/null and "b/apps/web/public/restaurants/\355\231\224\353\241\234\354\203\201\355\232\214 \352\264\221\354\232\264\353\214\200\354\240\220.jpg" differ diff --git "a/apps/web/public/restaurants/\355\233\204\353\254\270\354\213\235\353\213\271.jpg" "b/apps/web/public/restaurants/\355\233\204\353\254\270\354\213\235\353\213\271.jpg" new file mode 100644 index 0000000..c1abc1e Binary files /dev/null and "b/apps/web/public/restaurants/\355\233\204\353\254\270\354\213\235\353\213\271.jpg" differ diff --git a/apps/web/types/kakao.d.ts b/apps/web/types/kakao.d.ts index 9a8f46f..336868a 100644 --- a/apps/web/types/kakao.d.ts +++ b/apps/web/types/kakao.d.ts @@ -6,10 +6,12 @@ declare namespace kakao { constructor(container: HTMLElement, options: MapOptions); setCenter(latlng: LatLng): void; getCenter(): LatLng; - setLevel(level: number, options?: { animate?: boolean }): void; + setLevel(level: number, options?: { animate?: boolean; anchor?: LatLng }): void; getLevel(): number; panTo(latlng: LatLng): void; setBounds(bounds: LatLngBounds): void; + getBounds(): LatLngBounds; + relayout(): void; } class LatLng { @@ -21,6 +23,8 @@ declare namespace kakao { class LatLngBounds { constructor(sw?: LatLng, ne?: LatLng); extend(latlng: LatLng): void; + getSouthWest(): LatLng; + getNorthEast(): LatLng; } class CustomOverlay { @@ -38,6 +42,15 @@ declare namespace kakao { removeMarker(marker: Marker): void; removeMarkers(markers: Marker[]): void; clear(): void; + setGridSize(size: number): void; + redraw(): void; + } + + interface Cluster { + getMarkers(): Marker[]; + getCenter(): LatLng; + getBounds(): LatLngBounds; + getSize(): number; } class Marker { @@ -45,6 +58,16 @@ declare namespace kakao { setMap(map: Map | null): void; setPosition(latlng: LatLng): void; getPosition(): LatLng; + setImage(image: MarkerImage): void; + setOpacity(opacity: number): void; + } + + class MarkerImage { + constructor( + src: string, + size: Size, + options?: { offset?: Point }, + ); } class Size { @@ -74,6 +97,8 @@ declare namespace kakao { interface MarkerOptions { position: LatLng; map?: Map; + image?: MarkerImage; + opacity?: number; } interface MarkerClustererOptions { @@ -83,6 +108,8 @@ declare namespace kakao { gridSize?: number; minClusterSize?: number; disableClickZoom?: boolean; + calculator?: number[]; + styles?: Array>; } namespace event { @@ -90,15 +117,15 @@ declare namespace kakao { latLng: LatLng; point: Point; } - // 이벤트 인자가 종류별로 달라(map click 은 MouseEvent, marker click 은 인자 없음) - // 호출측에서 명시한 핸들러 시그니처를 그대로 받기 위해 generic 으로 둔다. + // 이벤트 인자가 종류별로 달라(map click 은 MouseEvent, marker click 은 인자 없음, + // clusterclick 은 Cluster). 호출측 핸들러 시그니처를 그대로 받기 위해 generic. function addListener void>( - target: Map | Marker | CustomOverlay, + target: Map | Marker | CustomOverlay | MarkerClusterer, type: string, handler: H, ): void; function removeListener void>( - target: Map | Marker | CustomOverlay, + target: Map | Marker | CustomOverlay | MarkerClusterer, type: string, handler: H, ): void; diff --git "a/docs/\354\213\235\353\213\271_\354\230\210\354\213\234.json" "b/docs/\354\213\235\353\213\271_\354\230\210\354\213\234.json" new file mode 100644 index 0000000..d6e8c9a --- /dev/null +++ "b/docs/\354\213\235\353\213\271_\354\230\210\354\213\234.json" @@ -0,0 +1,96 @@ +{ + "_설명": "DB에 SQL로 식당을 직접 추가할 때 채워야 하는 필드 예시입니다. Restaurant 본체 + Menu + RestaurantCategory + (선택) RestaurantPartnership 까지 한 세트.", + "_참고": { + "id": "Prisma가 평소 cuid를 자동 생성하지만, 직접 SQL로 넣을 때는 본인이 채워야 합니다. gen_random_uuid()::text 또는 의미 있는 슬러그를 사용하세요.", + "updatedAt": "DB 기본값이 없습니다. INSERT 시 NOW()를 명시해야 합니다.", + "createdAt": "DB 기본값(CURRENT_TIMESTAMP)이 있어 생략 가능합니다." + }, + + "restaurant": { + "id": "rst_example_001", + "name": "예시 분식집", + "zone": "KWANGWOON_STATION", + "_zone_옵션": ["KWANGWOON_STATION", "FRONT_GATE", "BACK_GATE", "UICHEON"], + + "latitude": 37.6198, + "longitude": 127.0598, + "address": "서울 노원구 월계로 52길 12", + "phone": "02-943-0000", + "_phone_비고": "없으면 null", + + "businessHours": { + "mon": { "open": "09:00", "close": "22:00" }, + "tue": { "open": "09:00", "close": "22:00" }, + "wed": { "open": "09:00", "close": "22:00" }, + "thu": { "open": "09:00", "close": "22:00" }, + "fri": { "open": "09:00", "close": "22:00" }, + "sat": { "open": "10:00", "close": "21:00" }, + "sun": { "closed": true } + }, + "_businessHours_비고": "키는 mon~sun 소문자. 휴무일은 { \"closed\": true }", + + "isPartner": true, + "_isPartner_비고": "제휴 식당이면 true. true일 때만 partnerships 채우기" + }, + + "menus": [ + { + "id": "menu_example_001", + "name": "즉석떡볶이", + "price": 6500, + "imageUrl": null, + "isSignature": true + }, + { + "id": "menu_example_002", + "name": "참치김밥", + "price": 4500, + "imageUrl": null, + "isSignature": false + }, + { + "id": "menu_example_003", + "name": "라볶이", + "price": 6000, + "imageUrl": "https://example.com/images/rabokki.jpg", + "isSignature": false + } + ], + "_menus_비고": "price는 원 단위 정수. imageUrl 없으면 null. isSignature는 대표 메뉴 표시용.", + + "categories": ["분식", "한식"], + "_categories_비고": "RestaurantCategory 테이블에 매핑됩니다. 등록된 카테고리: 한식, 중식, 일식, 양식, 분식, 카페, 주점. SELECT id FROM \"Category\" WHERE name = '분식' 으로 categoryId를 찾아 넣으세요.", + + "partnerships": [ + { + "college": "ENGINEERING", + "instagramUrl": "https://instagram.com/p/example-engineering" + }, + { + "college": "AI_CONVERGENCE", + "instagramUrl": "https://instagram.com/p/example-ai" + } + ], + "_partnerships_비고": "isPartner=true일 때만. college 옵션: AI_CONVERGENCE, ENGINEERING, NATURAL_SCIENCE, BUSINESS, ELECTRONICS_INFO, HUMANITIES_SOCIAL, POLICY_LAW. 식당 × 단과대학 쌍마다 한 줄.", + + "_SQL_예시": [ + "-- 1) Restaurant", + "INSERT INTO \"Restaurant\" (id, name, zone, latitude, longitude, address, phone, \"businessHours\", \"isPartner\", \"updatedAt\")", + "VALUES ('rst_example_001', '예시 분식집', 'KWANGWOON_STATION', 37.6198, 127.0598, '서울 노원구 월계로 52길 12', '02-943-0000',", + " '{\"mon\":{\"open\":\"09:00\",\"close\":\"22:00\"},\"sun\":{\"closed\":true}}'::jsonb, true, NOW());", + "", + "-- 2) Menu (여러 개)", + "INSERT INTO \"Menu\" (id, \"restaurantId\", name, price, \"isSignature\", \"updatedAt\") VALUES", + " ('menu_example_001', 'rst_example_001', '즉석떡볶이', 6500, true, NOW()),", + " ('menu_example_002', 'rst_example_001', '참치김밥', 4500, false, NOW());", + "", + "-- 3) RestaurantCategory (Category id 조회 후 매핑)", + "INSERT INTO \"RestaurantCategory\" (\"restaurantId\", \"categoryId\")", + "SELECT 'rst_example_001', id FROM \"Category\" WHERE name IN ('분식', '한식');", + "", + "-- 4) RestaurantPartnership (isPartner = true일 때만)", + "INSERT INTO \"RestaurantPartnership\" (id, \"restaurantId\", college, \"instagramUrl\", \"updatedAt\") VALUES", + " ('prt_example_001', 'rst_example_001', 'ENGINEERING', 'https://instagram.com/p/example-engineering', NOW()),", + " ('prt_example_002', 'rst_example_001', 'AI_CONVERGENCE', 'https://instagram.com/p/example-ai', NOW());" + ] +} diff --git a/package.json b/package.json index b1de4f2..b11c08b 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "node": ">=20.0.0", "pnpm": ">=9.0.0" }, + "packageManager": "pnpm@10.33.2", "pnpm": { "onlyBuiltDependencies": [ "@nestjs/core", diff --git a/packages/types/src/menu.ts b/packages/types/src/menu.ts index d5a13bc..36a19ef 100644 --- a/packages/types/src/menu.ts +++ b/packages/types/src/menu.ts @@ -1,8 +1,19 @@ +export interface MenuPriceOption { + /** 옵션 라벨 (예: "소", "중", "대", "1인", "2인분") */ + label: string; + /** 해당 옵션 가격 (원) */ + price: number; +} + export interface Menu { id: string; restaurantId: string; name: string; price: number; + /** 사이즈/옵션별 가격이 여러 개일 때 배열로. 단일 가격이면 null. */ + priceOptions?: MenuPriceOption[] | null; + /** 카테고리 라벨 (예: "찌개류", "커피"). 없으면 "기타" 그룹으로 표시. */ + category?: string | null; imageUrl?: string | null; isSignature: boolean; createdAt: string; diff --git a/packages/types/src/restaurant.ts b/packages/types/src/restaurant.ts index 4d65619..e05c91f 100644 --- a/packages/types/src/restaurant.ts +++ b/packages/types/src/restaurant.ts @@ -7,7 +7,8 @@ export type College = | 'BUSINESS' | 'ELECTRONICS_INFO' | 'HUMANITIES_SOCIAL' - | 'POLICY_LAW'; + | 'POLICY_LAW' + | 'FREE_MAJOR'; // 단과대학 표시명 (UI 노출용). 백엔드 enum 키 ↔ 한글명 매핑. export const COLLEGE_LABELS: Record = { @@ -18,6 +19,7 @@ export const COLLEGE_LABELS: Record = { ELECTRONICS_INFO: '전자정보공과대학', HUMANITIES_SOCIAL: '인문사회과학대학', POLICY_LAW: '정책법학대학', + FREE_MAJOR: '자유전공학부', }; export const COLLEGE_VALUES: College[] = [ @@ -28,6 +30,7 @@ export const COLLEGE_VALUES: College[] = [ 'ELECTRONICS_INFO', 'HUMANITIES_SOCIAL', 'POLICY_LAW', + 'FREE_MAJOR', ]; export interface RestaurantPartnership { @@ -40,6 +43,10 @@ export interface BusinessHours { open?: string; close?: string; closed?: boolean; + /** 점심 등 브레이크 시작 (HH:MM) */ + breakStart?: string; + /** 점심 등 브레이크 종료 (HH:MM) */ + breakEnd?: string; } export interface BusinessHoursMap { @@ -50,6 +57,8 @@ export interface BusinessHoursMap { fri?: BusinessHours; sat?: BusinessHours; sun?: BusinessHours; + /** 격주 휴무 등 정형 표현이 어려운 자유 텍스트 비고. 예: "둘째/넷째 토요일 휴무" */ + note?: string; } export interface Restaurant { @@ -62,6 +71,10 @@ export interface Restaurant { phone?: string | null; businessHours: BusinessHoursMap; isPartner: boolean; + /** 식당 대표 사진 URL (S3) */ + coverImageUrl?: string | null; + /** 체인점 등 공식 메뉴 페이지 URL. 있으면 상세 페이지에서 "공식 메뉴 보기" 버튼 노출. */ + externalMenuUrl?: string | null; partnerships?: RestaurantPartnership[]; createdAt: string; updatedAt: string; @@ -69,12 +82,16 @@ export interface Restaurant { export interface RestaurantListItem extends Restaurant { isOpen: boolean; + /** 마감 상태일 때 다음 영업 시작 시각 (ISO datetime, UTC). 영업 중이면 null. */ + nextOpenAt: string | null; categories: import('./category').Category[]; featuredMenu?: import('./menu').Menu | null; } export interface RestaurantWithRelations extends Restaurant { isOpen: boolean; + /** 마감 상태일 때 다음 영업 시작 시각 (ISO datetime, UTC). 영업 중이면 null. */ + nextOpenAt: string | null; categories: import('./category').Category[]; menus: import('./menu').Menu[]; partnerships: RestaurantPartnership[]; @@ -94,6 +111,8 @@ export interface CreateRestaurantRequest { phone?: string; businessHours: BusinessHoursMap; isPartner?: boolean; + coverImageUrl?: string; + externalMenuUrl?: string; partnerships?: PartnershipInput[]; categoryIds?: string[]; } diff --git a/scripts/seed-restaurants/add-restaurants-v2.sql b/scripts/seed-restaurants/add-restaurants-v2.sql new file mode 100644 index 0000000..f16fc34 --- /dev/null +++ b/scripts/seed-restaurants/add-restaurants-v2.sql @@ -0,0 +1,51 @@ +-- ============================================================ +-- 신규 식당 추가 + 이름 변경 +-- ============================================================ + +BEGIN; + +-- =================== 광운양꼬치 신규 추가 =================== +-- 카카오: 광운로 15, 37.6192, 127.0577, 02-941-9288 +-- 영업: 월-금 10:00-21:00, 주말 휴무 +-- 카테고리: 중식 (양꼬치) +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") +VALUES ( + 'rst_kwoonyangkkochi', + '광운양꼬치', + 'FRONT_GATE', + 37.6191578397147, + 127.057727981824, + '서울 노원구 광운로 15', + '02-941-9288', + '{"mon":{"open":"10:00","close":"21:00"},"tue":{"open":"10:00","close":"21:00"},"wed":{"open":"10:00","close":"21:00"},"thu":{"open":"10:00","close":"21:00"},"fri":{"open":"10:00","close":"21:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, + false, + NOW() +); + +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") +SELECT 'rst_kwoonyangkkochi', id FROM "Category" WHERE name = '중식'; + +-- =================== 김바삭군의 볼카츠마켙 광운대점 → 5일장 햄버거 =================== +-- 카테고리도 일식(카츠) → 양식(버거) 변경 +UPDATE "Restaurant" +SET name = '5일장 햄버거', + "businessHours" = '{"mon":{"open":"11:00","close":"22:00"},"tue":{"open":"11:00","close":"22:00"},"wed":{"open":"11:00","close":"22:00"},"thu":{"open":"11:00","close":"22:00"},"fri":{"open":"11:00","close":"22:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, + "updatedAt" = NOW() +WHERE name = '김바삭군의 볼카츠마켙 광운대점'; + +-- 기존 카테고리(일식) 제거, 양식 추가 +DELETE FROM "RestaurantCategory" +WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '5일장 햄버거'); + +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") +SELECT r.id, c.id +FROM "Restaurant" r, "Category" c +WHERE r.name = '5일장 햄버거' AND c.name = '양식'; + +-- =================== 검증 =================== +SELECT r.id, r.name, r.zone, r.address, r.phone, r."businessHours", + (SELECT array_agg(c.name) FROM "RestaurantCategory" rc JOIN "Category" c ON c.id = rc."categoryId" WHERE rc."restaurantId" = r.id) AS categories +FROM "Restaurant" r +WHERE r.name IN ('광운양꼬치', '5일장 햄버거'); + +COMMIT; diff --git a/scripts/seed-restaurants/add-restaurants-v3.sql b/scripts/seed-restaurants/add-restaurants-v3.sql new file mode 100644 index 0000000..ec01da3 --- /dev/null +++ b/scripts/seed-restaurants/add-restaurants-v3.sql @@ -0,0 +1,65 @@ +-- ============================================================ +-- 샐러리아 광운대점 + CAFE FIASCO 신규 추가 +-- 샐러리아 POLICY_LAW 제휴 매핑까지 +-- ============================================================ + +BEGIN; + +-- =================== 샐러리아 광운대점 =================== +-- 카카오 미등록 → 주소 geocoding 으로 좌표 (37.62239, 127.05932) +-- 영업: 평일 09:30-20:30, 일 휴무 +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") +VALUES ( + 'rst_saleria_kwoondae', + '샐러리아 광운대점', + 'KWANGWOON_STATION', + 37.6223852869365, + 127.059323007018, + '서울 노원구 광운로 53', + NULL, + '{"mon":{"open":"09:30","close":"20:30"},"tue":{"open":"09:30","close":"20:30"},"wed":{"open":"09:30","close":"20:30"},"thu":{"open":"09:30","close":"20:30"},"fri":{"open":"09:30","close":"20:30"},"sat":{"open":"09:30","close":"20:30"},"sun":{"closed":true}}'::jsonb, + true, -- POLICY_LAW 제휴 + NOW() +); + +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") +SELECT 'rst_saleria_kwoondae', id FROM "Category" WHERE name = '양식'; + +-- 샐러리아 POLICY_LAW 제휴 (메모리에 보류돼있던 매핑) +INSERT INTO "RestaurantPartnership" (id, "restaurantId", college, "instagramUrl", "updatedAt") +VALUES ( + gen_random_uuid()::text, + 'rst_saleria_kwoondae', + 'POLICY_LAW'::"College", + 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=8', + NOW() +); + +-- =================== CAFE FIASCO =================== +-- 카카오 미등록 → 주소 geocoding 으로 좌표 (37.62238, 127.06115) +-- 영업: 월-토 09:30-22:00, 일 휴무 +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") +VALUES ( + 'rst_cafe_fiasco', + 'CAFE FIASCO', + 'KWANGWOON_STATION', + 37.6223829150598, + 127.061145482383, + '서울 노원구 석계로15길 17', + NULL, + '{"mon":{"open":"09:30","close":"22:00"},"tue":{"open":"09:30","close":"22:00"},"wed":{"open":"09:30","close":"22:00"},"thu":{"open":"09:30","close":"22:00"},"fri":{"open":"09:30","close":"22:00"},"sat":{"open":"09:30","close":"22:00"},"sun":{"closed":true}}'::jsonb, + false, + NOW() +); + +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") +SELECT 'rst_cafe_fiasco', id FROM "Category" WHERE name = '카페'; + +-- =================== 검증 =================== +SELECT r.id, r.name, r.zone, r.address, r."isPartner", + (SELECT array_agg(c.name) FROM "RestaurantCategory" rc JOIN "Category" c ON c.id = rc."categoryId" WHERE rc."restaurantId" = r.id) AS categories, + (SELECT array_agg(rp.college::text) FROM "RestaurantPartnership" rp WHERE rp."restaurantId" = r.id) AS partnerships +FROM "Restaurant" r +WHERE r.name IN ('샐러리아 광운대점', 'CAFE FIASCO'); + +COMMIT; diff --git a/scripts/seed-restaurants/apply-cover-images.py b/scripts/seed-restaurants/apply-cover-images.py new file mode 100644 index 0000000..8880411 --- /dev/null +++ b/scripts/seed-restaurants/apply-cover-images.py @@ -0,0 +1,46 @@ +""" +apps/web/public/restaurants/ 의 모든 .jpg 파일을 +DB 의 동일 이름 Restaurant 의 coverImageUrl 로 설정하는 SQL 생성. + +URL 은 한글·공백·특수문자를 URL 인코딩해서 저장 (브라우저 호환). +""" +import os +import urllib.parse + +BASE = os.path.join(os.path.dirname(__file__), '..', '..', 'apps', 'web', 'public', 'restaurants') +BASE = os.path.normpath(BASE) + +OUT = os.path.join(os.path.dirname(__file__), 'cover-images-update.sql') + +with open(OUT, 'w', encoding='utf-8') as f: + f.write('-- ============================================================\n') + f.write('-- 대표 사진(coverImageUrl) 일괄 적용\n') + f.write('-- ============================================================\n') + f.write('-- public/restaurants/ 의 *.jpg 파일명을 DB Restaurant.name 으로 매칭.\n') + f.write('-- 파일명 = DB name 가정 (사전에 rename-images.py 로 정리됨).\n') + f.write('-- ============================================================\n\n') + f.write('BEGIN;\n\n') + + count = 0 + for fname in sorted(os.listdir(BASE)): + if not fname.lower().endswith('.jpg'): + continue + # 파일명에서 .jpg 떼고 DB Restaurant.name 으로 사용 + name_stem = fname[:-4] + # 브라우저 호환을 위해 URL 인코딩 (공백·&·괄호·한글 모두) + encoded = urllib.parse.quote(fname) + url = f'/restaurants/{encoded}' + # SQL 단일따옴표 escape + name_sql = name_stem.replace("'", "''") + f.write( + f'UPDATE "Restaurant" SET "coverImageUrl" = \'{url}\', "updatedAt" = NOW() ' + f'WHERE name = \'{name_sql}\';\n' + ) + count += 1 + + f.write('\n-- 검증\n') + f.write('SELECT COUNT(*) AS cover_image_set_count FROM "Restaurant" WHERE "coverImageUrl" IS NOT NULL;\n') + f.write('\nCOMMIT;\n') + +print(f'생성된 UPDATE: {count}개') +print(f'출력 파일: {OUT}') diff --git a/scripts/seed-restaurants/backgate_menus.py b/scripts/seed-restaurants/backgate_menus.py new file mode 100644 index 0000000..5541743 --- /dev/null +++ b/scripts/seed-restaurants/backgate_menus.py @@ -0,0 +1,157 @@ +""" +후문 zone 식당 메뉴 데이터. + +스키마는 kwoondae_menus.py / frontgate_menus.py 와 동일. +사용자가 직접 입력하거나 OCR 한 결과를 누적. + +대부분의 후문 식당은 docs/기술과 경영_메뉴판 정리.xlsx 에 있으나, +누락 식당(한라산감자탕, 후문식당 등)은 여기에 직접 입력. +""" + +BACKGATE_MENUS = { + '한라산감자탕': [ + # 메인메뉴 + ('감자탕 (소/중/대)', 30000, '메인', [ + {'label': '소', 'price': 30000}, + {'label': '중', 'price': 35000}, + {'label': '대', 'price': 40000}, + ]), + ('해물뼈찜 (중/대)', 40000, '메인', [ + {'label': '중', 'price': 40000}, + {'label': '대', 'price': 50000}, + ]), + ('누룽지백숙 (국내산, 하루전 예약)', 70000, '메인', None), + ('뼈해장국', 10000, '메인', None), + ('육칼국수 + 공기밥', 10000, '메인', None), + ('한우 소머리 국밥', 10000, '메인', None), + # 계절메뉴 + ('콩국수', 9000, '계절메뉴', None), + ('냉면', 8000, '계절메뉴', None), + # 추가메뉴 + ('뼈 추가', 15000, '추가', None), + ('우거지 추가', 1000, '추가', None), + ('사리 추가 (당면)', 1000, '추가', None), + ('사리 추가 (라면)', 1000, '추가', None), + # 밥류 + ('볶음밥', 2000, '밥류', None), + ('공기밥', 1000, '밥류', None), + # 주류 + ('막걸리', 4000, '주류·음료', None), + ('소주', 5000, '주류·음료', None), + ('한라산', 6000, '주류·음료', None), + ('맥주', 5000, '주류·음료', None), + ('음료수', 2000, '주류·음료', None), + ], + + '후문식당': [ + # 라면·찌개 + ('라면', 4500, '라면·찌개', None), + ('라면 + 공기밥', 5000, '라면·찌개', None), + ('떡/만두/치즈 라면 + 공기밥', 5500, '라면·찌개', None), + ('된장찌개', 6500, '라면·찌개', None), + ('순두부찌개', 6500, '라면·찌개', None), + ('치즈순두부찌개', 7000, '라면·찌개', None), + ('쫄면순두부찌개', 7000, '라면·찌개', None), + ('김치참치찌개두부', 7000, '라면·찌개', None), + # 비빔밥·볶음밥 + ('비빔밥', 6500, '비빔밥·볶음밥', None), + ('돌솥비빔밥', 7000, '비빔밥·볶음밥', None), + ('참치비빔밥', 7000, '비빔밥·볶음밥', None), + ('떡만둣국 + 공기밥', 7000, '비빔밥·볶음밥', None), + ('김치볶음밥/덮밥', 7000, '비빔밥·볶음밥', None), + ('참치볶음밥/덮밥', 7000, '비빔밥·볶음밥', None), + ('새우볶음밥', 7000, '비빔밥·볶음밥', None), + ('알밥', 7000, '비빔밥·볶음밥', None), + ('치즈알밥', 8000, '비빔밥·볶음밥', None), + # 덮밥 + ('제육볶음/덮밥', 7500, '덮밥', None), + ('소불고기볶음/덮밥', 8000, '덮밥', None), + ('김치짜글이 + 계란후라이', 7500, '덮밥', None), + ('갈비덮밥 + 계란후라이', 8000, '덮밥', None), + ('회덮밥', 7000, '덮밥', None), + ('매콤참치마요', 7000, '덮밥', None), + ('카레덮밥', 7000, '덮밥', None), + ('카레덮밥 + 치즈', 8000, '덮밥', None), + ('카레덮밥 + 우동', 9000, '덮밥', None), + ('치즈덮밥', 7500, '덮밥', None), + ('치즈제육덮밥', 8500, '덮밥', None), + ('닭갈비덮밥', 7500, '덮밥', None), + ('찜닭덮밥', 7500, '덮밥', None), + ('장조림덮밥', 7500, '덮밥', None), + # 국·탕 + ('육개장', 8000, '국·탕', None), + ('갈비탕', 8000, '국·탕', None), + ('닭볶음탕', 8000, '국·탕', None), + # 뚝배기 + ('소불뚝', 8000, '뚝배기', None), + ('제육뚝', 8000, '뚝배기', None), + ('부대뚝', 8000, '뚝배기', None), + ('만두뚝', 8000, '뚝배기', None), + ('계란찜', 8000, '뚝배기', None), # ※ 메뉴판에 계란찜 7,000원도 있어 확인 필요 + # 분식 + ('치즈스파게티', 7500, '분식', None), + ('치즈라볶이', 7500, '분식', None), + ('콩나물불고기 (콩불)', 7500, '분식', None), + ('오징어콩나물 (오콩)', 9000, '분식', None), + ('오삼콩나물 (오삼콩)', 9000, '분식', None), + ('오삼볶음/덮밥', 9500, '분식', None), + ('오징어볶음/덮밥', 9500, '분식', None), + # 별미 + ('육회비빔밥 (보통/특)', 8000, '별미', [ + {'label': '보통', 'price': 8000}, + {'label': '특', 'price': 9000}, + ]), + # 추가옵션 + ('계란후라이', 1000, '추가옵션', None), + ('슬라이스치즈', 500, '추가옵션', None), + ('모짜렐라치즈', 1000, '추가옵션', None), + ], + + '포 레오': [ + # PHO (쌀국수) + ('포레오쌀국수', 9500, 'PHO', None), + ('매운해장쌀국수', 10500, 'PHO', None), + ('닭껍질튀김쌀국수', 9500, 'PHO', None), + ('매운닭껍질쌀국수', 10500, 'PHO', None), + ('매운곱창쌀국수', 14000, 'PHO', None), + ('불향쌀국수', 9900, 'PHO', None), + ('스지쌀국수', 14000, 'PHO', None), + ('매운스지쌀국수', 15000, 'PHO', None), + ('똠양쌀국수', 10500, 'PHO', None), + ('해산물쌀국수', 9900, 'PHO', None), + ('토마토바질쌀국수', 9500, 'PHO', None), + ('팟타이', 10500, 'PHO', None), + ('분짜', 12500, 'PHO', None), + ('면 추가', 1000, 'PHO', None), + # RICE (밥류) + ('소고기볶음밥', 9500, 'RICE', None), + ('새우볶음밥', 9500, 'RICE', None), + ('계란마늘볶음밥', 9500, 'RICE', None), + ('나시고랭', 9500, 'RICE', None), + ('BBQ라이스', 9500, 'RICE', None), + ('해산물볶음밥', 9500, 'RICE', None), + ('돼지고기바질덮밥', 9500, 'RICE', None), + ('레드커리덮밥', 10500, 'RICE', None), + ('볶음밥 추가', 1500, 'RICE', None), + # SIDE (사이드) + ('짜조 (3pcs)', 4500, 'SIDE', None), + ('꽃게네트', 7900, 'SIDE', None), + ('닭튀김 (2pcs)', 4000, 'SIDE', None), + ('돼지고기튀김', 5900, 'SIDE', None), + ('닭껍질교자 (5pcs)', 6900, 'SIDE', None), + ('모듬튀김', 13000, 'SIDE', None), + ('버팔로윙 (5pcs)', 5900, 'SIDE', None), + ('스프링롤', 8000, 'SIDE', None), + ('공심채', 8000, 'SIDE', None), + ('새우고로케 (2pcs/4pcs)', 4900, 'SIDE', [ + {'label': '2pcs', 'price': 4900}, + {'label': '4pcs', 'price': 7900}, + ]), + ('감자말이새우튀김 (5pcs)', 5900, 'SIDE', None), + ('오징어튀김 (5pcs)', 6900, 'SIDE', None), + ('치즈스틱 (3pcs)', 5500, 'SIDE', None), + ('치킨가라야게 (10pcs)', 8900, 'SIDE', None), + ('계란후라이', 1000, 'SIDE', None), + ('공기밥', 1000, 'SIDE', None), + ], +} diff --git a/scripts/seed-restaurants/business-hours-update-v2.sql b/scripts/seed-restaurants/business-hours-update-v2.sql new file mode 100644 index 0000000..9f45c58 --- /dev/null +++ b/scripts/seed-restaurants/business-hours-update-v2.sql @@ -0,0 +1,73 @@ +-- ============================================================ +-- 영업시간 v2 업데이트 — 브레이크타임 + 자정 넘김 지원 +-- ============================================================ +-- 자정 넘김: close < open 으로 표기 (예: 14:30 ~ 02:30) +-- 브레이크: breakStart / breakEnd 필드 (옵션) +-- ============================================================ + +BEGIN; + +-- =================== 신규 확인된 6개 =================== + +-- 인생아구찜: 매일 10:00 ~ 01:00 (자정 넘김) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"01:00"},"tue":{"open":"10:00","close":"01:00"},"wed":{"open":"10:00","close":"01:00"},"thu":{"open":"10:00","close":"01:00"},"fri":{"open":"10:00","close":"01:00"},"sat":{"open":"10:00","close":"01:00"},"sun":{"open":"10:00","close":"01:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '인생아구찜 월계점'; + +-- 친친: 매일 11:00-22:00, 브레이크 15:00-16:30 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"},"tue":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"},"wed":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"},"thu":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"},"fri":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"},"sat":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"},"sun":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '친친'; + +-- 커피는기억의끌림: 월-토 08-22, 일 09-22 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"08:00","close":"22:00"},"tue":{"open":"08:00","close":"22:00"},"wed":{"open":"08:00","close":"22:00"},"thu":{"open":"08:00","close":"22:00"},"fri":{"open":"08:00","close":"22:00"},"sat":{"open":"08:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '커피는기억의끌림'; + +-- 명태이야기: 매일 10-22 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"22:00"},"tue":{"open":"10:00","close":"22:00"},"wed":{"open":"10:00","close":"22:00"},"thu":{"open":"10:00","close":"22:00"},"fri":{"open":"10:00","close":"22:00"},"sat":{"open":"10:00","close":"22:00"},"sun":{"open":"10:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '명태이야기'; + +-- 미미식당: 월-토 11-22 (브레이크 15-16), 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:00"},"tue":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:00"},"wed":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:00"},"thu":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:00"},"fri":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:00"},"sat":{"open":"11:00","close":"22:00","breakStart":"15:00","breakEnd":"16:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '미미식당 월계점'; + +-- 놀부부대찌개: 월/화/수/목/토/일 10:30-21, 금 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"21:00"},"tue":{"open":"10:30","close":"21:00"},"wed":{"open":"10:30","close":"21:00"},"thu":{"open":"10:30","close":"21:00"},"fri":{"closed":true},"sat":{"open":"10:30","close":"21:00"},"sun":{"open":"10:30","close":"21:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '놀부부대찌개 광운대역점'; + +-- =================== 이전에 단순화했던 곳 — 브레이크 정확히 반영 =================== + +-- 윤스쿡: 평일 10:30-19:30 (브레이크 15:00-16:30), 주말 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"19:30","breakStart":"15:00","breakEnd":"16:30"},"tue":{"open":"10:30","close":"19:30","breakStart":"15:00","breakEnd":"16:30"},"wed":{"open":"10:30","close":"19:30","breakStart":"15:00","breakEnd":"16:30"},"thu":{"open":"10:30","close":"19:30","breakStart":"15:00","breakEnd":"16:30"},"fri":{"open":"10:30","close":"19:30","breakStart":"15:00","breakEnd":"16:30"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '윤스쿡'; + +-- 병천청년순대: 월-토 10:00-20:00 (브레이크 14:30-16:30), 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"20:00","breakStart":"14:30","breakEnd":"16:30"},"tue":{"open":"10:00","close":"20:00","breakStart":"14:30","breakEnd":"16:30"},"wed":{"open":"10:00","close":"20:00","breakStart":"14:30","breakEnd":"16:30"},"thu":{"open":"10:00","close":"20:00","breakStart":"14:30","breakEnd":"16:30"},"fri":{"open":"10:00","close":"20:00","breakStart":"14:30","breakEnd":"16:30"},"sat":{"open":"10:00","close":"20:00","breakStart":"14:30","breakEnd":"16:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '병천청년순대 광운대점'; + +-- 스시덤: 화-일 10:30-21:30 (브레이크 15:00-16:00), 월 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"closed":true},"tue":{"open":"10:30","close":"21:30","breakStart":"15:00","breakEnd":"16:00"},"wed":{"open":"10:30","close":"21:30","breakStart":"15:00","breakEnd":"16:00"},"thu":{"open":"10:30","close":"21:30","breakStart":"15:00","breakEnd":"16:00"},"fri":{"open":"10:30","close":"21:30","breakStart":"15:00","breakEnd":"16:00"},"sat":{"open":"10:30","close":"21:30","breakStart":"15:00","breakEnd":"16:00"},"sun":{"open":"10:30","close":"21:30","breakStart":"15:00","breakEnd":"16:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '스시덤'; + +-- 이찌마김치: 평일 10:00-20:00 (브레이크 16:00-17:30), 토 11-16, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"20:00","breakStart":"16:00","breakEnd":"17:30"},"tue":{"open":"10:00","close":"20:00","breakStart":"16:00","breakEnd":"17:30"},"wed":{"open":"10:00","close":"20:00","breakStart":"16:00","breakEnd":"17:30"},"thu":{"open":"10:00","close":"20:00","breakStart":"16:00","breakEnd":"17:30"},"fri":{"open":"10:00","close":"20:00","breakStart":"16:00","breakEnd":"17:30"},"sat":{"open":"11:00","close":"16:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '이찌마 김치'; + +-- 서선생김치찜: 매일 11-22 (브레이크 14:30-17:00) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"},"tue":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"},"wed":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"},"thu":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"},"fri":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"},"sat":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"},"sun":{"open":"11:00","close":"22:00","breakStart":"14:30","breakEnd":"17:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '서선생김치찜'; + +-- =================== 자정 종료 → 00:00 으로 통일 =================== + +-- 영축산정육식당: 매일 12:00 ~ 00:00 (자정) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:00","close":"00:00"},"tue":{"open":"12:00","close":"00:00"},"wed":{"open":"12:00","close":"00:00"},"thu":{"open":"12:00","close":"00:00"},"fri":{"open":"12:00","close":"00:00"},"sat":{"open":"12:00","close":"00:00"},"sun":{"open":"12:00","close":"00:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '영축산정육식당'; + +-- 돈장군: 매일 12:00 ~ 00:00 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:00","close":"00:00"},"tue":{"open":"12:00","close":"00:00"},"wed":{"open":"12:00","close":"00:00"},"thu":{"open":"12:00","close":"00:00"},"fri":{"open":"12:00","close":"00:00"},"sat":{"open":"12:00","close":"00:00"},"sun":{"open":"12:00","close":"00:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '돈장군 광운대본점'; + +-- 화로상회: 14:00 ~ 00:00, 화 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"14:00","close":"00:00"},"tue":{"closed":true},"wed":{"open":"14:00","close":"00:00"},"thu":{"open":"14:00","close":"00:00"},"fri":{"open":"14:00","close":"00:00"},"sat":{"open":"14:00","close":"00:00"},"sun":{"open":"14:00","close":"00:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '화로상회 광운대점'; + +-- 카페베르데: 학기중 매일 08:30 ~ 00:00 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"08:30","close":"00:00"},"tue":{"open":"08:30","close":"00:00"},"wed":{"open":"08:30","close":"00:00"},"thu":{"open":"08:30","close":"00:00"},"fri":{"open":"08:30","close":"00:00"},"sat":{"open":"08:30","close":"00:00"},"sun":{"open":"08:30","close":"00:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '카페베르데'; + +-- =================== 자정 넘김 → 0X:XX 표기 =================== + +-- 썬더치킨: 매일 14:30 ~ 02:30 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"14:30","close":"02:30"},"tue":{"open":"14:30","close":"02:30"},"wed":{"open":"14:30","close":"02:30"},"thu":{"open":"14:30","close":"02:30"},"fri":{"open":"14:30","close":"02:30"},"sat":{"open":"14:30","close":"02:30"},"sun":{"open":"14:30","close":"02:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '썬더치킨 광운대점'; + +-- =================== 검증 =================== + +SELECT name, "businessHours" FROM "Restaurant" WHERE name IN ( + '인생아구찜 월계점', '친친', '미미식당 월계점', '놀부부대찌개 광운대역점', + '썬더치킨 광운대점', '영축산정육식당', '윤스쿡' +) ORDER BY name; + +COMMIT; diff --git a/scripts/seed-restaurants/business-hours-update.sql b/scripts/seed-restaurants/business-hours-update.sql new file mode 100644 index 0000000..e2cb3a9 --- /dev/null +++ b/scripts/seed-restaurants/business-hours-update.sql @@ -0,0 +1,184 @@ +-- ============================================================ +-- 식당 영업시간 업데이트 (사용자 직접 조사, 학기중 기준) +-- 2026-05-11 +-- ============================================================ +-- 학기중 기준으로 적용. 방학과 다른 식당은 학기중 시간만 반영. +-- 브레이크타임은 현재 schema 미지원 → open~close 로 단순화. +-- 자정 넘어가는 시간은 23:59 로 마감 처리. +-- ============================================================ + +BEGIN; + +-- =================== 매일 동일 시간 =================== + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"22:00"},"tue":{"open":"10:00","close":"22:00"},"wed":{"open":"10:00","close":"22:00"},"thu":{"open":"10:00","close":"22:00"},"fri":{"open":"10:00","close":"22:00"},"sat":{"open":"10:00","close":"22:00"},"sun":{"open":"10:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '가마솥뼈다귀감자탕'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:30","close":"22:00"},"tue":{"open":"11:30","close":"22:00"},"wed":{"open":"11:30","close":"22:00"},"thu":{"open":"11:30","close":"22:00"},"fri":{"open":"11:30","close":"22:00"},"sat":{"open":"11:30","close":"22:00"},"sun":{"open":"11:30","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '마산아구찜'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"08:00","close":"20:00"},"tue":{"open":"08:00","close":"20:00"},"wed":{"open":"08:00","close":"20:00"},"thu":{"open":"08:00","close":"20:00"},"fri":{"open":"08:00","close":"20:00"},"sat":{"open":"08:00","close":"20:00"},"sun":{"open":"08:00","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '엄마손김밥&분식'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"00:00","close":"23:59"},"tue":{"open":"00:00","close":"23:59"},"wed":{"open":"00:00","close":"23:59"},"thu":{"open":"00:00","close":"23:59"},"fri":{"open":"00:00","close":"23:59"},"sat":{"open":"00:00","close":"23:59"},"sun":{"open":"00:00","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '큰맘할매순대국 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"07:00","close":"23:00"},"tue":{"open":"07:00","close":"23:00"},"wed":{"open":"07:00","close":"23:00"},"thu":{"open":"07:00","close":"23:00"},"fri":{"open":"07:00","close":"23:00"},"sat":{"open":"07:00","close":"23:00"},"sun":{"open":"07:00","close":"23:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '한방전주콩나물국밥 광운대역점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"21:30"},"tue":{"open":"11:00","close":"21:30"},"wed":{"open":"11:00","close":"21:30"},"thu":{"open":"11:00","close":"21:30"},"fri":{"open":"11:00","close":"21:30"},"sat":{"open":"11:00","close":"21:30"},"sun":{"open":"11:00","close":"21:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '마포연탄불고기'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:00","close":"23:59"},"tue":{"open":"12:00","close":"23:59"},"wed":{"open":"12:00","close":"23:59"},"thu":{"open":"12:00","close":"23:59"},"fri":{"open":"12:00","close":"23:59"},"sat":{"open":"12:00","close":"23:59"},"sun":{"open":"12:00","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '영축산정육식당'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:30","close":"23:30"},"tue":{"open":"12:30","close":"23:30"},"wed":{"open":"12:30","close":"23:30"},"thu":{"open":"12:30","close":"23:30"},"fri":{"open":"12:30","close":"23:30"},"sat":{"open":"12:30","close":"23:30"},"sun":{"open":"12:30","close":"23:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '진미통닭'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"22:00"},"tue":{"open":"10:00","close":"22:00"},"wed":{"open":"10:00","close":"22:00"},"thu":{"open":"10:00","close":"22:00"},"fri":{"open":"10:00","close":"22:00"},"sat":{"open":"10:00","close":"22:00"},"sun":{"open":"10:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '마루'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"21:00"},"tue":{"open":"10:30","close":"21:00"},"wed":{"open":"10:30","close":"21:00"},"thu":{"open":"10:30","close":"21:00"},"fri":{"open":"10:30","close":"21:00"},"sat":{"open":"10:30","close":"21:00"},"sun":{"open":"10:30","close":"21:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '한끼철판 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:30"},"tue":{"open":"10:00","close":"21:30"},"wed":{"open":"10:00","close":"21:30"},"thu":{"open":"10:00","close":"21:30"},"fri":{"open":"10:00","close":"21:30"},"sat":{"open":"10:00","close":"21:30"},"sun":{"open":"10:00","close":"21:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '신연마라탕'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:30"},"tue":{"open":"10:30","close":"20:30"},"wed":{"open":"10:30","close":"20:30"},"thu":{"open":"10:30","close":"20:30"},"fri":{"open":"10:30","close":"20:30"},"sat":{"open":"10:30","close":"20:30"},"sun":{"open":"10:30","close":"20:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '일심텐동 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:30"},"tue":{"open":"10:00","close":"21:30"},"wed":{"open":"10:00","close":"21:30"},"thu":{"open":"10:00","close":"21:30"},"fri":{"open":"10:00","close":"21:30"},"sat":{"open":"10:00","close":"21:30"},"sun":{"open":"10:00","close":"21:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '프랭크버거 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00"},"tue":{"open":"11:00","close":"22:00"},"wed":{"open":"11:00","close":"22:00"},"thu":{"open":"11:00","close":"22:00"},"fri":{"open":"11:00","close":"22:00"},"sat":{"open":"11:00","close":"22:00"},"sun":{"open":"11:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '카츠백 월계점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"08:30","close":"23:59"},"tue":{"open":"08:30","close":"23:59"},"wed":{"open":"08:30","close":"23:59"},"thu":{"open":"08:30","close":"23:59"},"fri":{"open":"08:30","close":"23:59"},"sat":{"open":"08:30","close":"23:59"},"sun":{"open":"08:30","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '카페베르데'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:00"},"tue":{"open":"10:30","close":"20:00"},"wed":{"open":"10:30","close":"20:00"},"thu":{"open":"10:30","close":"20:00"},"fri":{"open":"10:30","close":"20:00"},"sat":{"open":"10:30","close":"20:00"},"sun":{"open":"10:30","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '미식성'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:30"},"tue":{"open":"11:00","close":"20:30"},"wed":{"open":"11:00","close":"20:30"},"thu":{"open":"11:00","close":"20:30"},"fri":{"open":"11:00","close":"20:30"},"sat":{"open":"11:00","close":"20:30"},"sun":{"open":"11:00","close":"20:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '국수천왕 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:30"},"tue":{"open":"10:30","close":"20:30"},"wed":{"open":"10:30","close":"20:30"},"thu":{"open":"10:30","close":"20:30"},"fri":{"open":"10:30","close":"20:30"},"sat":{"open":"10:30","close":"20:30"},"sun":{"open":"10:30","close":"20:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '포 레오'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"00:00","close":"23:59"},"tue":{"open":"00:00","close":"23:59"},"wed":{"open":"00:00","close":"23:59"},"thu":{"open":"00:00","close":"23:59"},"fri":{"open":"00:00","close":"23:59"},"sat":{"open":"00:00","close":"23:59"},"sun":{"open":"00:00","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '데이롱카페 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"08:00","close":"17:00"},"tue":{"open":"08:00","close":"17:00"},"wed":{"open":"08:00","close":"17:00"},"thu":{"open":"08:00","close":"17:00"},"fri":{"open":"08:00","close":"17:00"},"sat":{"open":"08:00","close":"17:00"},"sun":{"open":"08:00","close":"17:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = 'CORD Jr.'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"06:00","close":"22:00"},"tue":{"open":"06:00","close":"22:00"},"wed":{"open":"06:00","close":"22:00"},"thu":{"open":"06:00","close":"22:00"},"fri":{"open":"06:00","close":"22:00"},"sat":{"open":"06:00","close":"22:00"},"sun":{"open":"06:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '일심해장국 월계점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:30","close":"22:00"},"tue":{"open":"09:30","close":"22:00"},"wed":{"open":"09:30","close":"22:00"},"thu":{"open":"09:30","close":"22:00"},"fri":{"open":"09:30","close":"22:00"},"sat":{"open":"09:30","close":"22:00"},"sun":{"open":"09:30","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '용기사 식당'; + +-- 썬더치킨: 14:30-02:30 매일 → schema 한계로 자정 부분 손실 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"14:30","close":"23:59"},"tue":{"open":"14:30","close":"23:59"},"wed":{"open":"14:30","close":"23:59"},"thu":{"open":"14:30","close":"23:59"},"fri":{"open":"14:30","close":"23:59"},"sat":{"open":"14:30","close":"23:59"},"sun":{"open":"14:30","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '썬더치킨 광운대점'; + +-- =================== 특정 요일 휴무 =================== + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"20:00"},"tue":{"closed":true},"wed":{"open":"10:00","close":"20:00"},"thu":{"open":"10:00","close":"20:00"},"fri":{"open":"10:00","close":"20:00"},"sat":{"open":"10:00","close":"20:00"},"sun":{"open":"10:00","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '사계절김밥'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:30"},"tue":{"open":"10:00","close":"21:30"},"wed":{"open":"10:00","close":"21:30"},"thu":{"closed":true},"fri":{"open":"10:00","close":"21:30"},"sat":{"open":"10:00","close":"21:30"},"sun":{"open":"10:00","close":"21:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '한우가마솥소머리곰탕'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00"},"tue":{"open":"11:00","close":"22:00"},"wed":{"closed":true},"thu":{"open":"11:00","close":"22:00"},"fri":{"open":"11:00","close":"22:00"},"sat":{"open":"11:00","close":"22:00"},"sun":{"open":"11:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '더원'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:00","close":"21:00"},"tue":{"open":"09:00","close":"21:00"},"wed":{"open":"09:00","close":"21:00"},"thu":{"open":"09:00","close":"21:00"},"fri":{"open":"09:00","close":"21:00"},"sat":{"open":"09:00","close":"21:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '전주밥상쌈밥'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:00"},"tue":{"open":"10:00","close":"21:00"},"wed":{"open":"10:00","close":"21:00"},"thu":{"open":"10:00","close":"21:00"},"fri":{"open":"10:00","close":"21:00"},"sat":{"open":"10:00","close":"21:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '그옛날1947왕만두'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:00","close":"22:30"},"tue":{"open":"12:00","close":"22:30"},"wed":{"open":"12:00","close":"22:30"},"thu":{"open":"12:00","close":"22:30"},"fri":{"open":"12:00","close":"22:30"},"sat":{"open":"12:00","close":"22:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '큰집닭강정 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:00"},"tue":{"open":"10:00","close":"21:00"},"wed":{"open":"10:00","close":"21:00"},"thu":{"open":"10:00","close":"21:00"},"fri":{"open":"10:00","close":"21:00"},"sat":{"open":"10:00","close":"21:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '더진국 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"14:00","close":"23:59"},"tue":{"closed":true},"wed":{"open":"14:00","close":"23:59"},"thu":{"open":"14:00","close":"23:59"},"fri":{"open":"14:00","close":"23:59"},"sat":{"open":"14:00","close":"23:59"},"sun":{"open":"14:00","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '화로상회 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:00"},"tue":{"open":"11:00","close":"20:00"},"wed":{"open":"11:00","close":"20:00"},"thu":{"open":"11:00","close":"20:00"},"fri":{"open":"11:00","close":"20:00"},"sat":{"closed":true},"sun":{"open":"11:00","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '부리또잇'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"21:30"},"tue":{"open":"10:30","close":"21:30"},"wed":{"open":"10:30","close":"21:30"},"thu":{"open":"10:30","close":"21:30"},"fri":{"open":"10:30","close":"21:30"},"sat":{"open":"10:30","close":"21:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '푸른스시'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"18:00"},"tue":{"open":"11:00","close":"18:00"},"wed":{"open":"11:00","close":"18:00"},"thu":{"open":"11:00","close":"18:00"},"fri":{"open":"11:00","close":"18:00"},"sat":{"open":"11:00","close":"18:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '지지고 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"07:30","close":"19:30"},"tue":{"open":"07:30","close":"19:30"},"wed":{"open":"07:30","close":"19:30"},"thu":{"open":"07:30","close":"19:30"},"fri":{"open":"07:30","close":"19:30"},"sat":{"open":"07:30","close":"19:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '광운커피'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:00"},"tue":{"open":"11:00","close":"20:00"},"wed":{"open":"11:00","close":"20:00"},"thu":{"open":"11:00","close":"20:00"},"fri":{"open":"11:00","close":"20:00"},"sat":{"open":"11:00","close":"20:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '중화호반닭갈비 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"23:00"},"tue":{"open":"10:00","close":"23:00"},"wed":{"open":"10:00","close":"23:00"},"thu":{"open":"10:00","close":"23:00"},"fri":{"open":"10:00","close":"23:00"},"sat":{"open":"10:00","close":"23:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '경대컵밥 광운대점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:00"},"tue":{"open":"11:00","close":"20:00"},"wed":{"open":"11:00","close":"20:00"},"thu":{"open":"11:00","close":"20:00"},"fri":{"open":"11:00","close":"20:00"},"sat":{"open":"11:00","close":"20:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '천년초우리밀칼국수'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:30","close":"21:30"},"tue":{"open":"12:30","close":"21:30"},"wed":{"open":"12:30","close":"21:30"},"thu":{"open":"12:30","close":"21:30"},"fri":{"open":"12:30","close":"21:30"},"sat":{"open":"12:30","close":"21:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '목포홍탁'; + +-- 한라산감자탕: 매일 10:30-20, 수 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:00"},"tue":{"open":"10:30","close":"20:00"},"wed":{"closed":true},"thu":{"open":"10:30","close":"20:00"},"fri":{"open":"10:30","close":"20:00"},"sat":{"open":"10:30","close":"20:00"},"sun":{"open":"10:30","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '한라산감자탕'; + +-- 스시덤: 화-일 10:30-21:30 (브레이크 15-16 단순화), 월 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"closed":true},"tue":{"open":"10:30","close":"21:30"},"wed":{"open":"10:30","close":"21:30"},"thu":{"open":"10:30","close":"21:30"},"fri":{"open":"10:30","close":"21:30"},"sat":{"open":"10:30","close":"21:30"},"sun":{"open":"10:30","close":"21:30"}}'::jsonb, "updatedAt" = NOW() WHERE name = '스시덤'; + +-- 병천청년순대: 월-토 10-20 (브레이크 14:30-16:30 단순화), 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"20:00"},"tue":{"open":"10:00","close":"20:00"},"wed":{"open":"10:00","close":"20:00"},"thu":{"open":"10:00","close":"20:00"},"fri":{"open":"10:00","close":"20:00"},"sat":{"open":"10:00","close":"20:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '병천청년순대 광운대점'; + +-- 서선생김치찜: 매일 11-22 (브레이크 14:30-17 단순화) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00"},"tue":{"open":"11:00","close":"22:00"},"wed":{"open":"11:00","close":"22:00"},"thu":{"open":"11:00","close":"22:00"},"fri":{"open":"11:00","close":"22:00"},"sat":{"open":"11:00","close":"22:00"},"sun":{"open":"11:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '서선생김치찜'; + +-- =================== 주말 휴무 (월-금) =================== + +-- 윤스쿡: 평일 10:30-19:30 (브레이크 15-16:30 단순화), 주말 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"19:30"},"tue":{"open":"10:30","close":"19:30"},"wed":{"open":"10:30","close":"19:30"},"thu":{"open":"10:30","close":"19:30"},"fri":{"open":"10:30","close":"19:30"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '윤스쿡'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:30"},"tue":{"open":"10:30","close":"20:30"},"wed":{"open":"10:30","close":"20:30"},"thu":{"open":"10:30","close":"20:30"},"fri":{"open":"10:30","close":"20:30"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '이층집'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"19:00"},"tue":{"open":"10:00","close":"19:00"},"wed":{"open":"10:00","close":"19:00"},"thu":{"open":"10:00","close":"19:00"},"fri":{"open":"10:00","close":"19:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '한그릇'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:00"},"tue":{"open":"10:30","close":"20:00"},"wed":{"open":"10:30","close":"20:00"},"thu":{"open":"10:30","close":"20:00"},"fri":{"open":"10:30","close":"20:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '밥은화 광운대본점'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:00"},"tue":{"open":"10:30","close":"20:00"},"wed":{"open":"10:30","close":"20:00"},"thu":{"open":"10:30","close":"20:00"},"fri":{"open":"10:30","close":"20:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '하이레'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"17:00"},"tue":{"open":"10:30","close":"17:00"},"wed":{"open":"10:30","close":"17:00"},"thu":{"open":"10:30","close":"17:00"},"fri":{"open":"10:30","close":"17:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '우우즈베이커리'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:00"},"tue":{"open":"11:00","close":"20:00"},"wed":{"open":"11:00","close":"20:00"},"thu":{"open":"11:00","close":"20:00"},"fri":{"open":"11:00","close":"20:00"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '아 그집'; + +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:30","close":"20:30"},"tue":{"open":"10:30","close":"20:30"},"wed":{"open":"10:30","close":"20:30"},"thu":{"open":"10:30","close":"20:30"},"fri":{"open":"10:30","close":"20:30"},"sat":{"closed":true},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '민들레국시'; + +-- =================== 요일별 다른 시간 =================== + +-- 집밥: 평일 7-19, 토 7-14, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"07:00","close":"19:00"},"tue":{"open":"07:00","close":"19:00"},"wed":{"open":"07:00","close":"19:00"},"thu":{"open":"07:00","close":"19:00"},"fri":{"open":"07:00","close":"19:00"},"sat":{"open":"07:00","close":"14:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '집밥'; + +-- 맛불: 평일 10-21:30, 주말 11-21 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:30"},"tue":{"open":"10:00","close":"21:30"},"wed":{"open":"10:00","close":"21:30"},"thu":{"open":"10:00","close":"21:30"},"fri":{"open":"10:00","close":"21:30"},"sat":{"open":"11:00","close":"21:00"},"sun":{"open":"11:00","close":"21:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '맛불'; + +-- 스마일돈까스: 평일 11-20:30, 토 11-19:30, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:30"},"tue":{"open":"11:00","close":"20:30"},"wed":{"open":"11:00","close":"20:30"},"thu":{"open":"11:00","close":"20:30"},"fri":{"open":"11:00","close":"20:30"},"sat":{"open":"11:00","close":"19:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '스마일돈까스'; + +-- 고씨네: 평일 09-21, 주말 11-21 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:00","close":"21:00"},"tue":{"open":"09:00","close":"21:00"},"wed":{"open":"09:00","close":"21:00"},"thu":{"open":"09:00","close":"21:00"},"fri":{"open":"09:00","close":"21:00"},"sat":{"open":"11:00","close":"21:00"},"sun":{"open":"11:00","close":"21:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '고씨네 광운대점'; + +-- 장수국수: 월-목 08:30-21:30, 금 09:30-20, 토 11-15, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"08:30","close":"21:30"},"tue":{"open":"08:30","close":"21:30"},"wed":{"open":"08:30","close":"21:30"},"thu":{"open":"08:30","close":"21:30"},"fri":{"open":"09:30","close":"20:00"},"sat":{"open":"11:00","close":"15:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '장수국수 광운대점'; + +-- 빠말: 평일 09:30-19, 토 11:30-17, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:30","close":"19:00"},"tue":{"open":"09:30","close":"19:00"},"wed":{"open":"09:30","close":"19:00"},"thu":{"open":"09:30","close":"19:00"},"fri":{"open":"09:30","close":"19:00"},"sat":{"open":"11:30","close":"17:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '빠말'; + +-- 꽃제비칼국수: 평일 10-21, 토 10-20, 일 12-20 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"21:00"},"tue":{"open":"10:00","close":"21:00"},"wed":{"open":"10:00","close":"21:00"},"thu":{"open":"10:00","close":"21:00"},"fri":{"open":"10:00","close":"21:00"},"sat":{"open":"10:00","close":"20:00"},"sun":{"open":"12:00","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '꽃제비칼국수'; + +-- 이찌마김치: 평일 10-20 (브레이크 16-17:30 단순화), 토 11-16, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"20:00"},"tue":{"open":"10:00","close":"20:00"},"wed":{"open":"10:00","close":"20:00"},"thu":{"open":"10:00","close":"20:00"},"fri":{"open":"10:00","close":"20:00"},"sat":{"open":"11:00","close":"16:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '이찌마 김치'; + +-- 후문식당: 학기중 평일 10-19, 토 11-14, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"10:00","close":"19:00"},"tue":{"open":"10:00","close":"19:00"},"wed":{"open":"10:00","close":"19:00"},"thu":{"open":"10:00","close":"19:00"},"fri":{"open":"10:00","close":"19:00"},"sat":{"open":"11:00","close":"14:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '후문식당'; + +-- 소담밥상: 학기중 월-토 09-20:30, 일 휴무 +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:00","close":"20:30"},"tue":{"open":"09:00","close":"20:30"},"wed":{"open":"09:00","close":"20:30"},"thu":{"open":"09:00","close":"20:30"},"fri":{"open":"09:00","close":"20:30"},"sat":{"open":"09:00","close":"20:30"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '소담밥상'; + +-- =================== 부분 정보 =================== + +-- 본도시락: 토일 14시까지 (평일은 미확인 → 기존 9-22 유지) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"14:00"},"sun":{"open":"09:00","close":"14:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '본도시락 광운대역점'; + +-- 정담소반: 일 휴무 (평일은 미확인 → 기존 9-22 유지) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"closed":true}}'::jsonb, "updatedAt" = NOW() WHERE name = '정담소반'; + +-- 서초우동: close 20:00 (open 미확인 → 11:00 추정) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"20:00"},"tue":{"open":"11:00","close":"20:00"},"wed":{"open":"11:00","close":"20:00"},"thu":{"open":"11:00","close":"20:00"},"fri":{"open":"11:00","close":"20:00"},"sat":{"open":"11:00","close":"20:00"},"sun":{"open":"11:00","close":"20:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '서초우동 광운대역점'; + +-- 명동찌개마을: 매일 11-22 (둘째/넷째 토 휴무는 schema 미지원 → 일단 매일) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00"},"tue":{"open":"11:00","close":"22:00"},"wed":{"open":"11:00","close":"22:00"},"thu":{"open":"11:00","close":"22:00"},"fri":{"open":"11:00","close":"22:00"},"sat":{"open":"11:00","close":"22:00"},"sun":{"open":"11:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '명동찌개마을 광운대역점'; + +-- 왕토종순대국: 매일 11-22 (일요일 컨디션에 따라 일찍 닫음 → 일단 매일 동일) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"11:00","close":"22:00"},"tue":{"open":"11:00","close":"22:00"},"wed":{"open":"11:00","close":"22:00"},"thu":{"open":"11:00","close":"22:00"},"fri":{"open":"11:00","close":"22:00"},"sat":{"open":"11:00","close":"22:00"},"sun":{"open":"11:00","close":"22:00"}}'::jsonb, "updatedAt" = NOW() WHERE name = '왕토종순대국'; + +-- 돈장군: 매일 12-24 (자정은 23:59 처리) +UPDATE "Restaurant" SET "businessHours" = '{"mon":{"open":"12:00","close":"23:59"},"tue":{"open":"12:00","close":"23:59"},"wed":{"open":"12:00","close":"23:59"},"thu":{"open":"12:00","close":"23:59"},"fri":{"open":"12:00","close":"23:59"},"sat":{"open":"12:00","close":"23:59"},"sun":{"open":"12:00","close":"23:59"}}'::jsonb, "updatedAt" = NOW() WHERE name = '돈장군 광운대본점'; + +-- =================== 검증 =================== + +SELECT name, "businessHours" FROM "Restaurant" WHERE name IN ( + '가마솥뼈다귀감자탕', '본도시락 광운대역점', '집밥', '맛불', '카페베르데', '용기사 식당' +) ORDER BY name; + +COMMIT; diff --git a/scripts/seed-restaurants/compress-cover-images.py b/scripts/seed-restaurants/compress-cover-images.py new file mode 100644 index 0000000..bc79f1f --- /dev/null +++ b/scripts/seed-restaurants/compress-cover-images.py @@ -0,0 +1,69 @@ +""" +apps/web/public/restaurants/*.jpg 를 웹용으로 일괄 압축. + +- 최대 폭 1200px (Hero 캐러셀 + 리스트 썸네일 양쪽 커버) +- JPEG 품질 80 + progressive +- EXIF orientation 반영 후 EXIF 메타 제거 (개인정보·용량 둘 다 줄임) + +멱등 보장: 이미 1200px 이하이면 그대로 두고 재인코딩만 수행. +""" +import os +import sys +from PIL import Image, ImageOps + +# 콘솔 utf-8 +sys.stdout.reconfigure(encoding='utf-8') + +ROOT = os.path.join(os.path.dirname(__file__), '..', '..', 'apps', 'web', 'public', 'restaurants') +MAX_WIDTH = 1200 +QUALITY = 80 + + +def fmt(n: int) -> str: + for u in ('B', 'KB', 'MB'): + if n < 1024: + return f'{n:.1f}{u}' + n /= 1024 + return f'{n:.1f}GB' + + +def main(): + files = sorted(f for f in os.listdir(ROOT) if f.lower().endswith(('.jpg', '.jpeg'))) + total_before = 0 + total_after = 0 + + for f in files: + path = os.path.join(ROOT, f) + before = os.path.getsize(path) + total_before += before + + try: + img = Image.open(path) + # EXIF orientation 회전 적용 + img = ImageOps.exif_transpose(img) + # 폭 기준 리사이즈 + if img.width > MAX_WIDTH: + ratio = MAX_WIDTH / img.width + new_h = int(img.height * ratio) + img = img.resize((MAX_WIDTH, new_h), Image.LANCZOS) + # RGB 보장 (RGBA·P 모드 대비) + if img.mode != 'RGB': + img = img.convert('RGB') + img.save(path, 'JPEG', quality=QUALITY, optimize=True, progressive=True) + except Exception as e: + print(f'[FAIL] {f}: {e}') + continue + + after = os.path.getsize(path) + total_after += after + ratio_pct = (1 - after / before) * 100 if before else 0 + print(f' {f:<50} {fmt(before):>8} -> {fmt(after):>8} (-{ratio_pct:.0f}%)') + + print() + print(f'TOTAL {fmt(total_before)} -> {fmt(total_after)} ' + f'(-{(1 - total_after/total_before)*100:.0f}%, ' + f'{len(files)} files)') + + +if __name__ == '__main__': + main() diff --git a/scripts/seed-restaurants/cover-images-update.sql b/scripts/seed-restaurants/cover-images-update.sql new file mode 100644 index 0000000..10def78 --- /dev/null +++ b/scripts/seed-restaurants/cover-images-update.sql @@ -0,0 +1,91 @@ +-- ============================================================ +-- 대표 사진(coverImageUrl) 일괄 적용 +-- ============================================================ +-- public/restaurants/ 의 *.jpg 파일명을 DB Restaurant.name 으로 매칭. +-- 파일명 = DB name 가정 (사전에 rename-images.py 로 정리됨). +-- ============================================================ + +BEGIN; + +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/1%EC%9D%BC1%EC%9E%94.jpg', "updatedAt" = NOW() WHERE name = '1일1잔'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/5%EC%9D%BC%EC%9E%A5%20%ED%96%84%EB%B2%84%EA%B1%B0.jpg', "updatedAt" = NOW() WHERE name = '5일장 햄버거'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/CAFE%20FIASCO.jpg', "updatedAt" = NOW() WHERE name = 'CAFE FIASCO'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/CORD%20Jr..jpg', "updatedAt" = NOW() WHERE name = 'CORD Jr.'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%B0%80%EB%A7%88%EC%86%A5%EB%BC%88%EB%8B%A4%EA%B7%80%EA%B0%90%EC%9E%90%ED%83%95.jpg', "updatedAt" = NOW() WHERE name = '가마솥뼈다귀감자탕'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%B2%BD%EB%8C%80%EC%BB%B5%EB%B0%A5%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '경대컵밥 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%B3%A0%EC%94%A8%EB%84%A4%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '고씨네 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%B4%91%EC%9A%B4%EC%BB%A4%ED%94%BC.jpg', "updatedAt" = NOW() WHERE name = '광운커피'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%B5%AD%EC%88%98%EC%B2%9C%EC%99%95%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '국수천왕 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%B7%B8%EC%98%9B%EB%82%A01947%EC%99%95%EB%A7%8C%EB%91%90.jpg', "updatedAt" = NOW() WHERE name = '그옛날1947왕만두'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EA%BD%83%EC%A0%9C%EB%B9%84%EC%B9%BC%EA%B5%AD%EC%88%98.jpg', "updatedAt" = NOW() WHERE name = '꽃제비칼국수'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%8D%94%EC%9B%90.jpg', "updatedAt" = NOW() WHERE name = '더원'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%8D%B0%EC%9D%B4%EB%A1%B1%EC%B9%B4%ED%8E%98%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '데이롱카페 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%8F%88%EC%9E%A5%EA%B5%B0%20%EA%B4%91%EC%9A%B4%EB%8C%80%EB%B3%B8%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '돈장군 광운대본점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%94%94%EB%8D%B8%EB%A6%AC%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '디델리 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%98%90%EC%99%80%EC%A7%91%EC%88%9C%EB%8C%80%EA%B5%AD.jpg', "updatedAt" = NOW() WHERE name = '또와집순대국'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%A1%9C%EC%8A%A42000.jpg', "updatedAt" = NOW() WHERE name = '로스2000'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%A7%88%EB%A3%A8.jpg', "updatedAt" = NOW() WHERE name = '마루'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%A7%88%EC%82%B0%EC%95%84%EA%B5%AC%EC%B0%9C.jpg', "updatedAt" = NOW() WHERE name = '마산아구찜'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%A7%88%ED%8F%AC%EC%97%B0%ED%83%84%EB%B6%88%EA%B3%A0%EA%B8%B0.jpg', "updatedAt" = NOW() WHERE name = '마포연탄불고기'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%A7%9B%EB%B6%88.jpg', "updatedAt" = NOW() WHERE name = '맛불'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%AA%85%ED%83%9C%EC%9D%B4%EC%95%BC%EA%B8%B0.jpg', "updatedAt" = NOW() WHERE name = '명태이야기'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%AA%A9%ED%8F%AC%ED%99%8D%ED%83%81.jpg', "updatedAt" = NOW() WHERE name = '목포홍탁'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%AF%B8%EC%8B%9D%EC%84%B1.jpg', "updatedAt" = NOW() WHERE name = '미식성'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%AF%BC%EB%93%A4%EB%A0%88%EA%B5%AD%EC%8B%9C.jpg', "updatedAt" = NOW() WHERE name = '민들레국시'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%B0%A5%EC%9D%80%ED%99%94%20%EA%B4%91%EC%9A%B4%EB%8C%80%EB%B3%B8%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '밥은화 광운대본점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%B3%84%EB%82%9C%EC%A3%BC%EC%A0%90%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '별난주점 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%B3%B8%EB%8F%84%EC%8B%9C%EB%9D%BD%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%97%AD%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '본도시락 광운대역점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%B9%88%EB%8C%80%EB%96%A1%EC%8B%A0%EC%82%AC.jpg', "updatedAt" = NOW() WHERE name = '빈대떡신사'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EB%B9%A0%EB%A7%90.jpg', "updatedAt" = NOW() WHERE name = '빠말'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%82%AC%EA%B3%84%EC%A0%88%EA%B9%80%EB%B0%A5.jpg', "updatedAt" = NOW() WHERE name = '사계절김밥'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%83%90%EB%9F%AC%EB%A6%AC%EC%95%84%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '샐러리아 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%84%9C%EC%84%A0%EC%83%9D%EA%B9%80%EC%B9%98%EC%B0%9C.jpg', "updatedAt" = NOW() WHERE name = '서선생김치찜'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%84%9C%EC%B4%88%EC%9A%B0%EB%8F%99%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%97%AD%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '서초우동 광운대역점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%86%8C%EB%8B%B4%EB%B0%A5%EC%83%81.jpg', "updatedAt" = NOW() WHERE name = '소담밥상'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%8A%A4%EB%A7%88%EC%9D%BC%EB%8F%88%EA%B9%8C%EC%8A%A4.jpg', "updatedAt" = NOW() WHERE name = '스마일돈까스'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%8B%A0%EC%97%B0%EB%A7%88%EB%9D%BC%ED%83%95.jpg', "updatedAt" = NOW() WHERE name = '신연마라탕'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%8D%AC%EB%8D%94%EC%B9%98%ED%82%A8%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '썬더치킨 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%95%84%20%EA%B7%B8%EC%A7%91.jpg', "updatedAt" = NOW() WHERE name = '아 그집'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%97%84%EB%A7%88%EC%86%90%EA%B9%80%EB%B0%A5%26%EB%B6%84%EC%8B%9D.jpg', "updatedAt" = NOW() WHERE name = '엄마손김밥&분식'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%98%81%EC%B6%95%EC%82%B0%EC%A0%95%EC%9C%A1%EC%8B%9D%EB%8B%B9.jpg', "updatedAt" = NOW() WHERE name = '영축산정육식당'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%98%A4%EC%8E%84.jpg', "updatedAt" = NOW() WHERE name = '오쎄'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%99%95%ED%86%A0%EC%A2%85%EC%88%9C%EB%8C%80%EA%B5%AD.jpg', "updatedAt" = NOW() WHERE name = '왕토종순대국'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9A%A9%EA%B8%B0%EC%82%AC%20%EC%8B%9D%EB%8B%B9.jpg', "updatedAt" = NOW() WHERE name = '용기사 식당'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9A%B0%EC%9A%B0%EC%A6%88%EB%B2%A0%EC%9D%B4%EC%BB%A4%EB%A6%AC.jpg', "updatedAt" = NOW() WHERE name = '우우즈베이커리'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9C%A4%EC%8A%A4%EC%BF%A1.jpg', "updatedAt" = NOW() WHERE name = '윤스쿡'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9D%B4%EC%B8%B5%EC%A7%91.jpg', "updatedAt" = NOW() WHERE name = '이층집'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9D%BC%EC%8B%AC%ED%85%90%EB%8F%99%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '일심텐동 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9D%BC%EC%8B%AC%ED%95%B4%EC%9E%A5%EA%B5%AD%20%EC%9B%94%EA%B3%84%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '일심해장국 월계점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%9E%A5%EC%88%98%EA%B5%AD%EC%88%98%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '장수국수 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A0%84%EC%84%A4%EC%9D%98%EB%A9%B8%EC%B9%98%EA%B5%AD%EC%88%98%20%EC%9B%94%EA%B3%84%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '전설의멸치국수 월계점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A0%84%EC%A3%BC%EB%B0%A5%EC%83%81%EC%8C%88%EB%B0%A5.jpg', "updatedAt" = NOW() WHERE name = '전주밥상쌈밥'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A0%95%EB%8B%B4%EC%86%8C%EB%B0%98.jpg', "updatedAt" = NOW() WHERE name = '정담소반'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A4%91%ED%99%94%ED%98%B8%EB%B0%98%EB%8B%AD%EA%B0%88%EB%B9%84%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '중화호반닭갈비 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A7%80%EC%A7%80%EA%B3%A0%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '지지고 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A7%84%EB%AF%B8%ED%86%B5%EB%8B%AD.jpg', "updatedAt" = NOW() WHERE name = '진미통닭'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A7%91%EB%B0%A5.jpg', "updatedAt" = NOW() WHERE name = '집밥'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%A7%9D%ED%83%9C%EC%B4%8C%EB%85%B8%EA%B0%80%EB%A6%AC.jpg', "updatedAt" = NOW() WHERE name = '짝태촌노가리'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%B2%9C%EB%85%84%EC%B4%88%EC%9A%B0%EB%A6%AC%EB%B0%80%EC%B9%BC%EA%B5%AD%EC%88%98.jpg', "updatedAt" = NOW() WHERE name = '천년초우리밀칼국수'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%B2%AD%EA%B3%84%20%EB%B9%A8%EA%B0%84%EC%A7%91.jpg', "updatedAt" = NOW() WHERE name = '청계 빨간집'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%B9%98%ED%82%A8%ED%81%B4%EB%9F%BD%20%EC%84%B1%EB%B6%81%EC%97%AD%EB%B3%B8%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '치킨클럽 성북역본점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%B9%B4%EC%B8%A0%EB%B0%B1%20%EC%9B%94%EA%B3%84%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '카츠백 월계점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%B9%B4%ED%8E%98%EB%B2%A0%EB%A5%B4%EB%8D%B0.jpg', "updatedAt" = NOW() WHERE name = '카페베르데'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%EC%BB%A4%ED%94%BC%EB%8A%94%EA%B8%B0%EC%96%B5%EC%9D%98%EB%81%8C%EB%A6%BC.jpg', "updatedAt" = NOW() WHERE name = '커피는기억의끌림'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%81%B0%EB%A7%98%ED%95%A0%EB%A7%A4%EC%88%9C%EB%8C%80%EA%B5%AD%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '큰맘할매순대국 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%81%B0%EC%A7%91%EB%8B%AD%EA%B0%95%EC%A0%95%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '큰집닭강정 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%8A%80%EB%A7%A5.jpg', "updatedAt" = NOW() WHERE name = '튀맥'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%8F%AC%20%EB%A0%88%EC%98%A4.jpg', "updatedAt" = NOW() WHERE name = '포 레오'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%91%B8%EB%A5%B8%EC%8A%A4%EC%8B%9C.jpg', "updatedAt" = NOW() WHERE name = '푸른스시'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%94%84%EB%9E%AD%ED%81%AC%EB%B2%84%EA%B1%B0%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '프랭크버거 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%95%98%EC%9D%B4%EB%A0%88.jpg', "updatedAt" = NOW() WHERE name = '하이레'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%95%9C%EA%B7%B8%EB%A6%87.jpg', "updatedAt" = NOW() WHERE name = '한그릇'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%95%9C%EB%81%BC%EC%B2%A0%ED%8C%90%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '한끼철판 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%95%9C%EB%9D%BC%EC%82%B0%EA%B0%90%EC%9E%90%ED%83%95.jpg', "updatedAt" = NOW() WHERE name = '한라산감자탕'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%95%9C%EB%B0%A9%EC%A0%84%EC%A3%BC%EC%BD%A9%EB%82%98%EB%AC%BC%EA%B5%AD%EB%B0%A5%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%97%AD%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '한방전주콩나물국밥 광운대역점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%99%94%EB%A1%9C%EC%83%81%ED%9A%8C%20%EA%B4%91%EC%9A%B4%EB%8C%80%EC%A0%90.jpg', "updatedAt" = NOW() WHERE name = '화로상회 광운대점'; +UPDATE "Restaurant" SET "coverImageUrl" = '/restaurants/%ED%9B%84%EB%AC%B8%EC%8B%9D%EB%8B%B9.jpg', "updatedAt" = NOW() WHERE name = '후문식당'; + +-- 검증 +SELECT COUNT(*) AS cover_image_set_count FROM "Restaurant" WHERE "coverImageUrl" IS NOT NULL; + +COMMIT; diff --git a/scripts/seed-restaurants/external-menu-urls.sql b/scripts/seed-restaurants/external-menu-urls.sql new file mode 100644 index 0000000..5a1cf7a --- /dev/null +++ b/scripts/seed-restaurants/external-menu-urls.sql @@ -0,0 +1,39 @@ +-- 체인점 공식 메뉴 URL 일괄 적용 (재실행 가능 / 멱등) +BEGIN; + +UPDATE "Restaurant" +SET "externalMenuUrl" = 'https://www.bonif.co.kr/brand/menu?brdCd=BF104', + "updatedAt" = NOW() +WHERE name = '본도시락 광운대역점'; + +UPDATE "Restaurant" +SET "externalMenuUrl" = 'https://frankburger.co.kr/html/menu_1.html', + "updatedAt" = NOW() +WHERE name = '프랭크버거 광운대점'; + +UPDATE "Restaurant" +SET "externalMenuUrl" = 'https://www.mythunder.co.kr/page.php?p_id=menu1', + "updatedAt" = NOW() +WHERE name = '썬더치킨 광운대점'; + +UPDATE "Restaurant" +SET "externalMenuUrl" = 'https://www.mdcco.co.kr/contents/menu/foods.php?type=1', + "updatedAt" = NOW() +WHERE name = '맛닭꼬 광운대점'; + +UPDATE "Restaurant" +SET "externalMenuUrl" = 'https://www.waffleuniv.com/child/sub/menu/waffle.php', + "updatedAt" = NOW() +WHERE name = '와플대학 광운대캠퍼스'; + +UPDATE "Restaurant" +SET "externalMenuUrl" = 'https://xn--vl2b25awylm0e.com/bbs/content.php?co_id=menu', + "updatedAt" = NOW() +WHERE name = '샐러리아 광운대점'; + +-- 검증 +SELECT name, "externalMenuUrl" FROM "Restaurant" +WHERE "externalMenuUrl" IS NOT NULL +ORDER BY name; + +COMMIT; diff --git a/scripts/seed-restaurants/frontgate_menus.py b/scripts/seed-restaurants/frontgate_menus.py new file mode 100644 index 0000000..b4b6dec --- /dev/null +++ b/scripts/seed-restaurants/frontgate_menus.py @@ -0,0 +1,596 @@ +""" +정문 zone 식당 메뉴 데이터. + +스키마는 kwoondae_menus.py 와 동일. +사용자가 직접 입력하거나 OCR 한 결과를 누적. +""" + +FRONTGATE_MENUS = { + # ===================== OCR 명확 ===================== + '그옛날1947왕만두': [ + ('고기왕만두 (5개)', 6000, None, None), + ('김치왕만두 (5개)', 6000, None, None), + ('고기납작만두 (6개)', 5000, None, None), + ('김치납작만두 (6개)', 5000, None, None), + ('옛날 찐빵 (5개)', 6000, None, None), + ('새우만두 (5개)', 6000, None, None), + ('군만두 (6개)', 6000, None, None), + ('단무지', 500, None, None), + ('찰 옥수수 (3개/낱개)', 2000, None, [{'label': '낱개', 'price': 2000}, {'label': '3개', 'price': 4000}]), + ], + + '맛불': [ + # 불백 + ('돼지불백 (간장맛)', 8500, '불백', None), + ('고추장불백 (순한맛)', 8500, '불백', None), + ('얼큰불백 (매운맛 1~3단계)', 8500, '불백', None), + ('제육볶음', 8500, '불백', None), + ('두루치기', 8500, '불백', None), + ('국물두루치기', 8500, '불백', None), + # 사리추가 + ('치즈 사리', 2000, '사리추가', None), + ('우동 사리', 2000, '사리추가', None), + ('당면 사리', 2000, '사리추가', None), + ('떡 사리', 2000, '사리추가', None), + # 덮밥 + ('돼지불고기덮밥 (간장맛)', 8000, '덮밥', None), + ('고추장불고기덮밥 (순한맛)', 8000, '덮밥', None), + ('얼큰불고기덮밥 (매운맛)', 8000, '덮밥', None), + ('덮밥 치즈 추가', 2000, '덮밥', None), + ('덮밥 곱배기', 2000, '덮밥', None), + ('물냉면', 8000, '덮밥', None), + # SIDE + ('된장찌개', 2000, 'SIDE', None), + ('육개장 사발면', 1500, 'SIDE', None), + ('공기밥', 1000, 'SIDE', None), + # 마실거리 + ('소주', 4500, '마실거리', None), + ('맥주', 5000, '마실거리', None), + ('음료', 2000, '마실거리', None), + ], + + '민들레국시': [ + ('민들레 비빔국수', 8000, None, None), + ('콩나물 비빔밥 (소고기 들기름)', 8000, None, None), + ('콩비지탕', 8000, None, None), + ('김치찌개', 8000, None, None), + ('순두부', 8000, None, None), + ('된장찌개', 8000, None, None), + ('우거지갈비탕', 8000, None, None), + ('소고기덮밥', 10000, None, None), + ('제육덮밥', 8500, None, None), + ('볶음닭덮밥', 8000, None, None), + ('두부정식', 8000, None, None), + ('김치볶음밥', 8000, None, None), + ('김치치즈볶음밥', 8000, None, None), + ], + + '부리또잇': [ + # 부리또 + ('계란 부리또', 5200, '부리또', None), + ('치킨 부리또', 5400, '부리또', None), + ('불고기 부리또', 5900, '부리또', None), + ('스테이크 부리또', 5900, '부리또', None), + ('소세지 부리또', 5900, '부리또', None), + ('감자 부리또', 5200, '부리또', None), + ('믹스 부리또', 5400, '부리또', None), + ('치킨텐더 부리또', 5900, '부리또', None), + ('새우튀김 부리또', 5900, '부리또', None), + # 사이드 + ('치킨 퀘사디아', 6500, '사이드', None), + ('불고기 퀘사디아', 6500, '사이드', None), + ('감자튀김', 2500, '사이드', None), + ('해쉬브라운 3장', 2500, '사이드', None), + ('어니언링', 3000, '사이드', None), + ('시즈닝 추가', 200, '사이드', None), + # 세트 (부리또 + 옵션) + ('캔음료 세트 추가', 1500, '세트 추가', None), + ('캔음료+감자 세트', 3500, '세트 추가', None), + ('캔음료+어니언링 세트', 4000, '세트 추가', None), + ('캔음료+해쉬브라운 3장 세트', 3500, '세트 추가', None), + # 토핑 + ('다이어트 (맵소스 조금, 야채 많이)', 0, '토핑', None), + ('웨지감자', 600, '토핑', None), + ('해쉬브라운', 800, '토핑', None), + ('슬라이스 치즈', 600, '토핑', None), + ('모짜렐라치즈 50g', 1500, '토핑', None), + ('모짜렐라치즈 100g', 2600, '토핑', None), + ('치즈스틱', 800, '토핑', None), + ('소세지', 1200, '토핑', None), + ('새우튀김 (토핑)', 1200, '토핑', None), + ('돈가스', 1200, '토핑', None), + ('치킨텐더', 1200, '토핑', None), + ('할라피뇨', 600, '토핑', None), + ('삶은 계란', 800, '토핑', None), + ('닭고기 50g', 1500, '토핑', None), + ('불고기 40g', 2000, '토핑', None), + ('너겟 3개', 1000, '토핑', None), + # 음료 + ('캔음료', 2000, '음료', None), + ], + + '수해복마라탕 광운대점': [ + # 식사류 + ('마라탕 (100g)', 1800, '식사류', None), + ('마라샹궈 (100g)', 3000, '식사류', None), + ('꿔보로우', 16000, '식사류', None), + # 사이드 + ('튀김꼬치 야채류 (1개)', 1000, '사이드', None), + ('튀김꼬치 기타 (1개)', 2000, '사이드', None), + # 추가토핑 + ('소고기·양고기 추가 (1봉지)', 3000, '추가토핑', None), + ('꼬치 추가 (1개)', 1000, '추가토핑', None), + # 음료·주류 + ('탄산음료', 2000, '음료·주류', None), + ('중국음료수', 3000, '음료·주류', None), + ('빙홍차', 3000, '음료·주류', None), + ('소주', 5000, '음료·주류', None), + ('카스', 5000, '음료·주류', None), + ('칭타오', 7000, '음료·주류', None), + ], + + '영축산정육식당': [ + # 600g + ('돼지한마리 (600g)', 37000, '돼지 (600g)', None), + ('삼겹살 (600g)', 37000, '돼지 (600g)', None), + ('목살 (600g)', 37000, '돼지 (600g)', None), + ('가브리살 (600g)', 37000, '돼지 (600g)', None), + ('뒷고기 (600g)', 26000, '돼지 (600g)', None), + ('항정살 (600g)', 48000, '돼지 (600g)', None), + # 200g 단품 + ('삼겹살 (200g)', 14000, '돼지 (200g)', None), + ('목살 (200g)', 14000, '돼지 (200g)', None), + ('수입삼겹살 (200g)', 9000, '돼지 (200g)', None), + # 소고기 + ('육우꽃등심 (600g)', 49000, '소고기', None), + ('육우꽃등심 (200g)', 22000, '소고기', None), + ('육우등심 (600g)', 37000, '소고기', None), + # 후식 + ('김치찌개', 6000, '후식', None), + ('냉면', 4000, '후식', None), + ('계란찜', 4000, '후식', None), + ], + + '전설의멸치국수 월계점': [ + # 국수·냉면 + ('물냉면', 8000, '냉면', None), + ('비빔냉면', 8000, '냉면', None), + ('콩국수', 8000, '냉면', None), + # 국수 + ('멸치국수', 7000, '국수', None), + ('비빔국수', 8000, '국수', None), + ('칼국수', 8000, '국수', None), + ('순두부', 7000, '국수', None), + ('육개장', 8000, '국수', None), + # 식사 + ('돈까스', 8000, '식사', None), + ('치즈돈까스', 8500, '식사', None), + ('뚝불고기', 8500, '식사', None), + ('제육덮밥', 8000, '식사', None), + ('갈비탕', 12000, '식사', None), + # 추가 + ('주먹밥', 3000, '추가', None), + ('공기밥', 1000, '추가', None), + ('곱빼기 (면만)', 1000, '추가', None), + ], + + '진미통닭': [ + # 치킨 + ('후라이드 (大/中)', 14000, '치킨', [{'label': '中', 'price': 14000}, {'label': '大', 'price': 19000}]), + ('양념치킨 (大/中)', 15000, '치킨', [{'label': '中', 'price': 15000}, {'label': '大', 'price': 20000}]), + ('반반치킨 (양념+후라이드, 大/中)', 15000, '치킨', [{'label': '中', 'price': 15000}, {'label': '大', 'price': 20000}]), + ('순살후라이드', 20000, '치킨', None), + ('순살양념치킨', 21000, '치킨', None), + ('양념소스 추가', 1000, '치킨', None), + ('무 추가', 500, '치킨', None), + # 주류·음료 + ('소주', 5000, '주류·음료', None), + ('맥주', 5000, '주류·음료', None), + ('생맥주', 5000, '주류·음료', None), + ('음료', 2000, '주류·음료', None), + ('콜라/사이다 (500ml)', 2000, '주류·음료', None), + ('콜라/사이다 (1.25L)', 3000, '주류·음료', None), + ], + + '푸른스시': [ + # 사시미 + ('모듬 사시미 24pcs', 42000, '사시미', None), + ('1인 모듬 사시미 12pcs', 22000, '사시미', None), + ('광어 사시미 24pcs', 40000, '사시미', None), + ('연어 사시미 24pcs', 40000, '사시미', None), + ('광어+연어 사시미 24pcs', 40000, '사시미', None), + # 초밥 + ('오늘의 초밥 11pcs', 15000, '초밥', None), + ('특 초밥 12pcs', 20000, '초밥', None), + ('스페셜 초밥 12pcs', 23000, '초밥', None), + ('VIP 초밥 14pcs', 28000, '초밥', None), + ('광어 초밥 10pcs', 20000, '초밥', None), + ('연어 초밥 10pcs', 20000, '초밥', None), + ('소고기 초밥 10pcs', 20000, '초밥', None), + ('장어 초밥 10pcs', 20000, '초밥', None), + ('초새우 초밥 10pcs', 17000, '초밥', None), + # 반반초밥 + ('연어+새우 10pcs', 18000, '반반초밥', None), + ('연어+광어 10pcs', 20000, '반반초밥', None), + ('연어+장어 10pcs', 20000, '반반초밥', None), + ('연어+소고기 10pcs', 20000, '반반초밥', None), + ('광어+장어 10pcs', 20000, '반반초밥', None), + ('광어+소고기 10pcs', 20000, '반반초밥', None), + ('장어+소고기 10pcs', 20000, '반반초밥', None), + # 밥류 — 회덮밥/정식 + ('회덮밥 (단품/정식)', 13000, '밥류', [{'label': '단품', 'price': 13000}, {'label': '정식', 'price': 14000}]), + ('연어 회덮밥 (단품/정식)', 14000, '밥류', [{'label': '단품', 'price': 14000}, {'label': '정식', 'price': 15000}]), + ('활어 회덮밥 (단품/정식)', 14000, '밥류', [{'label': '단품', 'price': 14000}, {'label': '정식', 'price': 15000}]), + ('참치 회덮밥 (단품/정식)', 13000, '밥류', [{'label': '단품', 'price': 13000}, {'label': '정식', 'price': 14000}]), + ('모듬 회덮밥 (단품/정식)', 14000, '밥류', [{'label': '단품', 'price': 14000}, {'label': '정식', 'price': 15000}]), + ('육회 비빔밥 (단품/정식)', 14000, '밥류', [{'label': '단품', 'price': 14000}, {'label': '정식', 'price': 15000}]), + # 스페셜 메뉴 + ('커플 세트 (2인)', 38000, '스페셜', None), + ('푸른스시 정식 (1인)', 30000, '스페셜', None), + # 면류 + ('유부 우동', 7000, '면류', None), + ('단품 냉모밀', 8000, '면류', None), + ('튀김 우동', 9000, '면류', None), + ('튀김 냉모밀', 10000, '면류', None), + ('야끼 우동', 11000, '면류', None), + # 사이드 + ('모듬 튀김 (6pcs/12pcs)', 6500, '사이드', [{'label': '6pcs', 'price': 6500}, {'label': '12pcs', 'price': 12000}]), + ('새우 튀김 (6pcs/12pcs)', 8500, '사이드', [{'label': '6pcs', 'price': 8500}, {'label': '12pcs', 'price': 16000}]), + ('감자 고로케 4pcs', 6000, '사이드', None), + ('치킨 가라아게 7pcs', 6000, '사이드', None), + ], + + # ===================== OCR 추가 (1차 완료 식당) ===================== + '민들레밥상': [ + ('민들레비빔국수', 8000, None, None), + ('콩나물비빔밥', 8000, None, None), # 소고기 추가 가능 + ('콩비지탕', 8000, None, None), + ('김치찌개', 8000, None, None), + ('순두부', 8000, None, None), + ('된장찌개', 8000, None, None), + ('우거지갈비탕', 10000, None, None), + ('소고기덮밥', 8500, None, None), + ('제육덮밥', 8000, None, None), + ('볶음닭덮밥', 8000, None, None), + ('두부정식', 8000, None, None), + ('김치볶음밥', 8000, None, None), + ('김치치즈볶음밥', 8000, None, None), + ], + + '또와순대국': [ + # 메뉴 + ('순대국', 9000, '메뉴', None), + ('순대국(특)', 11000, '메뉴', None), + ('순대국 정식', 13000, '메뉴', None), + ('술국', 19000, '메뉴', None), + ('머리고기', 19000, '메뉴', None), + # 안주류 + ('오징어 데침', 15000, '안주류', None), + ('오징어 볶음', 25000, '안주류', None), + ('메밀전병 (2개)', 10000, '안주류', None), + # 특선메뉴 (예약) + ('동태찌개', 60000, '특선·예약', None), + ('닭도리탕', 45000, '특선·예약', None), + # 주류·음료 + ('소주 (처음처럼)', 5000, '주류·음료', None), + ('맥주 (생드래프트)', 5000, '주류·음료', None), + ('청하', 5000, '주류·음료', None), + ('막걸리', 5000, '주류·음료', None), + ('음료수', 2000, '주류·음료', None), + ], + + # ===================== OCR 검증 필요 (사용자 확인 부탁) ===================== + # 아래 식당들은 사진이 작거나 흐려 일부 가격/메뉴명에 확신이 없습니다. + # 등록 전 사용자 확인 권장. + + '신연마라탕': [ + # 식사 (g당 가격) + ('마라탕 (100g)', 1800, '식사', None), + ('마라샹궈 (100g)', 3000, '식사', None), + ('꿔바로우 (소/대)', 10000, '식사', [{'label': '소', 'price': 10000}, {'label': '대', 'price': 15000}]), + # 추가메뉴 + ('고기류 추가 (100g)', 3000, '추가', None), + ('야채/면사리 (100g)', 1000, '추가', None), + ('라면사리', 1500, '추가', None), + # 사이드 + ('연유꽃빵튀김', 8000, '사이드', None), + ('새우볶음밥', 7000, '사이드', None), + ('마파두부', 10000, '사이드', None), # ※ 가격 확인 필요 + ('마파두부덮밥', 10000, '사이드', None), # ※ 가격 확인 필요 + ('토마토계란볶음', 10000, '사이드', None), + ('토마토계란덮밥', 10000, '사이드', None), # ※ 가격 확인 필요 + ('꿔바로우볶음면', 10000, '사이드', None), # ※ 가격 확인 필요 + ('물만두', 7000, '사이드', None), + ], + + '중화호반닭갈비 광운대점': [ + # 메인 + ('치즈닭갈비', 16000, '메인', None), + ('닭큰갈비', 14000, '메인', None), + ('얼큰막국수', 8000, '메인', None), + ('물막국수', 8000, '메인', None), # ※ 가격 확인 필요 + ('주먹밥', 3000, '메인', None), + ('볶음밥', 3000, '메인', None), # ※ 가격 확인 필요 + ('공기밥', 1000, '메인', None), + # 사리 + ('모듬사리', 5000, '사리', None), + ('치즈사리', 4000, '사리', None), + ('떡사리', 2000, '사리', None), + ('우동사리', 2000, '사리', None), + ('라면사리', 2000, '사리', None), + ('쫄면사리', 2000, '사리', None), + ('고구마사리', 2000, '사리', None), + # 주류·음료 + ('맥주', 5000, '주류·음료', None), + ('소주', 5000, '주류·음료', None), + ('막걸리', 4000, '주류·음료', None), + ('음료수', 2000, '주류·음료', None), + ], + + '더진국 광운대점': [ + # 수육국밥 (대표) + ('더진국 수육국밥', 9900, '수육국밥', None), + ('진한 수육국밥', 11000, '수육국밥', None), + ('붉은 수육국밥', 10500, '수육국밥', None), + ('진한 붉은 수육국밥', 11000, '수육국밥', None), + # 순대국 + ('더진국 순대국', 9900, '순대국', None), + ('진한 순대국', 11000, '순대국', None), + ('얼큰 순대국', 10500, '순대국', None), + ('진한 얼큰 순대국', 11000, '순대국', None), + # 순두부국 + ('순두부국밥', 11000, '순두부', None), + ('얼큰 순두부', 11000, '순두부', None), + # 면류 + ('비빔냉면', 8000, '면류', None), + ('물냉면', 7000, '면류', None), + ('평양냉면', 10000, '면류', None), + # 곁들이 + ('직화고기 추가', 6000, '추가', None), + ('들깨수육 (대)', 30000, '안주류', None), + ('술국', 23000, '안주류', None), + ('토종순대 (10접/20접)', 8000, '안주류', [{'label': '10접', 'price': 8000}, {'label': '20접', 'price': 14000}]), + ('간양천엽', 6000, '안주류', None), + ('남도떡갈비', 14000, '안주류', None), + ('통모듬 (5접/10접)', 3000, '안주류', [{'label': '5접', 'price': 3000}, {'label': '10접', 'price': 6000}]), + ('감자만두 (5개/10개)', 3000, '안주류', [{'label': '5개', 'price': 3000}, {'label': '10개', 'price': 6000}]), + ('야채만두 (5개/8개)', 3000, '안주류', [{'label': '5개', 'price': 3000}, {'label': '8개', 'price': 6000}]), + ('곱순이/곱찌개', 23000, '안주류', None), + # 기타 + ('소주', 5000, '주류·음료', None), + ('맥주', 5000, '주류·음료', None), + ('음료수', 2000, '주류·음료', None), + ('공기밥', 1000, '주류·음료', None), + ], + + '카츠백 월계점': [ + # 메인 + ('등심카츠', 11900, '메인메뉴', None), + ('안심카츠', 12900, '메인메뉴', None), + ('통치즈카츠', 12900, '메인메뉴', None), + ('안심&치즈카츠', 12900, '메인메뉴', None), + ('안심&새우카츠', 12500, '메인메뉴', None), + ('1985 경양식카츠', 12500, '메인메뉴', None), + ('고구마치즈카츠', 13500, '메인메뉴', None), + # 면류 + ('꼬치어묵우동', 7900, '면류', None), + ('매콤꼬치어묵우동', 8200, '면류', None), + ('갈릭포크어묵우동', 8200, '면류', None), + ('냉모밀', 7900, '면류', None), + ('비빔모밀', 7900, '면류', None), + ('들기름모밀', 7400, '면류', None), + # 사이드 + ('갈릭포가카레', 4500, '사이드', None), + ('새우튀김 (2pc)', 3500, '사이드', None), + ('감자코로케 (2pc)', 3500, '사이드', None), + ("빽's 치킨너겟 (5pc)", 4500, '사이드', None), + ('버팔로윙 (4pc)', 3500, '사이드', None), + ('생선카츠 (2pc)', 3500, '사이드', None), + # SET (가격 미표시 — 매장 확인 필요) + # ('카츠 우동세트', 0, 'SET', None), + # ('카츠 모밀세트', 0, 'SET', None), + # ('카츠 카레세트', 0, 'SET', None), + # ('2인 카츠세트', 0, 'SET', None), + # ('먹·튀김세트', 0, 'SET', None), + ], + + # 화로상회: 단품 + 세트 (~막이/~껍이) 구조. 가격은 인원수별 패키지로 명시 (5-7개 7,900원, 8-9개 14,500원, 12-14개 21,000원) + # 개별 단품 가격은 사진에서 확인 어려움 — 사용자 확인 필요 + '화로상회 광운대점': [ + # 단품 메뉴 + ('숯불 닭갈비', 7900, '단품 (5-7개)', None), + ('옛날양념 돼갈이 (목살)', 7900, '단품 (5-7개)', None), + ('참숯 통감김 돼삼이', 7900, '단품 (5-7개)', None), + ('매콤 매닭이 (닭다리살)', 7900, '단품 (5-7개)', None), + ('눈꽃 통목살 목살이', 7900, '단품 (5-7개)', None), + # 세트 패키지 (5-7개) + ('5-7개 단품 세트', 7900, '세트', None), + ('8-9개 단품 세트', 14500, '세트', None), + ('12-14개 단품 세트', 21000, '세트', None), + ], + + # ===================== 대표 메뉴만 등록 (메뉴판 이미지 별도) ===================== + # 메뉴 수가 많은 식당은 대표 메뉴 몇 개만 추가하고 + # Restaurant.menuBoardImageUrl(s) 에 메뉴판 이미지 첨부. + '굿킨 광운대점': [ + ('후라이드 치킨', 16000, '대표', None), + ('양념 치킨', 18000, '대표', None), + ('핫마늘간장 치킨', 18000, '대표', None), + ('치즈뿜뿜 치킨', 18000, '대표', None), + ('레드페퍼 치킨', 18000, '대표', None), + ], + + '오쎄': [ + # COFFEE (HOT/ICE 가격 다른 것만 priceOptions, 동일가는 단일가) + ('아메리카노 (HOT/ICE)', 4000, 'COFFEE', [ + {'label': 'HOT', 'price': 4000}, + {'label': 'ICE', 'price': 5000}, + ]), + ('프림믹스커피 (HOT/ICE)', 4000, 'COFFEE', [ + {'label': 'HOT', 'price': 4000}, + {'label': 'ICE', 'price': 5500}, + ]), + ('카페라떼 (시럽: 헤이즐넛/바닐라/카라멜/연유)', 5500, 'COFFEE', None), + ('초코라떼', 5500, 'COFFEE', None), + ('카페모카', 5500, 'COFFEE', None), + ('카라멜마끼야또', 5500, 'COFFEE', None), + ('카푸치노', 5500, 'COFFEE', None), + ('밀크티 / 생강밀크티 (HOT/ICE)', 5500, 'COFFEE', [ + {'label': 'HOT', 'price': 5500}, + {'label': 'ICE', 'price': 6000}, + ]), + ('녹차라떼', 6000, 'COFFEE', None), + ('생강라떼', 6000, 'COFFEE', None), + ('고구마라떼', 6000, 'COFFEE', None), + ('호박라떼', 6000, 'COFFEE', None), + # TEA + ('율무차 (HOT/ICE)', 5000, 'TEA', [ + {'label': 'HOT', 'price': 5000}, + {'label': 'ICE', 'price': 5500}, + ]), + ('체리차 (HOT/ICE)', 5000, 'TEA', [ + {'label': 'HOT', 'price': 5000}, + {'label': 'ICE', 'price': 5500}, + ]), + ('매실차 (HOT/ICE)', 5500, 'TEA', [ + {'label': 'HOT', 'price': 5500}, + {'label': 'ICE', 'price': 6000}, + ]), + ('꿀레몬차', 6000, 'TEA', None), + ('꿀레몬+생강', 6000, 'TEA', None), + ('꿀유자차', 6000, 'TEA', None), + ('꿀자몽차', 6000, 'TEA', None), + ('꿀모과차', 6000, 'TEA', None), + ('꿀생강차', 6000, 'TEA', None), + ('꿀대추차', 8000, 'TEA', None), + ('꿀대추+생강차', 8000, 'TEA', None), + # HERBAL TEA (전부 HOT/ICE 동일가 5,000원) + ('페퍼민트 (허브티)', 5000, 'HERBAL TEA', None), + ('캐모마일', 5000, 'HERBAL TEA', None), + ('로즈마리', 5000, 'HERBAL TEA', None), + ('라벤더', 5000, 'HERBAL TEA', None), + ('홍차', 5000, 'HERBAL TEA', None), + ('녹차', 5000, 'HERBAL TEA', None), + ('자스민', 5000, 'HERBAL TEA', None), + ('국화차', 5000, 'HERBAL TEA', None), + # SOFT DRINK (ICE 전용) + ('아이스티 (복숭아/레몬)', 5000, 'SOFT DRINK', None), + ('레몬에이드 / 체리에이드', 5500, 'SOFT DRINK', None), + ('레몬콕 / 체리콕', 5500, 'SOFT DRINK', None), + ('닥터페퍼', 5000, 'SOFT DRINK', None), + ('미숫가루', 5500, 'SOFT DRINK', None), + ('밀크쉐이크', 7000, 'SOFT DRINK', None), + ('딸기쉐이크', 7000, 'SOFT DRINK', None), + ('초코쉐이크', 7000, 'SOFT DRINK', None), + ('모카쉐이크', 7000, 'SOFT DRINK', None), + ('녹차쉐이크', 7000, 'SOFT DRINK', None), + # JUICE + ('생과일 딸기쥬스 (계절과일)', 7000, 'JUICE', None), + ('생과일 키위쥬스', 7000, 'JUICE', None), + ('생과일 토마토쥬스', 7000, 'JUICE', None), + ('혼합 생과일쥬스', 7000, 'JUICE', None), + ('블루베리 스무디', 7000, 'JUICE', None), + # COCKTAIL + ('신토닉', 7000, 'COCKTAIL', None), + ('진토닉', 7000, 'COCKTAIL', None), + ('진오렌지', 7000, 'COCKTAIL', None), + ('페퍼민트 (칵테일)', 7000, 'COCKTAIL', None), + # 기타 + ('팥빙수 (2인분, 여름 한정)', 13000, '기타', None), + ('파르페', 7500, '기타', None), + ('계절과일 한 접시', 20000, '기타', None), + ('라면 (왕뚜껑)', 5000, '기타', None), + ('토스트', 5500, '기타', None), + ], + + '큰집닭강정 광운대점': [ + # 닭강정 (사이즈별, 맛 9종 중 선택) + ('닭강정 (맛 9종 - 매운/중간매운/약간매운/순한/간장/치즈/허니버터/순살후라이드/뿌링클)', 9000, '닭강정', [ + {'label': '중', 'price': 9000}, + {'label': '대 + 콜라(중)', 'price': 13000}, + {'label': '특대 + 콜라(대) — 반반 포장 가능', 'price': 18000}, + ]), + # 사이드 + ('매콤김밥 (4개)', 2500, '사이드', None), + ('만두 (5개)', 1000, '사이드', None), + ('떡 추가', 1000, '사이드', None), + ('치킨무', 500, '사이드', None), + ('웨이브 감자튀김', 3000, '사이드', None), + ('고구마치즈스틱 (4개)', 2500, '사이드', None), + ('치즈스틱 (5개)', 2500, '사이드', None), + ('치즈볼 (3개/5개)', 2500, '사이드', [ + {'label': '3개', 'price': 2500}, + {'label': '5개', 'price': 3500}, + ]), + # 소스·음료 + ('소스 (매운맛/순한맛/허니머스터드/시즈닝)', 500, '소스·음료', None), + ('콜라/사이다 (중/대)', 1500, '소스·음료', [ + {'label': '중', 'price': 1500}, + {'label': '대', 'price': 2500}, + ]), + ], + + # ===================== 사용자 직접 입력 ===================== + '고씨네 광운대점': [ + # 카레 세트 메뉴 (정가 → 할인가 적용) + ('버섯카레세트', 11500, '카레 세트', None), + ('포크카레세트', 14500, '카레 세트', None), + ('떡갈비카레세트', 12500, '카레 세트', None), + ('치킨카레세트', 11000, '카레 세트', None), + ('시푸드카레세트 [NEW]', 13500, '카레 세트', None), + ('치즈카레세트 [NEW]', 12500, '카레 세트', None), + ('포테이토카레세트', 11000, '카레 세트', None), + ('왕제카레세트', 21000, '카레 세트', None), + ('포크카레우동세트', 13000, '카레 세트', None), + ('시푸드카레우동세트', 11500, '카레 세트', None), + # 카레 메뉴 + ('닭튀김카레', 10000, '카레', None), + ('돈까스카레', 9000, '카레', None), + ('떡갈비카레', 9000, '카레', None), + ('소고기카레', 9000, '카레', None), + ('고로케카레', 9000, '카레', None), + ('치즈롤까스카레', 10000, '카레', None), + ('새우까스카레', 10000, '카레', None), + ('오징어알새우카레', 9000, '카레', None), + ('돼지고기카레', 8500, '카레', None), + ('닭가슴살카레', 8500, '카레', None), + ('버섯카레', 8000, '카레', None), + ('채소카레', 8000, '카레', None), + ('치즈카레', 8000, '카레', None), + # 카레우동 메뉴 + ('돈까스카레우동', 9000, '카레우동', None), + ('떡갈비카레우동', 9000, '카레우동', None), + ('소고기카레우동', 9000, '카레우동', None), + ('새우까스카레우동', 10000, '카레우동', None), + ('치즈롤까스카레우동', 10000, '카레우동', None), + ('오징어알새우카레우동', 9000, '카레우동', None), + ('돼지고기카레우동', 8500, '카레우동', None), + ('닭가슴살카레우동', 8500, '카레우동', None), + ('버섯카레우동', 8000, '카레우동', None), + ('치즈카레우동', 8000, '카레우동', None), + ('채소카레우동', 8000, '카레우동', None), + # 카레치킨 메뉴 + ('고씨네 카레치킨', 11000, '카레치킨', None), + ('치즈카레치킨', 13000, '카레치킨', None), + ('채소카레치킨', 13000, '카레치킨', None), + ('버섯카레치킨', 13000, '카레치킨', None), + ('오향마늘파닭카레치킨', 14000, '카레치킨', None), + # 가츠동·규동 + ('고씨네 가츠동', 10000, '가츠동·규동', None), + ('고씨네 규동', 10000, '가츠동·규동', None), + # 토핑 + ('돈까스(L)', 3000, '토핑', None), + ('떡갈비', 3000, '토핑', None), + ('감자크로켓', 1000, '토핑', None), + ('고구마치즈크로켓', 1500, '토핑', None), + ('닭튀김', 1000, '토핑', None), + ('새우까스', 4000, '토핑', None), + ('치즈롤까스', 4000, '토핑', None), + ('계란후라이', 1000, '토핑', None), + ('후랑크소시지', 2500, '토핑', None), + ('해쉬포테이토', 1500, '토핑', None), + ('치즈볼', 1500, '토핑', None), + ('치즈스틱', 1000, '토핑', None), + ('새우튀김', 1500, '토핑', None), + ], +} diff --git a/scripts/seed-restaurants/import-menus.py b/scripts/seed-restaurants/import-menus.py new file mode 100644 index 0000000..5cb7e40 --- /dev/null +++ b/scripts/seed-restaurants/import-menus.py @@ -0,0 +1,181 @@ +""" +docs/기술과 경영_메뉴판 정리.xlsx 의 메뉴+가격을 DB Menu 테이블에 일괄 삽입. + +특이 처리: +- 괄호 안 쉼표를 메뉴 구분자로 잘못 인식하지 않도록 정규식으로 보호 (·로 치환) +- 가격 셀에서 #VALUE! 같은 엑셀 오류 무시 +- 같은 식당 기존 Menu 는 모두 삭제 후 새로 INSERT (멱등 보장) +""" +import os +import re +import openpyxl + +XLSX = os.path.join(os.path.dirname(__file__), '..', '..', 'docs', '기술과 경영_메뉴판 정리.xlsx') +OUT = os.path.join(os.path.dirname(__file__), 'menus-import.sql') + +# 스시덤은 메뉴 셀에 (...) ×2 + 구성품 형태가 있어 자동 파싱 불가 → hardcode +SPECIAL_MENUS = { + '스시덤': [ + ('덤으로 연어 사시미 12pcs', 22700), + ('덤으로 광어 사시미 12pcs', 22700), + ('덤으로 모듬 사시미 12pcs', 25700), + ('덤으로 1인 모듬 사시미 8pcs', 13700), + ('캘리포니아 롤 10pcs', 8700), + ('연어 롤 10pcs', 16700), + ('사케동 (연어덮밥)', 18700), + ('카이센동', 21700), + ('회덮밥', 9700), + ('어린이 초밥 5pcs (계란1·초새우1·마요새우1·날치알군함1·유부1)', 7700), + ('계란초밥 5pcs', 4700), + ('유부초밥 5pcs', 4700), + ('덤으로 세트 1번 10pcs (광어1·활어2·연어1·생새우1·문어1·계란1·참치1·구운초밥1·유부1)', 12700), + ('덤으로 세트 2번 11pcs (광어1·활어2·연어2·생새우1·초새우1·참치1·황새치1·구운초밥1·날치알군함1)', 15700), + ('덤으로 세트 3번 12pcs (광어1·활어2·두툼한치1·연어2·참치1·참돔1·장새우1·구운초밥1·오늘초밥1·연어아부리1)', 17700), + ('덤으로 세트 4번 13pcs (광어1·활어1·연어2·참치1·안키모군함1·장어1·참돔1·참소라1·오늘초밥1·광어지느러미1·단새우1·우니1)', 21700), + ('덤으로 연어 모둠 10pcs (연어4·연어대뱃살3·연어아부리3)', 20000), + ('덤으로 직화 초밥 모둠 10pcs (연어아부리2·직화참치2·직화황새치2·직화새우2·직화한치2)', 14700), + ('덤으로 2인세트 16pcs + 구성품 (광어1·활어1·연어1·참치1·생새우1·문어1·두툼한치1·계란1)×2 + 새우튀김·고로케2·샐러드2·우동2·롤2', 34700), + ('대광어 초밥 8pcs', 18700), + ('연어 초밥 8pcs', 18700), + ('대광어 초밥 4pcs + 연어 초밥 4pcs', 18700), + ('연어 초밥 4pcs + 연어 뱃살 4pcs', 19700), + ('대광어 초밥 4pcs + 대광어 지느러미 4pcs', 19700), + ('초새우 4pcs + 생새우 4pcs', 12700), + ('새우모듬 10pcs (초새우2·생새우2·간장새우2·계란새우2·직화새우2)', 17700), + ('생새우 4pcs + 간장새우 4pcs', 14700), + ], +} + +# 엑셀 상호명 → DB 식당명 매핑 +NAME_MAP = { + 'DAYLONG COFFEE': '데이롱카페 광운대점', + 'PHO LEO': '포 레오', + 'Pas;mal(빠말)': '빠말', + 'CORD Jr': 'CORD Jr.', + '5일장햄버거': '5일장 햄버거', + '이찌마김치': '이찌마 김치', + '병천순대': '병천청년순대 광운대점', + '기사식당': '용기사 식당', + '경대컵밥': '경대컵밥 광운대점', + '국수천왕': '국수천왕 광운대점', + '밥은화': '밥은화 광운대본점', + '별난주점': '별난주점 광운대점', + '셰프밥버거': '쉐프밥버거 광운대점', + '치킨플러스': '치킨플러스 월계점', + '아, 그집': '아 그집', + '청계빨간집': '청계 빨간집', + '카페 베르데': '카페베르데', + '우우즈 베이커리': '우우즈베이커리', + '일심해장국': '일심해장국 월계점', + '천년초칼국수': '천년초우리밀칼국수', +} + + +def split_menus(s: str) -> list[str]: + """괄호 안 쉼표 보호 후 메뉴 분리.""" + protected = re.sub( + r'\(([^)]*)\)', + lambda m: '(' + m.group(1).replace(',', '·') + ')', + s, + ) + return [x.strip() for x in protected.split(',') if x.strip()] + + +def parse_prices(s: str) -> list[int]: + """가격 셀에서 숫자만 추출.""" + if not s: + return [] + return [int(x) for x in re.findall(r'\d+', s)] + + +def sql_escape(s: str) -> str: + """SQL single-quote escape.""" + return s.replace("'", "''") + + +def main(): + wb = openpyxl.load_workbook(XLSX, data_only=True) + ws = wb['Sheet1'] + + sql = ['BEGIN;', ''] + insert_count = 0 + restaurant_count = 0 + skipped = [] + + # 22 식당의 기존 메뉴 한 번에 삭제 (멱등) + target_db_names = [] + + rows = [] + for row in ws.iter_rows(min_row=2, values_only=True): + zone, name, status, category, menu, price, *_ = list(row) + [None] * 8 + if not name or not str(name).strip(): + continue + name = str(name).strip() + if not menu or not price: + continue + rows.append((name, str(menu), str(price))) + + # 1) 대상 식당 메뉴 일괄 삭제 + sql.append('-- 대상 식당의 기존 Menu 삭제 (멱등)') + for name, _, _ in rows: + db_name = NAME_MAP.get(name, name) + target_db_names.append(db_name) + sql.append( + f'DELETE FROM "Menu" WHERE "restaurantId" IN ' + f'(SELECT id FROM "Restaurant" WHERE name = \'{sql_escape(db_name)}\');' + ) + sql.append('') + + # 2) 새 메뉴 INSERT + sql.append('-- 메뉴 INSERT') + for name, menu_str, price_str in rows: + # SPECIAL_MENUS hardcode 우선 + if name in SPECIAL_MENUS: + menu_price_pairs = SPECIAL_MENUS[name] + else: + menus = split_menus(menu_str) + prices = parse_prices(price_str) + if len(menus) != len(prices): + skipped.append((name, len(menus), len(prices))) + continue + menu_price_pairs = list(zip(menus, prices)) + + db_name = NAME_MAP.get(name, name) + restaurant_count += 1 + + for m, p in menu_price_pairs: + sql.append( + f'INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") ' + f'SELECT gen_random_uuid()::text, r.id, \'{sql_escape(m)}\', {p}, false, NOW() ' + f'FROM "Restaurant" r WHERE r.name = \'{sql_escape(db_name)}\';' + ) + insert_count += 1 + + # 3) 검증 쿼리 + sql.append('') + sql.append('-- 검증') + sql.append('SELECT COUNT(*) AS total_menus FROM "Menu";') + sql.append( + 'SELECT r.name, r.zone, COUNT(m.id) AS menu_count ' + 'FROM "Restaurant" r LEFT JOIN "Menu" m ON m."restaurantId" = r.id ' + 'GROUP BY r.id, r.name, r.zone HAVING COUNT(m.id) = 0 ' + 'ORDER BY r.zone, r.name;' + ) + + sql.append('') + sql.append('COMMIT;') + + with open(OUT, 'w', encoding='utf-8') as f: + f.write('\n'.join(sql)) + + print(f'SQL 파일: {OUT}') + print(f'대상 식당: {restaurant_count}개') + print(f'INSERT 라인: {insert_count}개') + if skipped: + print('\n[SKIP - 메뉴 vs 가격 mismatch]') + for name, m, p in skipped: + print(f' - {name}: 메뉴 {m} / 가격 {p}') + + +if __name__ == '__main__': + main() diff --git a/scripts/seed-restaurants/import-py-menus.py b/scripts/seed-restaurants/import-py-menus.py new file mode 100644 index 0000000..5dbf2f7 --- /dev/null +++ b/scripts/seed-restaurants/import-py-menus.py @@ -0,0 +1,121 @@ +""" +Python 메뉴 데이터 파일 (kwoondae/frontgate/backgate _menus.py) → DB Menu 일괄 임포트. + +- 각 zone 별 dict 키 = DB Restaurant.name (정확히 일치해야 함) +- name mismatch 는 NAME_MAP 에서 보정 +- 기존 Menu 는 식당 단위로 DELETE 후 INSERT (멱등 보장) +- category, priceOptions 도 함께 입력 + +실행: + python -X utf8 scripts/seed-restaurants/import-py-menus.py +출력: + scripts/seed-restaurants/py-menus-import.sql +""" +import json +import os +import sys + +sys.stdout.reconfigure(encoding='utf-8') +sys.path.insert(0, os.path.dirname(__file__)) + +from kwoondae_menus import KWOONDAE_MENUS # noqa: E402 +from frontgate_menus import FRONTGATE_MENUS # noqa: E402 +from backgate_menus import BACKGATE_MENUS # noqa: E402 + +OUT = os.path.join(os.path.dirname(__file__), 'py-menus-import.sql') + +# Python 파일 키 → DB Restaurant.name 매핑 (불일치 시만 등록) +NAME_MAP = { + # frontgate_menus.py 입력 시점에 잘못 적은 키 + '민들레밥상': '민들레뜨락2', + '또와순대국': '또와집순대국', +} + + +def sql_escape(s: str) -> str: + return s.replace("'", "''") + + +def to_sql_json(value) -> str: + """priceOptions (list[dict]) → PostgreSQL JSONB 리터럴.""" + if value is None: + return 'NULL' + return "'" + sql_escape(json.dumps(value, ensure_ascii=False)) + "'::jsonb" + + +def to_sql_text(value) -> str: + if value is None: + return 'NULL' + return "'" + sql_escape(str(value)) + "'" + + +def main(): + all_menus = [] # [(zone, db_name, menu_tuple), ...] + for py_name, items in KWOONDAE_MENUS.items(): + db_name = NAME_MAP.get(py_name, py_name) + for it in items: + all_menus.append(('KWANGWOON_STATION', db_name, it)) + for py_name, items in FRONTGATE_MENUS.items(): + db_name = NAME_MAP.get(py_name, py_name) + for it in items: + all_menus.append(('FRONT_GATE', db_name, it)) + for py_name, items in BACKGATE_MENUS.items(): + db_name = NAME_MAP.get(py_name, py_name) + for it in items: + all_menus.append(('BACK_GATE', db_name, it)) + + # 대상 식당 목록 (중복 제거) + target_restaurants = sorted({(zone, name) for zone, name, _ in all_menus}) + + sql = ['BEGIN;', ''] + + # 1) 기존 Menu 일괄 삭제 (멱등) + sql.append('-- 대상 식당의 기존 Menu 삭제 (멱등)') + for _, name in target_restaurants: + sql.append( + f'DELETE FROM "Menu" WHERE "restaurantId" IN ' + f"(SELECT id FROM \"Restaurant\" WHERE name = '{sql_escape(name)}');" + ) + sql.append('') + + # 2) 새 Menu INSERT (category, priceOptions 포함) + # createdAt 을 clock_timestamp() 로 — row 별로 마이크로초 단위 차이를 줘서 + # 입력 순서(첫 메뉴 = 대표) 를 createdAt asc 정렬로 복원 가능. + sql.append('-- 메뉴 INSERT (createdAt = clock_timestamp 으로 입력 순서 보존)') + insert_count = 0 + for _, db_name, item in all_menus: + name, price, category, price_options = item + sql.append( + 'INSERT INTO "Menu" (id, "restaurantId", name, price, category, ' + '"priceOptions", "isSignature", "createdAt", "updatedAt") ' + f'SELECT gen_random_uuid()::text, r.id, {to_sql_text(name)}, {price}, ' + f'{to_sql_text(category)}, {to_sql_json(price_options)}, false, ' + 'clock_timestamp(), clock_timestamp() ' + f"FROM \"Restaurant\" r WHERE r.name = '{sql_escape(db_name)}';" + ) + insert_count += 1 + + # 3) 검증 쿼리 + sql.append('') + sql.append('-- 검증: 메뉴 수가 0 인 대상 식당이 있으면 알림 (NAME 불일치 의심)') + sql.append('SELECT r.name, r.zone FROM "Restaurant" r') + sql.append('WHERE r.name IN (') + sql.append(',\n'.join(f" '{sql_escape(name)}'" for _, name in target_restaurants)) + sql.append(') AND NOT EXISTS (SELECT 1 FROM "Menu" m WHERE m."restaurantId" = r.id);') + sql.append('') + + sql.append('COMMIT;') + + with open(OUT, 'w', encoding='utf-8') as f: + f.write('\n'.join(sql)) + + print(f'OUT: {OUT}') + print(f'대상 식당: {len(target_restaurants)}개') + print(f'메뉴 INSERT: {insert_count}개') + print(f'\nNAME_MAP 매핑:') + for k, v in NAME_MAP.items(): + print(f' {k} -> {v}') + + +if __name__ == '__main__': + main() diff --git a/scripts/seed-restaurants/kwoondae_menus.py b/scripts/seed-restaurants/kwoondae_menus.py new file mode 100644 index 0000000..938d098 --- /dev/null +++ b/scripts/seed-restaurants/kwoondae_menus.py @@ -0,0 +1,788 @@ +""" +광운대역 zone 식당 메뉴 데이터. + +스키마: +{식당 DB명: [(메뉴이름, 가격, 카테고리, priceOptions_or_None), ...]} + +- 메뉴 단일 가격: (name, price, category, None) +- 사이즈/옵션 있는 메뉴: (name, 대표가격, category, [{label, price}, ...]) + - 대표가격은 priceOptions 중 가장 작은 값으로 (maxPrice 필터용) +- category 가 None 이면 미분류 +""" + +KWOONDAE_MENUS = { + # ===================== 단순 (카테고리 없음) ===================== + '서초우동 광운대역점': [ + ('즉석우동', 4000, None, None), + ('김치우동', 4000, None, None), + ('어묵우동', 4500, None, None), + ('어묵김치우동', 4500, None, None), + ('잔치국수', 4000, None, None), + ('비빔국수', 4500, None, None), + ('열무국수', 6500, None, None), + ('열무냉면', 7000, None, None), + ('쫄면', 4500, None, None), + ('물냉면', 6000, None, None), + ('비빔냉면', 6000, None, None), + ('어묵만', 4500, None, None), + ('서리태콩국수', 7000, None, None), + ('김밥', 3000, None, None), + ('고기만두', 3500, None, None), + ('김치만두', 3500, None, None), + ('반반만두 (김치반/고기반)', 3500, None, None), + ], + '왕토종순대국': [ + ('전복갈비탕', 17000, None, None), + ('갈비탕', 15000, None, None), + ('소내장탕', 12000, None, None), + ('소머리국밥', 11000, None, None), + ('한우소머리국밥', 14000, None, None), + ('우거지갈비탕', 14000, None, None), + ('만두국', 10000, None, None), + ('찐만두', 9000, None, None), + ('얼큰순대국', 11000, None, None), + ('순대국', 10000, None, None), + ('뼈다귀탕', 10000, None, None), + ('도가니탕', 13000, None, None), + ('육개장', 11000, None, None), + ('소곱창전골 (소/대)', 28000, None, [{'label': '소', 'price': 28000}, {'label': '대', 'price': 45000}]), + ('감자탕 (소/중/대)', 30000, None, [{'label': '소', 'price': 30000}, {'label': '중', 'price': 35000}, {'label': '대', 'price': 40000}]), + ('수육', 20000, None, None), + ('순대모듬 (중/대)', 25000, None, [{'label': '중', 'price': 25000}, {'label': '대', 'price': 35000}]), + ('찰순대', 7000, None, None), + ('토종 닭도리탕 (예약)', 60000, None, None), + ('소주', 5000, None, None), + ('맥주', 5000, None, None), + ('막걸리', 4000, None, None), + ('청하', 6000, None, None), + ('음료', 2000, None, None), + ], + '가마솥뼈다귀감자탕': [ + # 메인 + ('감자탕 (소/중/대)', 30000, '메인', [{'label': '소', 'price': 30000}, {'label': '중', 'price': 35000}, {'label': '대', 'price': 40000}]), + ('해장국', 10000, '메인', None), + # 추가·사이드 + ('뼈 추가', 10000, '추가', None), + ('라면', 2000, '추가', None), + ('수제비', 2000, '추가', None), + ('볶음밥', 2000, '추가', None), + ('공기밥', 1000, '추가', None), + # 주류·음료 + ('소주', 5000, '주류·음료', None), + ('맥주', 5000, '주류·음료', None), + ('청하', 6000, '주류·음료', None), + ('막걸리', 4000, '주류·음료', None), + ('음료', 2000, '주류·음료', None), + ], + '돈장군 광운대본점': [ + ('대패삼겹', 7000, None, None), + ('돼지갈비', 7000, None, None), + ('삼겹살', 8500, None, None), + ('목살', 8000, None, None), + ('항정살', 11000, None, None), + ('고추장삼겹살', 9500, None, None), + ('소갈비살', 15000, None, None), + ('안창살', 17000, None, None), + ('육회', 14000, None, None), + ], + '정담소반': [ + ('밥없이 제육만', 6000, None, None), + ('고등어조림', 9000, None, None), + ('제육볶음', 7500, None, None), + ('뚝배기불고기', 7500, None, None), + ('김치찌개', 8000, None, None), + ('참치김치찌개', 8000, None, None), + ('청국장', 7000, None, None), + ('순두부', 7000, None, None), + ], + '집밥': [ + ('백반', 9000, None, None), + ('계란후라이', 1000, None, None), + ('맥주', 4000, None, None), + ('소주', 4000, None, None), + ('청하', 5000, None, None), + ('막걸리', 4000, None, None), + ], + '마떡다이천 광운대본점': [ + # 세트 메뉴 (2인 이상) + ('마떡세트 (마떡1인+야끼만두1인+순대1인+꼬마김밥1인+음료수)', 13000, '세트 메뉴', None), + ('매떡세트 (매떡1인+야끼만두1인+순대1인+오뎅1인+꼬마김밥+음료수)', 15500, '세트 메뉴', None), + # 떡볶이 + ('마늘떡볶이 (1인분)', 3500, '떡볶이', None), + ('매운떡볶이 (1인분)', 4000, '떡볶이', None), + # 순대 + ('찰순대 (1인분)', 4000, '순대', None), + ('찰순대 내장포함 (1인분)', 5000, '순대', None), + ('내장만 · 선택불가 (1인분)', 5000, '순대', None), + # 어묵 + ('미도어묵 (1인 3개)', 2500, '어묵', None), + ('미도어묵 (1개)', 900, '어묵', None), + # 김밥 + ('꼬마김밥 (1인분/5줄)', 3000, '김밥', None), + # 사이드 + ('야끼만두 (1인분/3개)', 2000, '사이드', None), + ('야끼만두 (1개)', 700, '사이드', None), + ('계란 (1개)', 700, '사이드', None), + # 음료수 + ('탄산음료 (355ml) — 펩시콜라/스프라이트', 1500, '음료수', None), + ('탄산음료 (500ml)', 2000, '음료수', None), + # 재료 포장 (밀키트) + ('마늘떡볶이 재료포장 (2~3인분)', 7000, '재료 포장 (밀키트)', None), + ('매운떡볶이 재료포장 (2~3인분)', 8000, '재료 포장 (밀키트)', None), + ], + '마포연탄불고기': [ + # 식사류 + ('연탄불고기쌈밥', 14000, '식사류', None), + ('안주연탄불고기', 16000, '식사류', None), + ('오돌낙지뚝배기비빔밥', 13000, '식사류', None), + ('열무된장비빔밥', 9000, '식사류', None), + ('김치찌개', 9000, '식사류', None), + ('된장국수', 6000, '식사류', None), + ('냉면 (물/비빔)', 8000, '식사류', None), + # 고기 + ('업진살', 39000, '고기', None), + ('모듬특수부위', 29000, '고기', None), + ('암돼지갈비', 18000, '고기', None), + ('소갈빗살', 25000, '고기', None), + ('생삼겹살', 18000, '고기', None), + ('통갈매기', 19000, '고기', None), + ('목항정살', 19000, '고기', None), + ('암돼지목살', 18000, '고기', None), + # 주류 + ('소주', 5000, '주류', None), + ('생맥주', 5000, '주류', None), + ('청하', 6000, '주류', None), + ('맥주', 4000, '주류', None), + ('음료수', 2000, '주류', None), + ], + '마산아구찜': [ + ('아구찜 (소/중/대)', 30000, None, [{'label': '소', 'price': 30000}, {'label': '중', 'price': 35000}, {'label': '대', 'price': 40000}]), + ('아구탕 (소/중/대)', 30000, None, [{'label': '소', 'price': 30000}, {'label': '중', 'price': 35000}, {'label': '대', 'price': 40000}]), + ('아구볶음', 20000, None, None), + ('콩국수', 8000, None, None), + ('닭도리탕', 25000, None, None), + ('두루치기', 15000, None, None), + ('동태찌개', 15000, None, None), + ('생선조림', 15000, None, None), + ], + + # ===================== 카테고리 있음 ===================== + '사계절김밥': [ + # 김밥류 + ('사계절김밥', 4000, '김밥류', None), + ('참치김밥', 5000, '김밥류', None), + ('치즈김밥', 5000, '김밥류', None), + ('유부김밥', 5000, '김밥류', None), + ('김치김밥', 5000, '김밥류', None), + ('고추참치김밥', 5300, '김밥류', None), + ('크래미김밥', 5300, '김밥류', None), + ('와사비참치', 5300, '김밥류', None), + ('와사비크래미', 6000, '김밥류', None), + ('쇠고기김밥', 6000, '김밥류', None), + ('새우튀김김밥', 6000, '김밥류', None), + ('돈가스김밥', 6000, '김밥류', None), + # 면류·기타 + ('라면', 5000, '면류·기타', None), + ('떡라면', 5500, '면류·기타', None), + ('치즈라면', 5500, '면류·기타', None), + ('만두라면', 6000, '면류·기타', None), + ('해장라면', 6000, '면류·기타', None), + ], + '엄마손김밥&분식': [ + # 김밥류 + ('야채김밥', 3800, '김밥류', None), + ('치즈김밥', 4500, '김밥류', None), + ('김치김밥', 4500, '김밥류', None), + ('소고기김밥', 6000, '김밥류', None), + ('샐러드김밥', 4500, '김밥류', None), + ('새우튀김김밥', 6000, '김밥류', None), + ('고추참치김밥', 5500, '김밥류', None), + ('돈가스김밥', 6000, '김밥류', None), + # 식사류 + ('오므라이스', 7500, '식사류', None), + ('김치볶음밥', 7500, '식사류', None), + ('제육덮밥', 9000, '식사류', None), + ('순두부찌개', 7500, '식사류', None), + ('수제돈까스', 9000, '식사류', None), + ('치즈돈까스', 8500, '식사류', None), + ('고구마돈까스', 8500, '식사류', None), + # 라면류 + ('라면', 5000, '라면류', None), + ('떡라면', 6000, '라면류', None), + ('만두라면', 6000, '라면류', None), + ('치즈라면', 5000, '라면류', None), + ('순두부라면', 6000, '라면류', None), + ('부대라면', 7000, '라면류', None), + ('짬뽕라면', 7000, '라면류', None), + ('어묵', 5000, '라면류', None), + ('공기밥', 1000, '라면류', None), + # 우동&국수 + ('어묵우동', 6000, '우동&국수', None), + ('유부우동', 5500, '우동&국수', None), + ('김치우동', 6000, '우동&국수', None), + ('칼국수', 7000, '우동&국수', None), + ('김치칼국수', 7000, '우동&국수', None), + ('잔치국수', 7000, '우동&국수', None), + ('비빔국수', 7000, '우동&국수', None), + ('쫄면', 7000, '우동&국수', None), + ('냉면 (물/비빔)', 7000, '우동&국수', None), + # 떡&만두&수제비 + ('떡국', 7000, '떡&만두&수제비', None), + ('떡만두국', 8000, '떡&만두&수제비', None), + ('만두국', 7500, '떡&만두&수제비', None), + ('수제비', 7000, '떡&만두&수제비', None), + ('얼큰수제비', 7000, '떡&만두&수제비', None), + ('김치수제비', 7000, '떡&만두&수제비', None), + ('들깨수제비', 7500, '떡&만두&수제비', None), + ], + '명태이야기': [ + # 매콤 명태조림 + ('매콤 시래기 명태조림 (2인이상)', 16000, '명태조림', None), + ('시래기 추가', 3000, '명태조림', None), + ('매콤 명태조림 (소/중/대)', 26000, '명태조림', [{'label': '소(2마리)', 'price': 26000}, {'label': '중(3마리)', 'price': 39000}, {'label': '대(4마리)', 'price': 52000}]), + ('얼큰 가오리 조림 (중/대)', 39000, '명태조림', [{'label': '중(2인)', 'price': 39000}, {'label': '대(3~4인)', 'price': 52000}]), + ('매콤 명태조림 정식 (2인이상)', 13000, '명태조림', None), + # 식사 + ('영양솥밥', 3000, '식사', None), + ('고등어정식', 13000, '식사', None), + ('명태초무침', 17000, '식사', None), + ('왕새우튀김', 17000, '식사', None), + ('오징어순대', 22000, '식사', None), + ('어린이돈까스', 10000, '식사', None), + # 주류 + ('소주', 5000, '주류', None), + ('맥주', 5000, '주류', None), + ('막걸리', 4000, '주류', None), + ('청하', 6000, '주류', None), + ('음료수', 2000, '주류', None), + ], + '미미식당 월계점': [ + # 식사 + ('한우 불고기', 16000, '식사', None), + ('제주 은갈치조림', 13000, '식사', None), + ('낙지볶음', 13000, '식사', None), + ('오삼불고기', 13000, '식사', None), + ('오징어볶음', 13000, '식사', None), + ('김치 제육볶음', 12000, '식사', None), + ('돼지고기 김치찌개', 10000, '식사', None), + ('꽁치 김치찌개', 10000, '식사', None), + ('오뎅 김치찌개', 10000, '식사', None), + ('돼지고기 애호박찌개', 10000, '식사', None), + ('해물 순두부찌개', 10000, '식사', None), + ('차돌 된장찌개', 10000, '식사', None), + ('가정식백반', 9000, '식사', None), + ('생삼겹살 (180g, 2인분 이상)', 18000, '식사', None), + ('고추장 석쇠구이 (계란찜+된장찌개 포함)', 16000, '식사', None), + ('고추장 불고기정식', 13000, '식사', None), + ('연포탕', 13000, '식사', None), + ('대구탕', 11000, '식사', None), + ('동태탕', 10000, '식사', None), + ('계란찜', 5000, '식사', None), + # 후식 + ('잔치국수 (동절기)', 5000, '후식', None), + ('열무국수 (하절기)', 5000, '후식', None), + # 추가·주류 + ('라면사리', 1000, '주류·추가', None), + ('공기밥', 1000, '주류·추가', None), + ('소주', 5000, '주류·추가', None), + ('맥주', 5000, '주류·추가', None), + ('막걸리', 4000, '주류·추가', None), + ('청하', 6000, '주류·추가', None), + ('백세주', 9000, '주류·추가', None), + ('복분자', 12000, '주류·추가', None), + ('음료수', 2000, '주류·추가', None), + ], + '커피는기억의끌림': [ + # ESPRESSO COFFEE + ('에스프레소 (솔로/도피오/룽고/리스트레또/더블)', 3500, 'ESPRESSO COFFEE', None), + ('에스프레소 (마끼아또/사케라)', 4000, 'ESPRESSO COFFEE', None), + # VARIATION + ('아메리카노', 3500, 'VARIATION', None), + ('카페라떼 / 카푸치노', 4000, 'VARIATION', None), + ('코코넛라떼 (COCONUT LATTE)', 5500, 'VARIATION', None), + ('카페모카 / 카라멜 / 바닐라 / 헤이즐넛', 4500, 'VARIATION', None), + ('아포가토', 5000, 'VARIATION', None), + ('녹차라떼 / 밀크티', 5000, 'VARIATION', None), + ('흑임자 / 쑥라떼', 5500, 'VARIATION', None), + ('고구마 라떼 / 달고나 라떼 (ICE)', 5000, 'VARIATION', None), + # JUICE / ADE / ALCOHOL + ('애플주스 골드메달 / 스파클링', 4500, 'JUICE·ADE·ALCOHOL', None), + ('에이드 (레몬/자몽/모히또/패션후르츠)', 4800, 'JUICE·ADE·ALCOHOL', None), + ('스무디 (딸기/믹스베리/망고)', 4500, 'JUICE·ADE·ALCOHOL', None), + ('아이스티 (복숭아/자몽)', 4500, 'JUICE·ADE·ALCOHOL', None), + ('바닐라 프라페', 6000, 'JUICE·ADE·ALCOHOL', None), + # TEA + ('허브티 (캐모마일/페퍼민트/레몬밤/재스민)', 4500, 'TEA', None), + ('테일러 오브 헤로게이트 (Lemon & Orange)', 4500, 'TEA', None), + ('티 (녹차/레몬/유자/생강/모과)', 5000, 'TEA', None), + ('쌍화차 / 대추차 (9월말~3월)', 7000, 'TEA', None), + # HAND DRIP + ('핸드드립 (HOT/ICE)', 5500, 'HAND DRIP', [{'label': 'HOT', 'price': 5500}, {'label': 'ICE', 'price': 6000}]), + # CHOCOLATE + ('핫쵸코', 4000, 'CHOCOLATE', None), + ('민트쵸코 / 시나몬쵸코', 5000, 'CHOCOLATE', None), + ], + + '더원': [ + # 밥류 + ('짜장밥', 7000, '밥류', None), + ('야채볶음밥', 7000, '밥류', None), + ('삼선볶음밥', 9000, '밥류', None), + ('사천볶음밥', 10000, '밥류', None), + ('새우볶음밥', 10000, '밥류', None), + ('마파두부밥', 10000, '밥류', None), + ('잡채밥', 10000, '밥류', None), + ('고추장제밥', 10000, '밥류', None), + ('삼선짬뽕밥', 10000, '밥류', None), + ('유산슬덮밥', 10000, '밥류', None), + ('잡탕밥', 15000, '밥류', None), + # 면류 + ('유니짜장', 6000, '면류', None), + ('삼선정반짜장', 9000, '면류', None), + ('삼선간짜장', 10000, '면류', None), + ('사천탕면', 10000, '면류', None), + ('해물볶음면', 10000, '면류', None), + ('울면', 10000, '면류', None), + ('삼선우동', 10000, '면류', None), + ('삼선짬뽕', 10000, '면류', None), + ('백짬뽕', 10000, '면류', None), + ('중사이밍면', 11000, '면류', None), + ('짜사이탕면', 11000, '면류', None), + ('굴짬뽕', 12000, '면류', None), + # 요리류 + ('해물 누룽지탕 (누룽지 4개)', 30000, '요리류', None), + ('어향가지 (소/대)', 20000, '요리류', [{'label': '소', 'price': 20000}, {'label': '대', 'price': 25000}]), + ('마파두부 (소/대)', 20000, '요리류', [{'label': '소', 'price': 20000}, {'label': '대', 'price': 25000}]), + ('고추잡채 (소/대, 꽃빵 2/4개)', 25000, '요리류', [{'label': '소', 'price': 25000}, {'label': '대', 'price': 30000}]), + ('유산슬 (소/대)', 25000, '요리류', [{'label': '소', 'price': 25000}, {'label': '대', 'price': 30000}]), + ('양장피 (소/대)', 30000, '요리류', [{'label': '소', 'price': 30000}, {'label': '대', 'price': 40000}]), + ('팔보채 (소/대)', 45000, '요리류', [{'label': '소', 'price': 45000}, {'label': '대', 'price': 55000}]), + ('꽃빵 추가', 1000, '요리류', None), + # 튀김류 + ('탕수육 (소/대)', 18000, '튀김류', [{'label': '소', 'price': 18000}, {'label': '대', 'price': 24000}]), + ('라조육 (소/대)', 20000, '튀김류', [{'label': '소', 'price': 20000}, {'label': '대', 'price': 25000}]), + ('깐풍기 (소/대)', 22000, '튀김류', [{'label': '소', 'price': 22000}, {'label': '대', 'price': 27000}]), + ('유린기 (소/대)', 22000, '튀김류', [{'label': '소', 'price': 22000}, {'label': '대', 'price': 27000}]), + ('라조기 (소/대)', 22000, '튀김류', [{'label': '소', 'price': 22000}, {'label': '대', 'price': 27000}]), + ('깐풍육 (소/대)', 22000, '튀김류', [{'label': '소', 'price': 22000}, {'label': '대', 'price': 27000}]), + ('깐쇼새우 (소/대)', 25000, '튀김류', [{'label': '소', 'price': 25000}, {'label': '대', 'price': 30000}]), + ('깐풍새우 (소/대)', 25000, '튀김류', [{'label': '소', 'price': 25000}, {'label': '대', 'price': 30000}]), + ('와사비크림새우 (소/대)', 25000, '튀김류', [{'label': '소', 'price': 25000}, {'label': '대', 'price': 30000}]), + # 만두 + ('빙화만두', 8000, '만두', None), + # 북경오리 + ('북경오리 단품 (2~3인 기준)', 80000, '북경오리', None), + ('북경오리 정식 (3~4인 기준)', 100000, '북경오리', None), + # 세트메뉴 + ('세트1: 유니짜장 2개 + 탕수육', 20000, '세트메뉴', None), + ('세트2: 유니짜장 + 삼선짬뽕 + 탕수육', 22000, '세트메뉴', None), + ('세트3: 삼선짬뽕 2개 + 탕수육', 24000, '세트메뉴', None), + # 주류 + ('이과두주', 4000, '주류', None), + ('연태고량주 (소/중/대)', 12000, '주류', [{'label': '소', 'price': 12000}, {'label': '중', 'price': 22000}, {'label': '대', 'price': 40000}]), + ('공부가주 (대)', 40000, '주류', None), + ('금문고량주', 80000, '주류', None), + ('설원', 30000, '주류', None), + ('칭따오 맥주', 9000, '주류', None), + ('청하', 6000, '주류', None), + ('맥주', 5000, '주류', None), + ('소주', 5000, '주류', None), + ('막걸리', 4000, '주류', None), + ('음료 (사이다/콜라/환타)', 2000, '주류', None), + # 술안주 + ('해파리 냉채', 20000, '술안주', None), + ('짬뽕탕 (술국)', 25000, '술안주', None), + ], + + '친친': [ + # 요리류 - 고기 + ('찹쌀 탕수육 (소/중/1인)', 9000, '요리류·고기', [{'label': '소', 'price': 16000}, {'label': '중', 'price': 21000}, {'label': '1인', 'price': 9000}]), + ('찹쌀 사천탕수육 (소/중/1인)', 11000, '요리류·고기', [{'label': '소', 'price': 19000}, {'label': '중', 'price': 26000}, {'label': '1인', 'price': 11000}]), + ('찹쌀 라조육 (소/중/1인)', 11000, '요리류·고기', [{'label': '소', 'price': 19000}, {'label': '중', 'price': 26000}, {'label': '1인', 'price': 11000}]), + ('찹쌀 깐풍육 (소/중/1인)', 11000, '요리류·고기', [{'label': '소', 'price': 19000}, {'label': '중', 'price': 26000}, {'label': '1인', 'price': 11000}]), + ('꿔바로우 (소/중/1인)', 12000, '요리류·고기', [{'label': '소', 'price': 19000}, {'label': '중', 'price': 26000}, {'label': '1인', 'price': 12000}]), + # 요리류 - 닭 + ('깐풍기 (소/중)', 21000, '요리류·닭', [{'label': '소', 'price': 21000}, {'label': '중', 'price': 31000}]), + ('라조기 (소/중)', 21000, '요리류·닭', [{'label': '소', 'price': 21000}, {'label': '중', 'price': 31000}]), + ('유린기 (소/중)', 26000, '요리류·닭', [{'label': '소', 'price': 26000}, {'label': '중', 'price': 34000}]), + ('꿔더기 (소/중)', 26000, '요리류·닭', [{'label': '소', 'price': 26000}, {'label': '중', 'price': 34000}]), + # 요리류 - 새우 + ('칠리 중새우 (소/중)', 29000, '요리류·새우', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('레몬 크림새우 (소/중)', 29000, '요리류·새우', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('깐풍 중새우 (소/중)', 29000, '요리류·새우', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + # 단품 요리 + ('소고기 당면잡채', 21000, '단품 요리', None), + ('소고기 마파두부', 21000, '단품 요리', None), + ('술국 해물짬뽕', 21000, '단품 요리', None), + # 특선 요리 + ('양장피 (소/중)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('유산슬 (소/중)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('해물 누룽지탕 (소/중)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('소고기 고추잡채 (소/중, 꽃빵)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('깐풍관자 (소/중)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('마라샹궈 (소/중)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('팔보채 (소/중)', 29000, '특선 요리', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}]), + ('전가복 (소/중)', 49000, '특선 요리', [{'label': '소', 'price': 49000}, {'label': '중', 'price': 66000}]), + ('어향동고', 36000, '특선 요리', None), + ('어향가지', 29000, '특선 요리', None), + # 세트 메뉴 + ('Set 1: 탕수육 + 연태 고량주(소)', 21000, '세트 메뉴', None), + ('Set 2: 양장피 + 유산슬 + 연태 고량주(소)', 66000, '세트 메뉴', None), + ('Set 3: 유린기 + 팔보채 + 연태 고량주(소)', 62000, '세트 메뉴', None), + ('Set 4: 사천 탕수육 + 양장피 + 공부가주(소)', 56000, '세트 메뉴', None), + ('Set 5: 해물 누룽지탕 + 깐풍기 + 공부가주(소)', 66000, '세트 메뉴', None), + # 코스 + ('A 코스 (2인 이상)', 14000, '코스', None), + ('B 코스 (2인 이상)', 18000, '코스', None), + ('C 코스 (2인 이상)', 30000, '코스', None), + ('Special Set (양장피+유산슬+고추잡채+깐쇼새우)', 99000, '코스', None), + # 면류 + ('친친 짜장', 6000, '면류', None), + ('삼선 짜장', 8000, '면류', None), + ('삼선 고추짜장', 8000, '면류', None), + ('삼선 간짜장', 10000, '면류', None), + ('삼선 고추간짜장', 10000, '면류', None), + ('팔보 쟁반짜장', 21000, '면류', None), + ('삼선 우동', 9000, '면류', None), + ('콩나물해장 짬뽕', 8000, '면류', None), + ('친친 짬뽕', 8000, '면류', None), + ('삼선 짬뽕 (상/중/하)', 9000, '면류', None), + ('소고기 짬뽕', 10000, '면류', None), + ('볶음 짬뽕', 21000, '면류', None), + ('백 짬뽕', 9000, '면류', None), + ('울면', 9000, '면류', None), + # 식사류 + ('친친 짜장밥', 8000, '식사류', None), + ('삼선 짜장밥', 10000, '식사류', None), + ('삼선 고추짜장밥', 10000, '식사류', None), + ('삼선 간짜장밥', 11000, '식사류', None), + ('삼선 고추간짜장밥', 11000, '식사류', None), + ('모듬볶음밥', 8000, '식사류', None), + ('새우 볶음밥', 9000, '식사류', None), + ('콩나물해장 짬뽕밥', 8000, '식사류', None), + ('친친 짬뽕밥', 8000, '식사류', None), + ('삼선 짬뽕밥 (상/중/하)', 9000, '식사류', None), + ('백 짬뽕밥', 9000, '식사류', None), + ('잡탕밥', 13000, '식사류', None), + ('삼선 볶음밥', 10000, '식사류', None), + ('울면밥', 9000, '식사류', None), + ('소고기 필라프', 11000, '식사류', None), + ('소고기 당면잡채밥', 9000, '식사류', None), + ('소고기 마파두부 덮밥', 9000, '식사류', None), + ('등심 가지덮밥', 9000, '식사류', None), + ('유산슬덮밥', 13000, '식사류', None), + ('중화제육덮밥', 9000, '식사류', None), + ('중라 소불고기 덮밥', 13000, '식사류', None), + # 계절메뉴 + ('냉 짬뽕 (하절기)', 9000, '계절메뉴', None), + ('콩국수 (하절기)', 10000, '계절메뉴', None), + ('비빔면 하/중 (하절기)', 9000, '계절메뉴', None), + ('굴 짬뽕 (동절기)', 11000, '계절메뉴', None), + ('굴 국밥 (동절기)', 10000, '계절메뉴', None), + # 사이드 메뉴 + ('수제 군만두', 7000, '사이드', None), + ('꼬마 군만두', 6000, '사이드', None), + ('물만두', 6000, '사이드', None), + ('꽃빵', 6000, '사이드', None), + ('가지튀김', 11000, '사이드', None), + ('버섯 탕수육', 11000, '사이드', None), + ('춘권', 6000, '사이드', None), + ('계란 후라이', 1500, '사이드', None), + # 고량주 + ('여가 연태 고량주 (소/중/대)', 14000, '고량주', [{'label': '소', 'price': 14000}, {'label': '중', 'price': 26000}, {'label': '대', 'price': 46000}]), + ('백년 연태 고량주 (중/대)', 26000, '고량주', [{'label': '중', 'price': 26000}, {'label': '대', 'price': 46000}]), + ('천진 고량주 (소/중/대)', 19000, '고량주', [{'label': '소', 'price': 19000}, {'label': '중', 'price': 31000}, {'label': '대', 'price': 56000}]), + ('공부가주 (소/중/대)', 16000, '고량주', [{'label': '소', 'price': 16000}, {'label': '중', 'price': 29000}, {'label': '대', 'price': 51000}]), + ('북경 고량주', 8000, '고량주', None), + ('이과두주', 8000, '고량주', None), + ('양화대곡 (중/대)', 36000, '고량주', [{'label': '중', 'price': 36000}, {'label': '대', 'price': 71000}]), + # 기타 주류 + ('참이슬', 5000, '기타 주류', None), + ('처음처럼', 5000, '기타 주류', None), + ('새로', 5000, '기타 주류', None), + ('카스', 5000, '기타 주류', None), + ('테라', 6000, '기타 주류', None), + ('칭따오', 8000, '기타 주류', None), + ('막걸리', 5000, '기타 주류', None), + ], + + '놀부부대찌개 광운대역점': [ + # 단품 부대찌개 + ('놀부 부대찌개 (BEST)', 10000, '단품 부대찌개', None), + ('치즈 부대찌개', 11000, '단품 부대찌개', None), + ('우삼겹 부대찌개', 12000, '단품 부대찌개', None), + ('콩나물 불고기 부대찌개', 11500, '단품 부대찌개', None), + # 철판 (2인분 주문, 공기밥 미포함) + ('치즈 닭갈비철판', 16500, '철판', None), + ('닭갈비철판', 14500, '철판', None), + ('쭈꾸미철판', 15500, '철판', None), + # 세트 + ('통등심돈까스 통팡세트 (1인/2인/3~4인)', 32000, '세트', [{'label': '1인', 'price': 32000}, {'label': '2인', 'price': 43000}, {'label': '3~4인', 'price': 53000}]), + ('놀부부대찌개 육수세트 (1인/2인)', 31500, '세트', [{'label': '1인', 'price': 31500}, {'label': '2인', 'price': 42500}]), + # 사이드 + ('물만두', 4000, '사이드', None), + ('제육볶음', 11000, '사이드', None), + ('통등심 셰프돈까스', 11000, '사이드', None), + # 사리·추가 + ('라면', 1000, '사리·추가', None), + ('햄', 2000, '사리·추가', None), + ('수제비', 2000, '사리·추가', None), + ('사리면', 2000, '사리·추가', None), + ('슬라이스 치즈', 2000, '사리·추가', None), + ('콩나물', 2000, '사리·추가', None), + ('통등심 돈까스 통팡', 9500, '사리·추가', None), + ('김자반', 2500, '사리·추가', None), + ('조랭이떡', 2000, '사리·추가', None), + ('우동', 2000, '사리·추가', None), + ('떡사리', 4000, '사리·추가', None), + ('두부', 6000, '사리·추가', None), + ('우삼겹', 10000, '사리·추가', None), + ('철판 공기밥', 1000, '사리·추가', None), + ('철판 우동', 2000, '사리·추가', None), + ('철판 볶음밥', 2500, '사리·추가', None), + ('철판 치즈볶음밥', 5000, '사리·추가', None), + ('철판 모짜렐라치즈', 5000, '사리·추가', None), + # 음료·주류 + ('소주', 5000, '음료·주류', None), + ('맥주', 5000, '음료·주류', None), + ('청하', 6000, '음료·주류', None), + ('막걸리', 4000, '음료·주류', None), + ('음료', 2000, '음료·주류', None), + ], + + '명동찌개마을 광운대역점': [ + # 본 메뉴 + ('양푼 생고기 김치찌개 (중/대, 국내산)', 16000, '찌개·탕', [{'label': '중', 'price': 16000}, {'label': '대', 'price': 25000}]), + ('대구뽈탕 (중/대, 지리/얼큰)', 20000, '찌개·탕', [{'label': '중', 'price': 20000}, {'label': '대', 'price': 29000}]), + ('양푼동태탕 (중/대)', 16000, '찌개·탕', [{'label': '중', 'price': 16000}, {'label': '대', 'price': 25000}]), + ('양푼동태내장탕 (중/대)', 25000, '찌개·탕', [{'label': '중', 'price': 25000}, {'label': '대', 'price': 34000}]), + ('양푼내장탕 (중/대)', 16000, '찌개·탕', [{'label': '중', 'price': 16000}, {'label': '대', 'price': 25000}]), + # 추가 + ('고기 추가', 8000, '추가', None), + ('내장 추가', 8000, '추가', None), + ('동태 추가', 8000, '추가', None), + ('계란말이', 7000, '추가', None), + ('만두사리', 4000, '추가', None), + ('햄사리', 4000, '추가', None), + ('당면사리', 2000, '추가', None), + ('떡사리', 2000, '추가', None), + ('생면사리', 2000, '추가', None), + ('라면사리', 1000, '추가', None), + ('공기밥', 1000, '추가', None), + ], + + '스마일돈까스': [ + # 메인메뉴 + ('반반 돈까스 (BEST)', 10500, '메인메뉴', None), + ('카레 돈까스', 10000, '메인메뉴', None), + ('옛날 돈까스 (BEST)', 10000, '메인메뉴', None), + ('크림 돈까스', 10000, '메인메뉴', None), + ('제육 & 돈까스반 (BEST)', 12000, '메인메뉴', None), + ('매운 돈까스', 10000, '메인메뉴', None), + # 추가 + ('밥 한스쿱 추가', 500, '추가', None), + ('밥 두스쿱 추가', 1000, '추가', None), + ('돈까스 반쪽 추가', 3500, '추가', None), + ('제육 추가', 4500, '추가', None), + ('모닝빵 추가', 500, '추가', None), + # 음료 + ('코카콜라 (355ml)', 2000, '음료', None), + ('제로콜라 (355ml)', 2000, '음료', None), + ('스프라이트 (355ml)', 2000, '음료', None), + ('제로펩시 (355ml)', 2000, '음료', None), + ], + + '치킨클럽 성북역본점': [ + # 치킨 + ('치떡', 25000, '치킨', None), + ('옛날 후라이드', 18000, '치킨', None), + ('양념 치킨', 20000, '치킨', None), + ('매운 양념치킨', 20000, '치킨', None), + ('간장 치킨', 20000, '치킨', None), + ('파닭 치킨', 20000, '치킨', None), + ('마늘 치킨', 20000, '치킨', None), + ('불닭 감자', 21000, '치킨', None), + ('순) 튀김 찜닭', 21000, '치킨', None), + ('순) 튀김 찜닭 (1.5)', 28000, '치킨', None), + ('똥집 튀김', 14000, '치킨', None), + ('똥집 볶음', 15000, '치킨', None), + # 세트 + ('치클세트 (후라이드+새우튀김5+라면+황도+감자튀김)', 40000, '세트', None), + ('연인세트 (후반+양반+감자튀김+라면)', 28000, '세트', None), + ('친구세트 (후반+양반+간반+감자튀김+라면)', 37000, '세트', None), + # 스몰안주 + ('감자 튀김', 8000, '스몰안주', None), + ('닭봉', 8000, '스몰안주', None), + ('치즈볼', 8000, '스몰안주', None), + ('핫도그', 8000, '스몰안주', None), + ('번데기탕', 9000, '스몰안주', None), + ('계란찜', 10000, '스몰안주', None), + ('국물 떡볶이', 10000, '스몰안주', None), + ('튀김 쥐포', 7000, '스몰안주', None), + ('꼬마 만두', 6000, '스몰안주', None), + ('김 말이', 8000, '스몰안주', None), + ('황도', 10000, '스몰안주', None), + ('라면', 5000, '스몰안주', None), + # 사이드 + ('골뱅이', 21000, '사이드', None), + ('돈까스', 14000, '사이드', None), + ('계란 말이', 14000, '사이드', None), + ('새우 튀김', 15000, '사이드', None), + ('모듬 소시지', 16000, '사이드', None), + ('모듬 튀김', 20000, '사이드', None), + ('모듬 마른안주', 22000, '사이드', None), + ('오징어', 15000, '사이드', None), + ('한치', 15000, '사이드', None), + ('먹태', 15000, '사이드', None), + ('노가리', 14000, '사이드', None), + ('대구포', 14000, '사이드', None), + ('구운 쥐포', 13000, '사이드', None), + ('육포 땅콩', 16000, '사이드', None), + ('은행', 13000, '사이드', None), + ('어묵탕', 15000, '사이드', None), + ('짬뽕탕', 18000, '사이드', None), + # 추가메뉴 + ('파 샐러드', 3000, '추가메뉴', None), + ('우동·소면', 3000, '추가메뉴', None), + ('라면 사리', 2000, '추가메뉴', None), + ('떡 사리', 2000, '추가메뉴', None), + ('햇 반', 2000, '추가메뉴', None), + ('추가소스', 500, '추가메뉴', None), + ('포장무', 500, '추가메뉴', None), + # BEER·주류 + ('생 맥주 500CC', 4500, 'BEER·주류', None), + ('생 맥주 2000CC', 16000, 'BEER·주류', None), + ('생 맥주 3000CC', 24000, 'BEER·주류', None), + ('맥주', 5000, 'BEER·주류', None), + ('소주', 5000, 'BEER·주류', None), + ('청하', 6000, 'BEER·주류', None), + ('막걸리', 4000, 'BEER·주류', None), + ('콜라', 2000, 'BEER·주류', None), + ('사이다', 2000, 'BEER·주류', None), + ], + + '전주밥상쌈밥': [ + # 쌈밥 (2인 기준) + ('불고기쌈밥', 12000, '쌈밥', None), + ('쭈꾸미삼겹쌈밥', 12000, '쌈밥', None), + ('쭈꾸미쌈밥', 10000, '쌈밥', None), + ('생선구이쌈밥', 9000, '쌈밥', None), + ('제육쌈밥', 9000, '쌈밥', None), + ('오징어쌈밥', 9000, '쌈밥', None), + # 집밥 (2인이상) + ('얼큰갈비찜', 10000, '집밥', None), + ('갈치조림', 10000, '집밥', None), + ('동태찌개', 10000, '집밥', None), + ('우거지갈비탕', 8000, '집밥', None), + ('청국장', 8000, '집밥', None), + ('김치찌개', 8000, '집밥', None), + ('북어해장국', 8000, '집밥', None), + ('순두부찌개', 8000, '집밥', None), + # 단품 + ('생삼겹살 (200g)', 13000, '단품', None), + ('삼치콩 3인분 이상 (삼겹살+김치+콩나물)', 10000, '단품', None), + # 모임메뉴 (예약) + ('오리로스', 50000, '모임 (예약)', None), + ('오리백숙', 50000, '모임 (예약)', None), + ('닭 백숙', 45000, '모임 (예약)', None), + ('닭도리탕', 30000, '모임 (예약)', None), + ('동태탕 (소/중/대)', 18000, '모임 (예약)', [{'label': '소', 'price': 18000}, {'label': '중', 'price': 27000}, {'label': '대', 'price': 36000}]), + ], + + '한방전주콩나물국밥 광운대역점': [ + # 식사메뉴 + ('콩나물국밥', 7000, '식사', None), + ('콩나물국밥정식 (수육 5점)', 10000, '식사', None), + ('김치콩나물국밥', 8000, '식사', None), + ('황태콩나물국밥', 9000, '식사', None), + ('굴콩나물국밥', 10000, '식사', None), + ('콩나물선지해장국', 10000, '식사', None), + ('콩나물비빔밥', 8000, '식사', None), + ('한우소고기무국', 8000, '식사', None), + ('떡만두국', 9000, '식사', None), + ('소고기장터국밥', 10000, '식사', None), + ('뼈해장국', 10000, '식사', None), + ('돈까스', 9000, '식사', None), + ('제육덮밥', 9000, '식사', None), + ('물냉면', 8000, '식사', None), + ('비빔냉면', 8000, '식사', None), + # 부대메뉴 + ('오징어숙회', 13000, '부대', None), + ('제육볶음', 15000, '부대', None), + ('왕만두 (고기/김치)', 6000, '부대', None), + ('감자만두 (7개)', 4000, '부대', None), + ('갈비만두 (7개)', 6000, '부대', None), + ('편육', 12000, '부대', None), + ('돼지수육 (소/중)', 15000, '부대', [{'label': '소', 'price': 15000}, {'label': '중', 'price': 20000}]), + # 계절메뉴 + ('묵밥', 8000, '계절', None), + ('묵사발', 7000, '계절', None), + ], + + '인생아구찜 월계점': [ + ('오감만족 아구찜 (1인/중/대)', 28000, '찜', [{'label': '1인', 'price': 28000}, {'label': '중', 'price': 44000}, {'label': '대', 'price': 55000}]), + ('활력충전 낙지찜 (소/중/대)', 34000, '찜', [{'label': '소', 'price': 34000}, {'label': '중', 'price': 45000}, {'label': '대', 'price': 56000}]), + ('해물의 꽃 게찜 (소/중/대)', 31000, '찜', [{'label': '소', 'price': 31000}, {'label': '중', 'price': 45000}, {'label': '대', 'price': 59000}]), + ('천연피로회복제 쭈꾸미찜 (소/대)', 39000, '찜', [{'label': '소', 'price': 39000}, {'label': '대', 'price': 49000}]), + ('오도독 만두이찜 (소/중/대)', 29000, '찜', [{'label': '소', 'price': 29000}, {'label': '중', 'price': 36000}, {'label': '대', 'price': 44000}]), + ('고소담백 알찜 (1인/소/중/대)', 25000, '찜', [{'label': '1인', 'price': 25000}, {'label': '소', 'price': 36000}, {'label': '중', 'price': 47000}, {'label': '대', 'price': 58000}]), + ('탱글탱글 곤이찜 (1인/소/중/대)', 23000, '찜', [{'label': '1인', 'price': 23000}, {'label': '소', 'price': 32000}, {'label': '중', 'price': 41000}, {'label': '대', 'price': 51000}]), + ('가오리찜 (1인/소)', 24000, '찜', [{'label': '1인', 'price': 24000}, {'label': '소', 'price': 34000}]), + ('콜라겐 아구찜 (1인/소/중/대)', 24000, '찜', [{'label': '1인', 'price': 24000}, {'label': '소', 'price': 34000}, {'label': '중', 'price': 42000}, {'label': '대', 'price': 50000}]), + ('살마니 아구찜 (1인/소/중/대)', 25000, '찜', [{'label': '1인', 'price': 25000}, {'label': '소', 'price': 35000}, {'label': '중', 'price': 44000}, {'label': '대', 'price': 54000}]), + ('종합영양제 해물아구찜 (소/중/대)', 38000, '찜', [{'label': '소', 'price': 38000}, {'label': '중', 'price': 51000}, {'label': '대', 'price': 65000}]), + ('영양만점 알곤이찜 (1인/소/중/대)', 25000, '찜', [{'label': '1인', 'price': 25000}, {'label': '소', 'price': 36000}, {'label': '중', 'price': 47000}, {'label': '대', 'price': 58000}]), + ('강력추천 인생해물찜 (소/중/대)', 46000, '찜', [{'label': '소', 'price': 46000}, {'label': '중', 'price': 57000}, {'label': '대', 'price': 68000}]), + ('통문어 황제해물찜 (중/대)', 58000, '찜', [{'label': '중', 'price': 58000}, {'label': '대', 'price': 68000}]), + ('기력충전 아낙찜 (중/대)', 47000, '찜', [{'label': '중', 'price': 47000}, {'label': '대', 'price': 59000}]), + ('키토산 대하찜 (중/대)', 39000, '찜', [{'label': '중', 'price': 39000}, {'label': '대', 'price': 50000}]), + ], + + '큰맘할매순대국 광운대점': [ + # 식사류 - 순대국 메뉴 + ('순대국 (보통/특)', 9000, '순대국', [{'label': '보통', 'price': 9000}, {'label': '특', 'price': 11000}]), + ('큰맘 순대국', 10000, '순대국', None), + ('순대해장라면', 12000, '순대국', None), + ('버섯 순대국 (매운맛)', 11000, '순대국', None), + ('버섯순대해장라면 (매운맛)', 11000, '순대국', None), + ('큰맘 내장국밥', 11000, '순대국', None), + ('얼큰 모듬 술국', 26000, '순대국', None), + # 식사류 - 식사 메뉴 + ('수육국밥 (보통/특)', 9000, '식사', [{'label': '보통', 'price': 9000}, {'label': '특', 'price': 11000}]), + ('뼈해장국 (보통/특)', 10000, '식사', [{'label': '보통', 'price': 10000}, {'label': '특', 'price': 13000}]), + ('황태해장국', 10000, '식사', None), + ('육개장', 10000, '식사', None), + ('선지해장국', 10000, '식사', None), + ('돼지고기김치찜', 11000, '식사', None), + ('할매소내장탕', 11000, '식사', None), + ('뚝배기소불고기', 11000, '식사', None), + ('제육볶음', 11000, '식사', None), + # 큰맘 보신 메뉴 + ('영양순대국', 12000, '큰맘 보신', None), + ('소갈비탕', 14000, '큰맘 보신', None), + ('소머리곰탕', 11000, '큰맘 보신', None), + ('소머리영양곰탕', 12000, '큰맘 보신', None), + ('삼계탕', 14000, '큰맘 보신', None), + # 안주류 - 순대 편육 + ('할매토종순대 (소/대)', 9000, '순대 편육', [{'label': '소', 'price': 9000}, {'label': '대', 'price': 11000}]), + ('편육 (소/대)', 9000, '순대 편육', [{'label': '소', 'price': 9000}, {'label': '대', 'price': 11000}]), + # 안주류 - 탕·전골·볶음 + ('순대곱창전골 (중/대)', 31000, '탕·전골·볶음', [{'label': '중', 'price': 31000}, {'label': '대', 'price': 41000}]), + ('뼈감자탕 (소/중/대)', 26000, '탕·전골·볶음', [{'label': '소', 'price': 26000}, {'label': '중', 'price': 32000}, {'label': '대', 'price': 38000}]), + ('순대곱창볶음', 26000, '탕·전골·볶음', None), + # 여름 계절 메뉴 + ('물/비빔 냉면', 9000, '계절메뉴', None), + # 추가 메뉴 + ('순대 추가 (김장전골)', 9000, '추가', None), + ('뼈 추가 (감자탕)', 9000, '추가', None), + ('우거지 추가 (감자탕)', 2000, '추가', None), + ('라면 사리', 2000, '추가', None), + ('당면 사리', 2000, '추가', None), + ('공기밥', 1000, '추가', None), + # 주류 및 음료 + ('소주', 5000, '주류·음료', None), + ('맥주', 5000, '주류·음료', None), + ('막걸리', 4000, '주류·음료', None), + ('음료수', 2000, '주류·음료', None), + ], +} diff --git a/scripts/seed-restaurants/menus-import.sql b/scripts/seed-restaurants/menus-import.sql new file mode 100644 index 0000000..e3faa5f --- /dev/null +++ b/scripts/seed-restaurants/menus-import.sql @@ -0,0 +1,701 @@ +BEGIN; + +-- 대상 식당의 기존 Menu 삭제 (멱등) +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '5일장 햄버거'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '경대컵밥 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '광운양꼬치'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '국수천왕 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '용기사 식당'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '꽃제비칼국수'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '목포홍탁'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '미식성'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '밥은화 광운대본점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '병천청년순대 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '서선생김치찜'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '소담밥상'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '스시덤'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '아 그집'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '우우즈베이커리'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '이찌마 김치'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '이층집'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '일심해장국 월계점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '천년초우리밀칼국수'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '카페베르데'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '하이레'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '한그릇'); + +-- 메뉴 INSERT +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 오일장햄버거(단품)', 5200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 오일장햄버거(세트)', 8700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 오일장햄버거(스프세트)', 11200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 머쉬룸버거(단품)', 7200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 머쉬룸버거(세트)', 10700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 머쉬룸버거(스프세트)', 13200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 데리버거(단품)', 5200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 데리버거(세트)', 8700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 데리버거(스프세트)', 11200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 새우버거(단품)', 5700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 새우버거(세트)', 9200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 새우버거(스프세트)', 11700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 매운버거(단품)', 5700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 매운버거(세트)', 9200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 매운버거(스프세트)', 11700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 갈릭버거(단품)', 5700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 갈릭버거(세트)', 9200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 갈릭버거(스프세트)', 11700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 스페셜버거(단품)', 6200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 스페셜버거(세트)', 9700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 스페셜버거(스프세트)', 12200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 치킨버거(단품)', 6400, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 치킨버거(세트)', 9900, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 치킨버거(스프세트)', 12400, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 볼로네제버거(단품)', 6700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 볼로네제버거(세트)', 10200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 볼로네제버거(스프세트)', 12700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 갈릭치킨버거(단품)', 6700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 갈릭치킨버거(세트)', 10200, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 갈릭치킨버거(스프세트)', 12700, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 페퍼로니버거(단품)', 7400, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 페퍼로니버거(세트)', 10400, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 페퍼로니버거(스프세트)', 12900, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블오일장버거(단품)', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블오일장버거(세트)', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블오일장버거(스프세트)', 13500, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블새우버거(단품)', 8100, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블새우버거(세트)', 11600, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블새우버거(스프세트)', 14100, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블치킨버거(단품)', 9400, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블치킨버거(세트)', 12900, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅 더블치킨버거(스프세트)', 15400, false, NOW() FROM "Restaurant" r WHERE r.name = '5일장 햄버거'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '경대컵밥', 4700, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡갈비컵밥', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬컵밥', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '베이컨컵밥', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭갈비', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불닭갈비', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소불고기컵밥', 6200, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스팸마요', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오리훈제컵밥', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육컵밥', 5200, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈컵밥', 5200, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹컵밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔밥', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '단무지 X', 0, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기고기', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대왕치킨마요', 6300, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스 도련님', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스 카레', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈치킨 고기고기', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '무궁화', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '민들레', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '벚꽃', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기 김치볶음밥', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빅치킨마요', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '산수유', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '산적치킨 고기고기', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우치킨 고기고기', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수선화', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육 김치볶음밥', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨 도시락', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칠리탕수육', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칠리포크', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈돈까스', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진바삼겹 곱배기', 7400, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진바삼겹 곱배기(포장)', 7900, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고등어 김치조림', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지 김치찌개', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 육개장', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장국', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '미역국', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고등어 김치조림만', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지 김치찌개만', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 육개장만', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '손맛 된장국', 1500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '손맛 미역국', 1500, false, NOW() FROM "Restaurant" r WHERE r.name = '경대컵밥 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿔바로우', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '즈란혈관볶음', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '향라육슬', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '경장육슬', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기고추볶음', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '가지볶음', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지위볶음', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어볶음', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '향라닭날개', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백김치당면볶음', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짝태볶음', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '건두부볶음', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마파두부', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란부추볶음', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '숙주볶음', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오이흰버섯무침', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '건두부무침', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '노후채무침', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양꼬치', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양갈비살꼬치', 17000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소갈비살꼬치', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우구이(10꼬치)', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소세지구이(1꼬치)', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭날개구이(4꼬치)', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라샹궈', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '코다리탕수육', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운무뼈닭발볶음', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '개구리다리튀김볶음', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '향라새우', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라새우', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비탕', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수육국밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭곰탕', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝배기불고기', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '훈툰', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기물만두', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '온면', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야채볶음밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라국밥', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '설원(대)', 23000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '설원(소)', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '노주탄(소)', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연태(대)', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연태(중)', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공부가주', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칭다오맥주', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '하얼빈맥주', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카스', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고려촌컵술', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '이과두주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '중국음료', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '광운양꼬치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '멸치국수', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운잔치국수', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오뎅국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우삼겹고기국수', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무냉국수', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치말이냉국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔냉면', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무 비빔밥', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기 덮밥', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '옛날우동', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운우동', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오뎅우동', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우삼겹고기우동', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄면', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄우동', 7500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '옛날돈까스(단품 150g)', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '멸치주먹밥', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기주먹밥', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기만두(6개)', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한입튀김만두', 4500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡산적(4개)', 6500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '미니김치전', 4500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수 + 멸치주먹밥', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수 + 소고기주먹밥', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수 + 고기만두(3개)', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수 + 옛날돈까스(단품 150g)', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '국수천왕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태탕', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청국장', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈치조림', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꽁치조림', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물순두부', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고등어구이(국내산)', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈치구이(제주산)', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '조기구이', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '용기사 식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵칼국수', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵칼만두', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '특어묵칼국수', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바지락칼국수', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바지락칼만두', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '특바지락칼국수', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '들깨칼국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '들깨칼만두', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭 반 칼국수', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭 반 바지락 칼국수(2인분)', 17000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바지락수제비', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바지락떡만두국', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '서리태 냉콩국수', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칡냉면(보통)', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칡냉면(곱배기)', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼계탕', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭도리탕(소)', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭도리탕(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭도리탕(대)', 38000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭한마리(소)', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭한마리(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭한마리(대)', 38000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돌솥알밥', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라밥', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기만두(4개)', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기만두(6개)', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼국수사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 1500, false, NOW() FROM "Restaurant" r WHERE r.name = '꽃제비칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '홍어찜', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사시미', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '낙지볶음', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연포탕', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아구탕', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우찜', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '홍어 무침', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소면사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주(참이슬/진로)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주(테라)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '서울 막걸리', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라/사이다', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '목포홍탁'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짜장면', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '간짜장', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쟁반짜장', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유니짜장', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선짜장', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유슬짜장', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선낙지짬뽕', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물만두', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짬뽕', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음짬뽕', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선짬뽕', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선백짬뽕', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추짬뽕', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불타는짜장', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '차돌짬뽕', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우동', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선우동', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '울면', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선울면', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물짬뽕', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '누룽지탕(식사)', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '군만두', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짬짜면', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕복밥', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶짜(짬)면', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕짜(짬)면', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선짬뽕밥', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '송이덮밥', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추잡채밥', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짬뽕밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마파두부밥', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선볶음밥', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬밥', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비탕', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짜장밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡채밥', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우볶음밥', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡탕밥', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생굴짬뽕', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉면', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '굴짬뽕밥', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩국수', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '홍합짬뽕', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '중국냉면', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡채(소)', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡채(중)', 25000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡채(대)', 33000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육(소)', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육(중)', 25000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육(대)', 33000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사천·매운 탕수육(소)', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사천·매운 탕수육(중)', 27000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사천·매운 탕수육(대)', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍기(육)(소)', 26000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍기(육)(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍기(육)(대)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양장피(소)', 26000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양장피(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양장피(대)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추잡채(소)', 26000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추잡채(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추잡채(대)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼육(소)', 26000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼육(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼육(대)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼(풍)새우(소)', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼(풍)새우(중)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼(풍)새우(대)', 50000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬(소)', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬(중)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬(대)', 50000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보채(소)', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보채(중)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보채(대)', 50000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡탕(소)', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡탕(중)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡탕(대)', 50000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선누룽지탕', 38000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선술국', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+짜장1', 18000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+짬뽕1', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+짜장2', 23000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+짜장1·짬뽕1', 24000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+간짜장2', 25000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+볶음밥2', 25000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+짬뽕2', 25000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육+쟁반짜장2', 29000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡채+짜장2', 23000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍기+짜장2', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍육+짜장2', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양장피+짜장2', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보채+짜장2', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬+짜장2', 35000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '이과두주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고량주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연태고량주(소)', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연태고량주(중)', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연태고량주(대)', 40000, false, NOW() FROM "Restaurant" r WHERE r.name = '미식성'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지숙주', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '간장제육', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쭈꾸미숙주', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '부추삼겹', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스팸마요', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치마요', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨마요', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '숙주라면', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨까스', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한입만두', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭껍질교자', 3900, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스팸추가', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란추가', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '곱빼기', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '밥은화 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '국밥정식 (순대국밥 + 삼색순대 + 편육)', 12500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국밥', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대만국밥', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지국밥', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '내장국밥', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈해장국', 10500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양평해장국', 10500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬국밥 (머릿고기 + 뽈살 + 내장 + 순대)', 9900, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼색순대 (병천순대 + 김치순대 + 백순대)', 0, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '병천순대한접시', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝배기 물냉면', 7900, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝배기 비빔냉면', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면 정식 (물냉면 + 삼색순대 + 편육)', 10900, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔냉면 정식 (비빔냉면 + 삼색순대 + 편육)', 11500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '편육', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡갈비(1개)', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '설렁탕', 9500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소뼈해장국', 11500, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '테라', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진로', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '코카콜라', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칠성사이다', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '펩시제로', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '후레쉬', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '처음처럼', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새로', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참이슬클래식', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카스', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '병천청년순대 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개(1인)', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생갈비김치찌개(1인)', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹김치찜(1인)', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한돈앞다리살찜(1인)', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '1인 김치찌개(뚝배기)', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '1인 삼겹찜(뚝배기)', 13000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사이다', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란말이', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '인삼튀김(소)', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '인삼튀김(중)', 30000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '당면사리', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두부사리', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햄(리챔)', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '봉지김', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기추가(1인)', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치추가(1인)', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '서선생김치찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄면순두부(쫄순)', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼국수순두부(칼순)', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스순두부(돈순)', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우렁된장찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양푼비빔밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어덮밥', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돌솥치즈비빔밥', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기비빔밥', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰칼국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '소담밥상'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 연어 사시미 12pcs', 22700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 광어 사시미 12pcs', 22700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 모듬 사시미 12pcs', 25700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 1인 모듬 사시미 8pcs', 13700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캘리포니아 롤 10pcs', 8700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어 롤 10pcs', 16700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사케동 (연어덮밥)', 18700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카이센동', 21700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '회덮밥', 9700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어린이 초밥 5pcs (계란1·초새우1·마요새우1·날치알군함1·유부1)', 7700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란초밥 5pcs', 4700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유부초밥 5pcs', 4700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 세트 1번 10pcs (광어1·활어2·연어1·생새우1·문어1·계란1·참치1·구운초밥1·유부1)', 12700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 세트 2번 11pcs (광어1·활어2·연어2·생새우1·초새우1·참치1·황새치1·구운초밥1·날치알군함1)', 15700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 세트 3번 12pcs (광어1·활어2·두툼한치1·연어2·참치1·참돔1·장새우1·구운초밥1·오늘초밥1·연어아부리1)', 17700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 세트 4번 13pcs (광어1·활어1·연어2·참치1·안키모군함1·장어1·참돔1·참소라1·오늘초밥1·광어지느러미1·단새우1·우니1)', 21700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 연어 모둠 10pcs (연어4·연어대뱃살3·연어아부리3)', 20000, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 직화 초밥 모둠 10pcs (연어아부리2·직화참치2·직화황새치2·직화새우2·직화한치2)', 14700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덤으로 2인세트 16pcs + 구성품 (광어1·활어1·연어1·참치1·생새우1·문어1·두툼한치1·계란1)×2 + 새우튀김·고로케2·샐러드2·우동2·롤2', 34700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대광어 초밥 8pcs', 18700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어 초밥 8pcs', 18700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대광어 초밥 4pcs + 연어 초밥 4pcs', 18700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어 초밥 4pcs + 연어 뱃살 4pcs', 19700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대광어 초밥 4pcs + 대광어 지느러미 4pcs', 19700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '초새우 4pcs + 생새우 4pcs', 12700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우모듬 10pcs (초새우2·생새우2·간장새우2·계란새우2·직화새우2)', 17700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생새우 4pcs + 간장새우 4pcs', 14700, false, NOW() FROM "Restaurant" r WHERE r.name = '스시덤'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김모치 (김치· 베이컨· 참치· 갈비· 알)', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고모치 (고구마· 베이컨· 참치· 갈비· 알)', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장찌개라면 (+밥)', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치베이컨 치즈밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치참치 치즈밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치알 치즈밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마 치즈밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비 치즈밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '알참치 치즈밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오므라이스', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치볶음밥', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청국장찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩비지찌개', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝불고기', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '부대찌개', 8500, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사이다', 1500, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라', 1500, false, NOW() FROM "Restaurant" r WHERE r.name = '아 그집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '미니 초코바게트', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버터떡', 1500, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모카 소금빵', 2800, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소금빵', 2500, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '리얼 브라우니', 2900, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팥앙금빵', 1900, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '초코띠', 2900, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '무화과치즈', 3200, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우우즈 휘낭시에', 2500, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우유즈 식빵', 2900, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밤식빵', 3900, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '브리오슈 식빵', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소금 치아바타', 2500, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '올리브 치즈', 3200, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바질 토마토 치즈', 3800, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에그 타르트', 3800, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩부차', 3800, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈시몬 오렌지쥬스', 2200, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '분다버그', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '우우즈베이커리'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 김치(500g)', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 김치(1kg)', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 김치(2kg)', 29000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 파 김치(350g)', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 파 김치(700g)', 21000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 파 김치(1kg)', 29000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 부추 김치(500g)', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 부추 김치(1kg)', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 대파 김치(700g)', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 대파 김치(1.4kg)', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 고추장 물(250g)', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '들깨 닭칼국수', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '보쌈 정식', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹구이 정식', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 제육 정식', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육회 비빔밥', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 애호박 짜글이', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 부대찌개', 11000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '1인 닭칼국수 보쌈 세트', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '보쌈(소)', 23000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '보쌈(중)', 36000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '보쌈(대)', 49000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹구이(소)', 23000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹구이(중)', 36000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹구이(대)', 49000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 제육 볶음(600g)', 24000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '경상도 육회(참기름 베이스 160g)', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '전라도 육회(고추장베이스 160g)', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '반반 육회(경상도+전라도 320g)', 37000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오드레기구이(소대동맥+차돌박이)', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육전', 22000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운김치 한접시(배추· 파·부추· 대파)', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치밥', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장물 밥', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란 김가루밥', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란후라이 추가(1P)', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매실냉차', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '이찌마 김치'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양마니 김치찌개 (소· 2~3인분)', 24000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양마니 김치찌개 (중· 3~4인분)', 34000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양마니 김치찌개 (대· 4~5인분)', 44000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '의정부 부대찌개(소)', 23000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '의정부 부대찌개(중)', 33000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '의정부 부대찌개 (대)', 43000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햄사리', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소세지사리', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두부사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '당면사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소세지&햄 반반사리', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬사리', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사이다', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '이층집'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '도가니탕', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한방 반계탕', 10000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돌솥비빔밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '선지해장국', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깍두기(국산)', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치(중국산)', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '일심해장국 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천년초 바지락칼국수', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천년초 들깨칼국수', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천년초 비빔국수', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천년초 잔치국수', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천년초 검은콩국수(계절메뉴)', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지닭도리탕(반마리)', 18000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지닭도리탕(한마리)', 28000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지삼겹찜(400g)', 19000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지삼겹찜(700g)', 33000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '편육(250g)', 12000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두(4개)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '주먹밥', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기추가(삼겹) 200g', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵은지', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡사리', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자(닭도리탕)', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '천년초우리밀칼국수'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '머핀 (초코/블루베리)', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '조각 케이크 (티라미수/치즈케익/가또쇼콜라/초코무스/딸기무스/오레오 생크림)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쿠키슈', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우유크림 빵', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '크림 카스테라', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '크림 치즈 스틱 프레즐', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아포가또', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '크로플', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '크로플 아이스크림 추가', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제 그릭 요거트', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '허니 브레드', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈릭 더블치즈 바게트', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '베이글 (플레인/블루베리/어니언)', 2500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '베이글 크림치즈 추가', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '핫도그(오리지날)', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '핫도그(미트칠리)', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햄치즈 토스트', 4500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '홍차 (얼그레이/머스켓/스트로베리민트/아쌈/잉글리쉬 브랙퍼스트)', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '허브티 (캐모마일/페퍼민트/루이보스/자스민/히비스커스/녹차/보이차)', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '전통차 (유자차/레몬차/자몽차/생강차)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '딸기 라떼', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '블루베리 라떼', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '애플망고 라떼', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '리얼바나나 우유', 4500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아이스 티 (복숭아/매실/석류/레몬)', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에이드 (복숭아/매실/석류/레몬/유자/자몽/샤인머스켓/파인애플/체리/체리콕)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스무디 (복숭아/딸기/블루베리/망고/단팥/유자/자몽/샤인머스캣/파인애플)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '요거트 스무디 (플레인/딸기/블루베리/망고/유자/자몽/샤인머스캣/파인애플/복숭아)', 4500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '프라페 (초코칩/민트초코/녹차)', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쉐이크 (바닐라/딸기/블루베리)', 5500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '초코 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '민트초코 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '녹차 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토피넛 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오곡 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '홍차 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '달고나 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에스프레소', 2500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아메리카노', 2500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카페라떼', 3000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카푸치노', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카페모카', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바닐라 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '헤이즐넛 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연유 라떼', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카라멜 마끼아또', 4500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '디카페인 변경', 500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '더치커피 변경', 500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사이즈업', 500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '샷 추가', 500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '시럽(바닐라/헤이즐넛) 추가', 500, false, NOW() FROM "Restaurant" r WHERE r.name = '카페베르데'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '로스가츠 (등심)', 12500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '특로스카츠 (한정판)', 15000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '히레카츠 (안심)', 13500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬카츠 (등심+안심)', 15500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '특 모듬카츠 (등심·안심·새우)', 18500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈돈카츠 4PC', 14000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '안심4PC치돈2PC', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유린기카츠 (닭다리)', 14500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사사미카츠 (닭안심살)', 12500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '지례흑돈 특등심 (한정판)', 16900, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '지례흑돈 등심 (한정판)', 13900, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '지례흑돈 모듬 (백돈 안심)', 17500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우리흑돈 특등심', 16900, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우리흑돈 등심', 13900, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우리흑돈 모듬 (백돈 안심)', 17500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '프리미엄원육 등심 2종 2종', 16000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우1PC+안심4PC', 16500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '이벤트 돈까스도시락 (매장only)', 18500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '일본식맵싹커리', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈돈카츠 2PC', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '히레추가 (돼지안심)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햄카츠 3PC', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사사미 2PC (닭안심살)', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에비후라이 1PC', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈튀김 2PC', 3500, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유린기카츠 (사이드)', 6900, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밥+온천계란', 2000, false, NOW() FROM "Restaurant" r WHERE r.name = '하이레'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수', 6000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 5000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두라면', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡라면', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김밥', 4000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔밥', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡만두국', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡국', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무국수', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩국수', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼만두국', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼수제비', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼국수', 7000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제비', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돌솥비빔밥', 9000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '곱빼기', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두국', 8000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, "isSignature", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰추가', 1000, false, NOW() FROM "Restaurant" r WHERE r.name = '한그릇'; + +-- 검증 +SELECT COUNT(*) AS total_menus FROM "Menu"; +SELECT r.name, r.zone, COUNT(m.id) AS menu_count FROM "Restaurant" r LEFT JOIN "Menu" m ON m."restaurantId" = r.id GROUP BY r.id, r.name, r.zone HAVING COUNT(m.id) = 0 ORDER BY r.zone, r.name; + +COMMIT; \ No newline at end of file diff --git a/scripts/seed-restaurants/out.sql b/scripts/seed-restaurants/out.sql new file mode 100644 index 0000000..5589622 --- /dev/null +++ b/scripts/seed-restaurants/out.sql @@ -0,0 +1,230 @@ +-- 자동 생성됨: kwu_eats 식당 일괄 등록 +-- 생성 시각: 2026-05-11T02:52:54.175Z +-- 총 107건 INSERT + +BEGIN; + +-- 신규 카테고리: 튀김류 (없으면 생성) +INSERT INTO "Category" (id, name) SELECT gen_random_uuid()::text, '튀김류' WHERE NOT EXISTS (SELECT 1 FROM "Category" WHERE name = '튀김류'); + +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_001', '인생아구찜 월계점', 'KWANGWOON_STATION', 37.6239333149593, 127.06083320130091, '서울 노원구 석계로18길 23', '02-942-2359', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_002', '서초우동 광운대역점', 'KWANGWOON_STATION', 37.62388375193732, 127.06085015246403, '서울 노원구 석계로18길 23', '02-941-0096', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_003', '짝태촌노가리', 'KWANGWOON_STATION', 37.6238774508716, 127.060838819627, '서울 노원구 석계로18길 23', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_004', '치킨클럽 성북역본점', 'KWANGWOON_STATION', 37.6236179199489, 127.060929229404, '서울 노원구 석계로18길 10-9', '02-912-7092', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_005', '친친', 'KWANGWOON_STATION', 37.6236251301821, 127.060924704224, '서울 노원구 석계로18길 10-9', '02-6229-4143', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_006', '여자만아구찜', 'KWANGWOON_STATION', 37.6235062163082, 127.060892889771, '서울 노원구 석계로18길 10-8', '02-941-1989', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_007', '커피는기억의끌림', 'KWANGWOON_STATION', 37.6234196267418, 127.06107632676282, '서울 노원구 석계로 98-1', '02-911-7735', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_008', '꽃님맥주', 'KWANGWOON_STATION', 37.6233727402331, 127.061144254146, '서울 노원구 석계로 98-1', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_009', '야타이', 'KWANGWOON_STATION', 37.6235008757847, 127.060766015809, '서울 노원구 석계로18길 10-6', '0502-5552-5931', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_010', '명태이야기', 'KWANGWOON_STATION', 37.62366145724105, 127.06036514708568, '서울 노원구 석계로18길 13', '02-943-1121', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_011', '미미식당 월계점', 'KWANGWOON_STATION', 37.6232722135876, 127.06039881516, '서울 노원구 석계로18길 5', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_012', '생마차 광운대점', 'KWANGWOON_STATION', 37.6232740143961, 127.060401082138, '서울 노원구 석계로18길 5', '02-2281-3289', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_013', '명동찌개마을 광운대역점', 'KWANGWOON_STATION', 37.6234560206821, 127.060387636237, '서울 노원구 석계로18길 9', '02-912-1181', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_014', '가마솥뼈다귀감자탕', 'KWANGWOON_STATION', 37.62367307140256, 127.06055772685895, '서울 노원구 석계로18길 14', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_015', '왕토종순대국', 'KWANGWOON_STATION', 37.623638110880414, 127.06020993920797, '서울 노원구 광운로 72', '02-913-6400', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_016', '마산아구찜', 'KWANGWOON_STATION', 37.6236209765229, 127.060240510075, '서울 노원구 광운로 72', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_017', '엄마손김밥&분식', 'KWANGWOON_STATION', 37.6234633893142, 127.06007273387, '서울 노원구 광운로 69', '02-943-5711', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_018', '사계절김밥', 'KWANGWOON_STATION', 37.6235588107524, 127.060235928848, '서울 노원구 광운로 72', '02-941-7789', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_019', '돈장군 광운대본점', 'KWANGWOON_STATION', 37.6234201402204, 127.0600760973566, '서울 노원구 광운로 69', '02-941-8276', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_020', '빈대떡신사', 'KWANGWOON_STATION', 37.6234669008526, 127.060253978908, '서울 노원구 광운로 70', '02-774-9595', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_021', '집밥', 'KWANGWOON_STATION', 37.6235057368441, 127.060070502419, '서울 노원구 광운로 69', '02-941-4424', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_022', '큰맘할매순대국 광운대점', 'KWANGWOON_STATION', 37.6232723708939, 127.06009070433, '서울 노원구 광운로 67', '02-942-1479', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_023', '여우곱창', 'KWANGWOON_STATION', 37.6233155258228, 127.060271980912, '서울 노원구 광운로 68', '02-919-3339', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_024', '한우가마솥소머리곰탕', 'KWANGWOON_STATION', 37.6233164215964, 127.060282176488, '서울 노원구 광운로 68', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_025', '한방전주콩나물국밥 광운대역점', 'KWANGWOON_STATION', 37.6231706049201, 127.060001134427, '서울 노원구 광운로 65', '02-943-7787', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_026', '마포연탄불고기', 'KWANGWOON_STATION', 37.623230699702965, 127.0605324472798, '서울 노원구 석계로18길 4', '02-915-2826', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_027', '놀부부대찌개 광운대역점', 'KWANGWOON_STATION', 37.62292957133183, 127.06091847279006, '서울 노원구 석계로 101', '02-909-4270', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_028', '착한족발 월계점', 'KWANGWOON_STATION', 37.62295564668777, 127.06102157486963, '서울 노원구 석계로 95', '010-4655-5669', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_029', '스마일돈까스', 'KWANGWOON_STATION', 37.6229240077077, 127.06122317950084, '서울 노원구 석계로 95', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_030', '마떡다이천 광운대본점', 'KWANGWOON_STATION', 37.6231064273819, 127.060407743094, '서울 노원구 석계로 106', '02-976-4841', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_031', '맛닭꼬 광운대점', 'KWANGWOON_STATION', 37.62309584950046, 127.05994896746643, '서울 노원구 광운로 61', '02-942-3492', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_032', '더원', 'KWANGWOON_STATION', 37.6230814538525, 127.05990930937736, '서울 노원구 광운로 61', '02-909-5477', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_033', '전주밥상쌈밥', 'KWANGWOON_STATION', 37.62296447243826, 127.05961922991156, '서울 노원구 광운로 61', '02-3292-0118', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_034', '오쎄', 'FRONT_GATE', 37.6227245870602, 127.060058546328, '서울 노원구 광운로 62', '02-918-5508', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_035', '그옛날1947왕만두', 'FRONT_GATE', 37.6225014160854, 127.059518045433, '서울 노원구 광운로 55', '02-941-7979', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_036', '굿킨 광운대점', 'FRONT_GATE', 37.6224148045622, 127.059749056945, '서울 노원구 광운로 56', '02-3292-9255', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_037', '전설의멸치국수 월계점', 'FRONT_GATE', 37.622271751710315, 127.05934455224244, '서울 노원구 광운로 53', '02-942-7820', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_038', '큰집닭강정 광운대점', 'FRONT_GATE', 37.622206727586914, 127.05964807613412, '서울 노원구 광운로 54', '02-943-5353', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_039', '영축산정육식당', 'FRONT_GATE', 37.6217895178956, 127.059751954723, '서울 노원구 광운로 52', '02-915-6221', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_040', '진미통닭', 'FRONT_GATE', 37.6214654962473, 127.059089046317, '서울 노원구 광운로 45', '02-918-3492', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_041', '로스2000', 'FRONT_GATE', 37.6212078598502, 127.058997091311, '서울 노원구 광운로 41', '02-909-5145', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_042', '썬더치킨 광운대점', 'FRONT_GATE', 37.6213229747708, 127.059418558322, '서울 노원구 광운로 44', '02-942-3988', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_043', '종로전집', 'FRONT_GATE', 37.620898657714, 127.05932307173, '서울 노원구 광운로10길 3', '02-2039-1751', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_044', '맛불', 'FRONT_GATE', 37.6210709511218, 127.058914294016, '서울 노원구 광운로 39', '010-3489-3056', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_045', '수해복마라탕 광운대점', 'FRONT_GATE', 37.6210745477174, 127.058929022312, '서울 노원구 광운로 39', '02-917-3303', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_046', '더진국 광운대점', 'FRONT_GATE', 37.620896218937446, 127.05879522002459, '서울 노원구 광운로 37-1', '02-2088-5160', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_047', '고씨네 광운대점', 'FRONT_GATE', 37.6208944299358, 127.058769165945, '서울 노원구 광운로 37-1', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_048', '화로상회 광운대점', 'FRONT_GATE', 37.62077461782266, 127.05873055905124, '서울 노원구 광운로 37', '02-941-2292', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_049', '부리또잇', 'FRONT_GATE', 37.62078180428914, 127.05877360818184, '서울 노원구 광운로 37', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_050', '재리스토스트&빙수바보빙식이 광운대점', 'FRONT_GATE', 37.62085309432631, 127.05854825219345, '서울 노원구 광운로 35-1', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_051', '신연마라탕', 'FRONT_GATE', 37.6206962708118, 127.058652339616, '서울 노원구 광운로 35', '02-909-2838', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_052', '민들레뜨락2', 'FRONT_GATE', 37.62056745496175, 127.0586012660247, '서울 노원구 광운로 33', '02-6953-8613', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_053', '푸른스시', 'FRONT_GATE', 37.620592674732514, 127.05861714390358, '서울 노원구 광운로 33', '0503-7150-4889', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_054', '일심텐동 광운대점', 'FRONT_GATE', 37.6204359659026, 127.058490156468, '서울 노원구 광운로 31', '02-909-2134', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_055', '디델리 광운대점', 'FRONT_GATE', 37.6204440641234, 127.058511684455, '서울 노원구 광운로 31', '02-3292-1194', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_056', '마루', 'FRONT_GATE', 37.620421532702, 127.058525259408, '서울 노원구 광운로 31', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_057', '윤스쿡', 'FRONT_GATE', 37.6203107561798, 127.058434555295, '서울 노원구 광운로 29', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_058', '한끼철판 광운대점', 'FRONT_GATE', 37.6202026982243, 127.058312137576, '서울 노원구 광운로 27', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_059', '장수국수 광운대점', 'FRONT_GATE', 37.6202243174404, 127.058321216179, '서울 노원구 광운로 27', '070-8111-2595', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_060', '지지고 광운대점', 'FRONT_GATE', 37.6201936642727, 127.05836083723, '서울 노원구 광운로 27', '02-942-8212', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_061', '광운커피', 'FRONT_GATE', 37.6200685020056, 127.058208955948, '서울 노원구 광운로 25', '010-4190-3569', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_062', '프랭크버거 광운대점', 'FRONT_GATE', 37.62007390458205, 127.05821575643468, '서울 노원구 광운로 25', '02-942-0232', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_063', '팔팔전어횟집', 'FRONT_GATE', 37.6200477642131, 127.058239523003, '서울 노원구 광운로 25', '02-914-8876', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_064', '카츠백 월계점', 'FRONT_GATE', 37.621340953417, 127.059500129304, '서울 노원구 광운로 44', '02-6953-2204', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_065', '민들레국시', 'FRONT_GATE', 37.62137093341078, 127.05900741476665, '서울 노원구 광운로 43', '02-943-2326', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_066', '중화호반닭갈비 광운대점', 'FRONT_GATE', 37.6224564534593, 127.059345831815, '서울 노원구 광운로 53', '02-942-0799', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_067', '전주밥상쌈밥', 'FRONT_GATE', 37.62296447243826, 127.05961922991156, '서울 노원구 광운로 61', '02-3292-0118', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_069', '또와집순대국', 'FRONT_GATE', 37.62326079906855, 127.05981316864523, '서울 노원구 광운로19길 13', '02-943-2207', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_070', '튀맥', 'BACK_GATE', 37.622638479396834, 127.0610598291593, '서울 노원구 석계로15길 9', '02-911-6600', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_071', '서선생김치찜', 'BACK_GATE', 37.6223935484119, 127.060793433159, '서울 노원구 석계로15길 14', '02-909-3337', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_072', '한라산감자탕', 'BACK_GATE', 37.6223654328671, 127.061151358349, '서울 노원구 석계로15길 17', '010-6482-8321', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_073', '국수천왕 광운대점', 'BACK_GATE', 37.621806873755745, 127.0610489543484, '서울 노원구 광운로 46', '02-909-1236', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_074', '한그릇', 'BACK_GATE', 37.6213328671485, 127.061217343723, '서울 노원구 광운로12길 38', '02-941-7193', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_075', '데이롱카페 광운대점', 'BACK_GATE', 37.621302220658, 127.061242238675, '서울 노원구 광운로12길 38', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_076', '별난주점 광운대점', 'BACK_GATE', 37.62118267555183, 127.06068823605271, '서울 노원구 광운로12길 28', '02-943-0288', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_077', '꽃제비칼국수', 'BACK_GATE', 37.6213083069597, 127.05991694832, '서울 노원구 광운로12길 13', '02-911-8371', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_078', '밥은화 광운대본점', 'BACK_GATE', 37.6212795351311, 127.059799121243, '서울 노원구 광운로12길 11', '02-3292-7979', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_079', '하이레', 'BACK_GATE', 37.62096077851908, 127.05941713733176, '서울 노원구 광운로12길 6', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_080', '아 그집', 'BACK_GATE', 37.6211131342463, 127.061008741577, '서울 노원구 석계로13길 43', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_081', 'CORD Jr.', 'BACK_GATE', 37.6209499341225, 127.061243082418, '서울 노원구 석계로13길 40', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_082', '치킨플러스 월계점', 'BACK_GATE', 37.62068057833001, 127.06116696912017, '서울 노원구 석계로13길 35', '02-3292-5567', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_083', '후문식당', 'BACK_GATE', 37.62016962097997, 127.06135458099394, '서울 노원구 석계로13길 25-1', '02-916-8745', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_084', '천년초우리밀칼국수', 'BACK_GATE', 37.62047341117989, 127.06276846319872, '서울 노원구 석계로 65', '070-4036-1645', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_085', '월계돈', 'BACK_GATE', 37.620290466163745, 127.06285213034685, '서울 노원구 석계로 63', '02-941-3326', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_086', '일심해장국 월계점', 'BACK_GATE', 37.621977651357454, 127.06183634914686, '서울 노원구 석계로15길 25', '02-909-1640', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_087', '김바삭군의 볼카츠마켙 광운대점', 'BACK_GATE', 37.6192227412701, 127.057665733535, '서울 노원구 광운로 17-1', '02-941-6474', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_088', '카페베르데', 'BACK_GATE', 37.6192876400272, 127.057609148638, '서울 노원구 광운로 17-3', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_089', '이층집', 'BACK_GATE', 37.6193669821635, 127.057495939695, '서울 노원구 광운로 17-5', '02-941-3588', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_090', '병천청년순대 광운대점', 'BACK_GATE', 37.619370585004, 127.057498207873, '서울 노원구 광운로 17-5', '02-934-1535', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_091', '경대컵밥 광운대점', 'BACK_GATE', 37.619597802211, 127.057151775086, '서울 노원구 광운로 17-13', '02-941-1047', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_092', '소담밥상', 'BACK_GATE', 37.6190976023654, 127.057464016721, '서울 노원구 광운로3길 6', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_093', '쉐프밥버거 광운대점', 'BACK_GATE', 37.6190749870782, 127.057649761657, '서울 노원구 광운로 15', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_094', '미식성', 'BACK_GATE', 37.6187111624562, 127.057291550168, '서울 노원구 광운로 9', '02-915-6020', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_095', '빠말', 'BACK_GATE', 37.6185733102653, 127.057293709771, '서울 노원구 광운로 7', '070-7677-8341', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_096', '스시덤', 'BACK_GATE', 37.6180921113138, 127.057440589225, '서울 노원구 광운로2길 6', '02-2088-8070', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_097', '1일1잔', 'BACK_GATE', 37.6180767967353, 127.057436046716, '서울 노원구 광운로2길 6', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_098', '이찌마 김치', 'BACK_GATE', 37.61848685776941, 127.05720642643374, '서울 노원구 광운로 5', '0503-7154-2448', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_099', '목포홍탁', 'BACK_GATE', 37.61867438098913, 127.05696304151887, '서울 노원구 광운로1길 10', '02-914-3703', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_100', '갤러리eat', 'BACK_GATE', 37.620169620391, 127.061355713707, '서울 노원구 석계로13길 25-1', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_101', '진심카츠', 'BACK_GATE', 37.6203573867958, 127.058878616718, '서울 노원구 광운로 20', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_102', '와플대학 광운대캠퍼스', 'KWANGWOON_STATION', 37.62283985104657, 127.06018097652368, '서울 노원구 광운로 64', '02-941-3890', '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_1001', '청계 빨간집', 'BACK_GATE', 37.6228376867667, 127.060712349808, '서울 노원구 석계로 103', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_1002', '우우즈베이커리', 'BACK_GATE', 37.6212464249385, 127.060941679603, '서울 노원구 광운로12길 32', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_1003', '정담소반', 'KWANGWOON_STATION', 37.623944465056, 127.060701242558, '서울 노원구 석계로18길 23', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_1004', '포 레오', 'BACK_GATE', 37.621716014873, 127.060950785003, '서울 노원구 광운로 46', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); +INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES ('rst_1005', '용기사 식당', 'BACK_GATE', 37.6220625118578, 127.06134243043, '서울 노원구 석계로15길 25', NULL, '{"mon":{"open":"09:00","close":"22:00"},"tue":{"open":"09:00","close":"22:00"},"wed":{"open":"09:00","close":"22:00"},"thu":{"open":"09:00","close":"22:00"},"fri":{"open":"09:00","close":"22:00"},"sat":{"open":"09:00","close":"22:00"},"sun":{"open":"09:00","close":"22:00"}}'::jsonb, false, NOW()); + +-- 카테고리 매핑 +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_001', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_002', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_003', id FROM "Category" WHERE name = '주점'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_004', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_005', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_006', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_007', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_008', id FROM "Category" WHERE name = '주점'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_009', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_010', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_011', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_012', id FROM "Category" WHERE name = '주점'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_013', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_014', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_015', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_016', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_017', id FROM "Category" WHERE name = '분식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_018', id FROM "Category" WHERE name = '분식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_019', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_020', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_021', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_022', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_023', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_024', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_025', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_026', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_027', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_028', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_029', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_030', id FROM "Category" WHERE name = '분식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_031', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_032', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_033', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_034', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_035', id FROM "Category" WHERE name = '중식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_036', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_037', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_038', id FROM "Category" WHERE name = '분식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_039', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_040', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_041', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_042', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_043', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_044', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_045', id FROM "Category" WHERE name = '중식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_046', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_047', id FROM "Category" WHERE name = '아시안'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_048', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_049', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_050', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_051', id FROM "Category" WHERE name = '중식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_052', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_053', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_054', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_055', id FROM "Category" WHERE name = '분식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_056', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_057', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_058', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_059', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_060', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_061', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_062', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_063', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_064', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_065', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_066', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_067', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_068', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_069', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_070', id FROM "Category" WHERE name = '튀김류'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_071', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_072', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_073', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_074', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_075', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_076', id FROM "Category" WHERE name = '주점'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_077', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_078', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_079', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_080', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_081', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_082', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_083', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_084', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_085', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_086', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_087', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_088', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_089', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_090', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_091', id FROM "Category" WHERE name = '분식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_092', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_093', id FROM "Category" WHERE name = '양식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_094', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_095', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_096', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_097', id FROM "Category" WHERE name = '주점'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_098', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_099', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_100', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_101', id FROM "Category" WHERE name = '일식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_102', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_1001', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_1002', id FROM "Category" WHERE name = '카페'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_1003', id FROM "Category" WHERE name = '한식'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_1004', id FROM "Category" WHERE name = '아시안'; +INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT 'rst_1005', id FROM "Category" WHERE name = '한식'; + +-- 검증 +SELECT COUNT(*) AS restaurants FROM "Restaurant"; +SELECT COUNT(*) AS restaurant_categories FROM "RestaurantCategory"; + +COMMIT; diff --git a/scripts/seed-restaurants/partnerships.sql b/scripts/seed-restaurants/partnerships.sql new file mode 100644 index 0000000..a9db3b0 --- /dev/null +++ b/scripts/seed-restaurants/partnerships.sql @@ -0,0 +1,142 @@ +-- ============================================================ +-- 단과대학별 제휴 매핑 일괄 등록 (2026-05-11) +-- ============================================================ +-- 사용자 제공 제휴 리스트 → (식당명, 단과대학, 인스타URL) 쌍으로 매핑. +-- 식당명은 DB 의 정식명 기준 (별칭은 사전에 사용자 확인 거쳐 변환). +-- ON CONFLICT 로 멱등성 보장 (재실행 안전). +-- ============================================================ + +BEGIN; + +WITH partnership_data(restaurant_name, college, url) AS ( + VALUES + -- 인공지능융합대학 + ('중화호반닭갈비 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-TqwilFqb/'), + ('민들레뜨락2', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-TjKDlC8O/'), + ('갤러리eat', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-TWwbFN71/'), + ('별난주점 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-S7zwlDlK/'), + ('푸른스시', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-SqnlFJgM/'), + ('로스2000', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-ShUxlIE9/'), + ('진심카츠', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-SXGvFJMs/'), + ('꽃님맥주', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-RbaSFNVB/'), + ('포 레오', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-RUjblNfG/'), + ('수해복마라탕 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-RKNBFNBJ/'), + ('와플대학 광운대캠퍼스', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-RBQDlHhY/'), + ('큰집닭강정 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-Q3UblLlI/'), + ('썬더치킨 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-QpJ7FO1k/'), + ('카페베르데', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-QUP8lKmi/'), + ('여우곱창', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-QNR4lL1t/'), + ('이층집', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-QA0ZlPCq/'), + ('부리또잇', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-P5gQlDDO/'), + ('장수국수 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-PycFFD0-/'), + ('맛불', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-Pp-hlL0p/'), + ('디델리 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-PiyklG8U/'), + ('더진국 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-PYBNILWB/'), + ('미식성', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-O7zQIONm/'), + ('고씨네 광운대점', 'AI_CONVERGENCE', 'https://www.instagram.com/p/DU-ObZZFHc5/'), + + -- 경영대학 + ('맛불', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=2'), + ('경대컵밥 광운대점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=3'), + ('부리또잇', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=4'), + ('영축산정육식당', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=5'), + ('중화호반닭갈비 광운대점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=6'), + ('수해복마라탕 광운대점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=7'), + ('푸른스시', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=8'), + ('치킨플러스 월계점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=9'), + ('고씨네 광운대점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=10'), + ('이층집', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=11'), + ('미식성', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=12'), + ('장수국수 광운대점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=13'), + ('더진국 광운대점', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=14'), + ('포 레오', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=15'), + ('여우곱창', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=16'), + ('민들레뜨락2', 'BUSINESS', 'https://www.instagram.com/p/DVaatr2kZpl/?img_index=17'), + + -- 정책법학대학 + ('경대컵밥 광운대점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=3'), + ('고씨네 광운대점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=4'), + ('디델리 광운대점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=5'), + ('미식성', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=6'), + ('수해복마라탕 광운대점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=7'), + ('영축산정육식당', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=9'), + ('중화호반닭갈비 광운대점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=11'), + ('푸른스시', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=12'), + ('민들레뜨락2', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=13'), + ('치킨클럽 성북역본점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=14'), + ('치킨플러스 월계점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=15'), + ('별난주점 광운대점', 'POLICY_LAW', 'https://www.instagram.com/p/DVlGzgaEWnH/?img_index=16'), + + -- 공과대학 + ('카페베르데', 'ENGINEERING', 'https://www.instagram.com/p/DUUp0LNkTPY/'), + ('꽃님맥주', 'ENGINEERING', 'https://www.instagram.com/p/DUUpoWrEfje/'), + ('민들레뜨락2', 'ENGINEERING', 'https://www.instagram.com/p/DUUpjOykdHD/'), + ('중화호반닭갈비 광운대점', 'ENGINEERING', 'https://www.instagram.com/p/DUUpbNdkcr4/'), + ('여우곱창', 'ENGINEERING', 'https://www.instagram.com/p/DUUpTwskYkZ/'), + ('로스2000', 'ENGINEERING', 'https://www.instagram.com/p/DUUpN33kQKx/'), + ('고씨네 광운대점', 'ENGINEERING', 'https://www.instagram.com/p/DUUpFrVkdrb/'), + ('더진국 광운대점', 'ENGINEERING', 'https://www.instagram.com/p/DUUo59FkZh-/'), + + -- 자연과학대학 + ('중화호반닭갈비 광운대점', 'NATURAL_SCIENCE', 'https://www.instagram.com/p/DWY17M1Elxu/'), + ('고씨네 광운대점', 'NATURAL_SCIENCE', 'https://www.instagram.com/p/DWY1yrukr0y/'), + ('꽃님맥주', 'NATURAL_SCIENCE', 'https://www.instagram.com/p/DWY1oHukpeL/'), + ('미식성', 'NATURAL_SCIENCE', 'https://www.instagram.com/p/DWNaVQxklal/'), + ('민들레뜨락2', 'NATURAL_SCIENCE', 'https://www.instagram.com/p/DWNaIqxkisD/'), + ('더진국 광운대점', 'NATURAL_SCIENCE', 'https://www.instagram.com/p/DViQWEvkggO/'), + + -- 인문사회과학대학 + ('경대컵밥 광운대점', 'HUMANITIES_SOCIAL', 'https://www.instagram.com/p/DVd1kCvkiNS/'), + ('꽃님맥주', 'HUMANITIES_SOCIAL', 'https://www.instagram.com/p/DVd1bWGkuDF/'), + ('미식성', 'HUMANITIES_SOCIAL', 'https://www.instagram.com/p/DVd1B5REizr/'), + ('장수국수 광운대점', 'HUMANITIES_SOCIAL', 'https://www.instagram.com/p/DVd06NJEisK/'), + ('카페베르데', 'HUMANITIES_SOCIAL', 'https://www.instagram.com/p/DVd0zpckqMy/'), + + -- 전자정보공과대학 + ('치킨플러스 월계점', 'ELECTRONICS_INFO', 'https://www.instagram.com/p/DVGce7ujxxl/?img_index=1'), + ('민들레뜨락2', 'ELECTRONICS_INFO', 'https://www.instagram.com/p/DVGcIRZj2FJ/?img_index=1'), + ('미식성', 'ELECTRONICS_INFO', 'https://www.instagram.com/p/DVGbqs-jw8d/?img_index=1'), + ('꽃님맥주', 'ELECTRONICS_INFO', 'https://www.instagram.com/p/DVGbhjij-jf/?img_index=1'), + + -- 자유전공학부 + ('카페베르데', 'FREE_MAJOR', 'https://www.instagram.com/p/DVfEWhSkisN/'), + ('푸른스시', 'FREE_MAJOR', 'https://www.instagram.com/p/DVczYw0knaH/'), + ('꽃님맥주', 'FREE_MAJOR', 'https://www.instagram.com/p/DVcyyKXEhtn/'), + ('민들레뜨락2', 'FREE_MAJOR', 'https://www.instagram.com/p/DVcyrwaktF2/'), + ('치킨플러스 월계점', 'FREE_MAJOR', 'https://www.instagram.com/p/DVcyD0Mkq0j/'), + ('맛불', 'FREE_MAJOR', 'https://www.instagram.com/p/DVcx2dskqbZ/'), + ('미식성', 'FREE_MAJOR', 'https://www.instagram.com/p/DVcxirGkuTY/') +) +INSERT INTO "RestaurantPartnership" (id, "restaurantId", college, "instagramUrl", "updatedAt") +SELECT gen_random_uuid()::text, r.id, p.college::"College", p.url, NOW() +FROM partnership_data p +JOIN "Restaurant" r ON r.name = p.restaurant_name +ON CONFLICT ("restaurantId", college) DO NOTHING; + +-- isPartner 플래그 갱신: 제휴 행이 1개 이상 있는 식당 +UPDATE "Restaurant" r +SET "isPartner" = true, "updatedAt" = NOW() +WHERE EXISTS (SELECT 1 FROM "RestaurantPartnership" rp WHERE rp."restaurantId" = r.id) + AND r."isPartner" = false; + +-- 검증 +SELECT COUNT(*) AS partnerships_total FROM "RestaurantPartnership"; +SELECT COUNT(*) AS partner_restaurants FROM "Restaurant" WHERE "isPartner" = true; +SELECT college, COUNT(*) FROM "RestaurantPartnership" GROUP BY college ORDER BY college; + +-- 매칭 실패 확인 (DB 에 없는 이름) +WITH partnership_input(restaurant_name) AS ( + VALUES ('중화호반닭갈비 광운대점'), ('민들레뜨락2'), ('갤러리eat'), ('별난주점 광운대점'), + ('푸른스시'), ('로스2000'), ('진심카츠'), ('꽃님맥주'), ('포 레오'), + ('수해복마라탕 광운대점'), ('와플대학 광운대캠퍼스'), ('큰집닭강정 광운대점'), + ('썬더치킨 광운대점'), ('카페베르데'), ('여우곱창'), ('이층집'), ('부리또잇'), + ('장수국수 광운대점'), ('맛불'), ('디델리 광운대점'), ('더진국 광운대점'), + ('미식성'), ('고씨네 광운대점'), ('경대컵밥 광운대점'), ('영축산정육식당'), + ('치킨플러스 월계점'), ('치킨클럽 성북역본점') +) +SELECT p.restaurant_name AS unmatched_name +FROM partnership_input p +LEFT JOIN "Restaurant" r ON r.name = p.restaurant_name +WHERE r.id IS NULL; + +COMMIT; diff --git a/scripts/seed-restaurants/py-menus-import.sql b/scripts/seed-restaurants/py-menus-import.sql new file mode 100644 index 0000000..a7bb8ab --- /dev/null +++ b/scripts/seed-restaurants/py-menus-import.sql @@ -0,0 +1,1254 @@ +BEGIN; + +-- 대상 식당의 기존 Menu 삭제 (멱등) +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '포 레오'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '한라산감자탕'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '후문식당'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '고씨네 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '굿킨 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '그옛날1947왕만두'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '더진국 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '또와집순대국'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '맛불'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '민들레국시'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '민들레뜨락2'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '부리또잇'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '수해복마라탕 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '신연마라탕'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '영축산정육식당'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '오쎄'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '전설의멸치국수 월계점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '중화호반닭갈비 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '진미통닭'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '카츠백 월계점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '큰집닭강정 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '푸른스시'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '화로상회 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '가마솥뼈다귀감자탕'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '놀부부대찌개 광운대역점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '더원'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '돈장군 광운대본점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '마떡다이천 광운대본점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '마산아구찜'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '마포연탄불고기'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '명동찌개마을 광운대역점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '명태이야기'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '미미식당 월계점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '사계절김밥'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '서초우동 광운대역점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '스마일돈까스'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '엄마손김밥&분식'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '왕토종순대국'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '인생아구찜 월계점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '전주밥상쌈밥'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '정담소반'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '집밥'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '치킨클럽 성북역본점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '친친'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '커피는기억의끌림'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '큰맘할매순대국 광운대점'); +DELETE FROM "Menu" WHERE "restaurantId" IN (SELECT id FROM "Restaurant" WHERE name = '한방전주콩나물국밥 광운대역점'); + +-- 메뉴 INSERT (createdAt = clock_timestamp 으로 입력 순서 보존) +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '즉석우동', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치우동', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵우동', 4500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵김치우동', 4500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔국수', 4500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무국수', 6500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무냉면', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄면', 4500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔냉면', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵만', 4500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '서리태콩국수', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김밥', 3000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기만두', 3500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치만두', 3500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '반반만두 (김치반/고기반)', 3500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '서초우동 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '전복갈비탕', 17000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비탕', 15000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소내장탕', 12000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소머리국밥', 11000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한우소머리국밥', 14000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우거지갈비탕', 14000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두국', 10000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찐만두', 9000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰순대국', 11000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국', 10000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈다귀탕', 10000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '도가니탕', 13000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장', 11000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소곱창전골 (소/대)', 28000, NULL, '[{"label": "소", "price": 28000}, {"label": "대", "price": 45000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자탕 (소/중/대)', 30000, NULL, '[{"label": "소", "price": 30000}, {"label": "중", "price": 35000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수육', 20000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대모듬 (중/대)', 25000, NULL, '[{"label": "중", "price": 25000}, {"label": "대", "price": 35000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찰순대', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토종 닭도리탕 (예약)', 60000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '왕토종순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자탕 (소/중/대)', 30000, '메인', '[{"label": "소", "price": 30000}, {"label": "중", "price": 35000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해장국', 10000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈 추가', 10000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제비', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음밥', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '가마솥뼈다귀감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대패삼겹', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지갈비', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹살', 8500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '목살', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '항정살', 11000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장삼겹살', 9500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소갈비살', 15000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '안창살', 17000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육회', 14000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '돈장군 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밥없이 제육만', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고등어조림', 9000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 7500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝배기불고기', 7500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치김치찌개', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청국장', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부', 7000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '정담소반'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백반', 9000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '집밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란후라이', 1000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '집밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '집밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '집밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 5000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '집밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '집밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마떡세트 (마떡1인+야끼만두1인+순대1인+꼬마김밥1인+음료수)', 13000, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매떡세트 (매떡1인+야끼만두1인+순대1인+오뎅1인+꼬마김밥+음료수)', 15500, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마늘떡볶이 (1인분)', 3500, '떡볶이', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운떡볶이 (1인분)', 4000, '떡볶이', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찰순대 (1인분)', 4000, '순대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찰순대 내장포함 (1인분)', 5000, '순대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '내장만 · 선택불가 (1인분)', 5000, '순대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '미도어묵 (1인 3개)', 2500, '어묵', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '미도어묵 (1개)', 900, '어묵', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꼬마김밥 (1인분/5줄)', 3000, '김밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야끼만두 (1인분/3개)', 2000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야끼만두 (1개)', 700, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란 (1개)', 700, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탄산음료 (355ml) — 펩시콜라/스프라이트', 1500, '음료수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탄산음료 (500ml)', 2000, '음료수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마늘떡볶이 재료포장 (2~3인분)', 7000, '재료 포장 (밀키트)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운떡볶이 재료포장 (2~3인분)', 8000, '재료 포장 (밀키트)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마떡다이천 광운대본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연탄불고기쌈밥', 14000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '안주연탄불고기', 16000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오돌낙지뚝배기비빔밥', 13000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무된장비빔밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장국수', 6000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉면 (물/비빔)', 8000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '업진살', 39000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬특수부위', 29000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '암돼지갈비', 18000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소갈빗살', 25000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생삼겹살', 18000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통갈매기', 19000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '목항정살', 19000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '암돼지목살', 18000, '고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생맥주', 5000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 4000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마포연탄불고기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아구찜 (소/중/대)', 30000, NULL, '[{"label": "소", "price": 30000}, {"label": "중", "price": 35000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아구탕 (소/중/대)', 30000, NULL, '[{"label": "소", "price": 30000}, {"label": "중", "price": 35000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아구볶음', 20000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩국수', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭도리탕', 25000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두루치기', 15000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태찌개', 15000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생선조림', 15000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '마산아구찜'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사계절김밥', 4000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치김밥', 5000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈김밥', 5000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유부김밥', 5000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치김밥', 5000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추참치김밥', 5300, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '크래미김밥', 5300, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '와사비참치', 5300, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '와사비크래미', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쇠고기김밥', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우튀김김밥', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈가스김밥', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 5000, '면류·기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡라면', 5500, '면류·기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈라면', 5500, '면류·기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두라면', 6000, '면류·기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해장라면', 6000, '면류·기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '사계절김밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야채김밥', 3800, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈김밥', 4500, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치김밥', 4500, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기김밥', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '샐러드김밥', 4500, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우튀김김밥', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추참치김밥', 5500, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈가스김밥', 6000, '김밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오므라이스', 7500, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치볶음밥', 7500, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부찌개', 7500, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제돈까스', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈돈까스', 8500, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마돈까스', 8500, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 5000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡라면', 6000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두라면', 6000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈라면', 5000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부라면', 6000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '부대라면', 7000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짬뽕라면', 7000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵', 5000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '라면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵우동', 6000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유부우동', 5500, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치우동', 6000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼국수', 7000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치칼국수', 7000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수', 7000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔국수', 7000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄면', 7000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉면 (물/비빔)', 7000, '우동&국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡국', 7000, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡만두국', 8000, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두국', 7500, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제비', 7000, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰수제비', 7000, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치수제비', 7000, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '들깨수제비', 7500, '떡&만두&수제비', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '엄마손김밥&분식'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤 시래기 명태조림 (2인이상)', 16000, '명태조림', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '시래기 추가', 3000, '명태조림', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤 명태조림 (소/중/대)', 26000, '명태조림', '[{"label": "소(2마리)", "price": 26000}, {"label": "중(3마리)", "price": 39000}, {"label": "대(4마리)", "price": 52000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰 가오리 조림 (중/대)', 39000, '명태조림', '[{"label": "중(2인)", "price": 39000}, {"label": "대(3~4인)", "price": 52000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤 명태조림 정식 (2인이상)', 13000, '명태조림', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '영양솥밥', 3000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고등어정식', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '명태초무침', 17000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '왕새우튀김', 17000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어순대', 22000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어린이돈까스', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명태이야기'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한우 불고기', 16000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제주 은갈치조림', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '낙지볶음', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오삼불고기', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어볶음', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치 제육볶음', 12000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기 김치찌개', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꽁치 김치찌개', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오뎅 김치찌개', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기 애호박찌개', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물 순두부찌개', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '차돌 된장찌개', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '가정식백반', 9000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생삼겹살 (180g, 2인분 이상)', 18000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장 석쇠구이 (계란찜+된장찌개 포함)', 16000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장 불고기정식', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연포탕', 13000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대구탕', 11000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태탕', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란찜', 5000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잔치국수 (동절기)', 5000, '후식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '열무국수 (하절기)', 5000, '후식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 1000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백세주', 9000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '복분자', 12000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '미미식당 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에스프레소 (솔로/도피오/룽고/리스트레또/더블)', 3500, 'ESPRESSO COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에스프레소 (마끼아또/사케라)', 4000, 'ESPRESSO COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아메리카노', 3500, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카페라떼 / 카푸치노', 4000, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '코코넛라떼 (COCONUT LATTE)', 5500, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카페모카 / 카라멜 / 바닐라 / 헤이즐넛', 4500, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아포가토', 5000, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '녹차라떼 / 밀크티', 5000, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '흑임자 / 쑥라떼', 5500, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마 라떼 / 달고나 라떼 (ICE)', 5000, 'VARIATION', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '애플주스 골드메달 / 스파클링', 4500, 'JUICE·ADE·ALCOHOL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '에이드 (레몬/자몽/모히또/패션후르츠)', 4800, 'JUICE·ADE·ALCOHOL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스무디 (딸기/믹스베리/망고)', 4500, 'JUICE·ADE·ALCOHOL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아이스티 (복숭아/자몽)', 4500, 'JUICE·ADE·ALCOHOL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '바닐라 프라페', 6000, 'JUICE·ADE·ALCOHOL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '허브티 (캐모마일/페퍼민트/레몬밤/재스민)', 4500, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '테일러 오브 헤로게이트 (Lemon & Orange)', 4500, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '티 (녹차/레몬/유자/생강/모과)', 5000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쌍화차 / 대추차 (9월말~3월)', 7000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '핸드드립 (HOT/ICE)', 5500, 'HAND DRIP', '[{"label": "HOT", "price": 5500}, {"label": "ICE", "price": 6000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '핫쵸코', 4000, 'CHOCOLATE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '민트쵸코 / 시나몬쵸코', 5000, 'CHOCOLATE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '커피는기억의끌림'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짜장밥', 7000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야채볶음밥', 7000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선볶음밥', 9000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사천볶음밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우볶음밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마파두부밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡채밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장제밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선짬뽕밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬덮밥', 10000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡탕밥', 15000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유니짜장', 6000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선정반짜장', 9000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선간짜장', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사천탕면', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물볶음면', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '울면', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선우동', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선짬뽕', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백짬뽕', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '중사이밍면', 11000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짜사이탕면', 11000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '굴짬뽕', 12000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물 누룽지탕 (누룽지 4개)', 30000, '요리류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어향가지 (소/대)', 20000, '요리류', '[{"label": "소", "price": 20000}, {"label": "대", "price": 25000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마파두부 (소/대)', 20000, '요리류', '[{"label": "소", "price": 20000}, {"label": "대", "price": 25000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추잡채 (소/대, 꽃빵 2/4개)', 25000, '요리류', '[{"label": "소", "price": 25000}, {"label": "대", "price": 30000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬 (소/대)', 25000, '요리류', '[{"label": "소", "price": 25000}, {"label": "대", "price": 30000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양장피 (소/대)', 30000, '요리류', '[{"label": "소", "price": 30000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보채 (소/대)', 45000, '요리류', '[{"label": "소", "price": 45000}, {"label": "대", "price": 55000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꽃빵 추가', 1000, '요리류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탕수육 (소/대)', 18000, '튀김류', '[{"label": "소", "price": 18000}, {"label": "대", "price": 24000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라조육 (소/대)', 20000, '튀김류', '[{"label": "소", "price": 20000}, {"label": "대", "price": 25000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍기 (소/대)', 22000, '튀김류', '[{"label": "소", "price": 22000}, {"label": "대", "price": 27000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유린기 (소/대)', 22000, '튀김류', '[{"label": "소", "price": 22000}, {"label": "대", "price": 27000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라조기 (소/대)', 22000, '튀김류', '[{"label": "소", "price": 22000}, {"label": "대", "price": 27000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍육 (소/대)', 22000, '튀김류', '[{"label": "소", "price": 22000}, {"label": "대", "price": 27000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐쇼새우 (소/대)', 25000, '튀김류', '[{"label": "소", "price": 25000}, {"label": "대", "price": 30000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍새우 (소/대)', 25000, '튀김류', '[{"label": "소", "price": 25000}, {"label": "대", "price": 30000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '와사비크림새우 (소/대)', 25000, '튀김류', '[{"label": "소", "price": 25000}, {"label": "대", "price": 30000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빙화만두', 8000, '만두', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '북경오리 단품 (2~3인 기준)', 80000, '북경오리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '북경오리 정식 (3~4인 기준)', 100000, '북경오리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '세트1: 유니짜장 2개 + 탕수육', 20000, '세트메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '세트2: 유니짜장 + 삼선짬뽕 + 탕수육', 22000, '세트메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '세트3: 삼선짬뽕 2개 + 탕수육', 24000, '세트메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '이과두주', 4000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연태고량주 (소/중/대)', 12000, '주류', '[{"label": "소", "price": 12000}, {"label": "중", "price": 22000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공부가주 (대)', 40000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '금문고량주', 80000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '설원', 30000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칭따오 맥주', 9000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료 (사이다/콜라/환타)', 2000, '주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해파리 냉채', 20000, '술안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짬뽕탕 (술국)', 25000, '술안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더원'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찹쌀 탕수육 (소/중/1인)', 9000, '요리류·고기', '[{"label": "소", "price": 16000}, {"label": "중", "price": 21000}, {"label": "1인", "price": 9000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찹쌀 사천탕수육 (소/중/1인)', 11000, '요리류·고기', '[{"label": "소", "price": 19000}, {"label": "중", "price": 26000}, {"label": "1인", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찹쌀 라조육 (소/중/1인)', 11000, '요리류·고기', '[{"label": "소", "price": 19000}, {"label": "중", "price": 26000}, {"label": "1인", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찹쌀 깐풍육 (소/중/1인)', 11000, '요리류·고기', '[{"label": "소", "price": 19000}, {"label": "중", "price": 26000}, {"label": "1인", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿔바로우 (소/중/1인)', 12000, '요리류·고기', '[{"label": "소", "price": 19000}, {"label": "중", "price": 26000}, {"label": "1인", "price": 12000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍기 (소/중)', 21000, '요리류·닭', '[{"label": "소", "price": 21000}, {"label": "중", "price": 31000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라조기 (소/중)', 21000, '요리류·닭', '[{"label": "소", "price": 21000}, {"label": "중", "price": 31000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유린기 (소/중)', 26000, '요리류·닭', '[{"label": "소", "price": 26000}, {"label": "중", "price": 34000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿔더기 (소/중)', 26000, '요리류·닭', '[{"label": "소", "price": 26000}, {"label": "중", "price": 34000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칠리 중새우 (소/중)', 29000, '요리류·새우', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '레몬 크림새우 (소/중)', 29000, '요리류·새우', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍 중새우 (소/중)', 29000, '요리류·새우', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 당면잡채', 21000, '단품 요리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 마파두부', 21000, '단품 요리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '술국 해물짬뽕', 21000, '단품 요리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양장피 (소/중)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬 (소/중)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물 누룽지탕 (소/중)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 고추잡채 (소/중, 꽃빵)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '깐풍관자 (소/중)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라샹궈 (소/중)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보채 (소/중)', 29000, '특선 요리', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '전가복 (소/중)', 49000, '특선 요리', '[{"label": "소", "price": 49000}, {"label": "중", "price": 66000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어향동고', 36000, '특선 요리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어향가지', 29000, '특선 요리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'Set 1: 탕수육 + 연태 고량주(소)', 21000, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'Set 2: 양장피 + 유산슬 + 연태 고량주(소)', 66000, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'Set 3: 유린기 + 팔보채 + 연태 고량주(소)', 62000, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'Set 4: 사천 탕수육 + 양장피 + 공부가주(소)', 56000, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'Set 5: 해물 누룽지탕 + 깐풍기 + 공부가주(소)', 66000, '세트 메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'A 코스 (2인 이상)', 14000, '코스', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'B 코스 (2인 이상)', 18000, '코스', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'C 코스 (2인 이상)', 30000, '코스', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'Special Set (양장피+유산슬+고추잡채+깐쇼새우)', 99000, '코스', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '친친 짜장', 6000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 짜장', 8000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 고추짜장', 8000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 간짜장', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 고추간짜장', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팔보 쟁반짜장', 21000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 우동', 9000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물해장 짬뽕', 8000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '친친 짬뽕', 8000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 짬뽕 (상/중/하)', 9000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 짬뽕', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음 짬뽕', 21000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백 짬뽕', 9000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '울면', 9000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '친친 짜장밥', 8000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 짜장밥', 10000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 고추짜장밥', 10000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 간짜장밥', 11000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 고추간짜장밥', 11000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬볶음밥', 8000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우 볶음밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물해장 짬뽕밥', 8000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '친친 짬뽕밥', 8000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 짬뽕밥 (상/중/하)', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백 짬뽕밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '잡탕밥', 13000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼선 볶음밥', 10000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '울면밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 필라프', 11000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 당면잡채밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 마파두부 덮밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '등심 가지덮밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유산슬덮밥', 13000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '중화제육덮밥', 9000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '중라 소불고기 덮밥', 13000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉 짬뽕 (하절기)', 9000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩국수 (하절기)', 10000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔면 하/중 (하절기)', 9000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '굴 짬뽕 (동절기)', 11000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '굴 국밥 (동절기)', 10000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제 군만두', 7000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꼬마 군만두', 6000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물만두', 6000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꽃빵', 6000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '가지튀김', 11000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯 탕수육', 11000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '춘권', 6000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란 후라이', 1500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '여가 연태 고량주 (소/중/대)', 14000, '고량주', '[{"label": "소", "price": 14000}, {"label": "중", "price": 26000}, {"label": "대", "price": 46000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '백년 연태 고량주 (중/대)', 26000, '고량주', '[{"label": "중", "price": 26000}, {"label": "대", "price": 46000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천진 고량주 (소/중/대)', 19000, '고량주', '[{"label": "소", "price": 19000}, {"label": "중", "price": 31000}, {"label": "대", "price": 56000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공부가주 (소/중/대)', 16000, '고량주', '[{"label": "소", "price": 16000}, {"label": "중", "price": 29000}, {"label": "대", "price": 51000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '북경 고량주', 8000, '고량주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '이과두주', 8000, '고량주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양화대곡 (중/대)', 36000, '고량주', '[{"label": "중", "price": 36000}, {"label": "대", "price": 71000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참이슬', 5000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '처음처럼', 5000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새로', 5000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카스', 5000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '테라', 6000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칭따오', 8000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 5000, '기타 주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '친친'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '놀부 부대찌개 (BEST)', 10000, '단품 부대찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈 부대찌개', 11000, '단품 부대찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우삼겹 부대찌개', 12000, '단품 부대찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물 불고기 부대찌개', 11500, '단품 부대찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈 닭갈비철판', 16500, '철판', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭갈비철판', 14500, '철판', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쭈꾸미철판', 15500, '철판', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통등심돈까스 통팡세트 (1인/2인/3~4인)', 32000, '세트', '[{"label": "1인", "price": 32000}, {"label": "2인", "price": 43000}, {"label": "3~4인", "price": 53000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '놀부부대찌개 육수세트 (1인/2인)', 31500, '세트', '[{"label": "1인", "price": 31500}, {"label": "2인", "price": 42500}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물만두', 4000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 11000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통등심 셰프돈까스', 11000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 1000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햄', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수제비', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사리면', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '슬라이스 치즈', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통등심 돈까스 통팡', 9500, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김자반', 2500, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '조랭이떡', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우동', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡사리', 4000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두부', 6000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우삼겹', 10000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '철판 공기밥', 1000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '철판 우동', 2000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '철판 볶음밥', 2500, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '철판 치즈볶음밥', 5000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '철판 모짜렐라치즈', 5000, '사리·추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '놀부부대찌개 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양푼 생고기 김치찌개 (중/대, 국내산)', 16000, '찌개·탕', '[{"label": "중", "price": 16000}, {"label": "대", "price": 25000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대구뽈탕 (중/대, 지리/얼큰)', 20000, '찌개·탕', '[{"label": "중", "price": 20000}, {"label": "대", "price": 29000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양푼동태탕 (중/대)', 16000, '찌개·탕', '[{"label": "중", "price": 16000}, {"label": "대", "price": 25000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양푼동태내장탕 (중/대)', 25000, '찌개·탕', '[{"label": "중", "price": 25000}, {"label": "대", "price": 34000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양푼내장탕 (중/대)', 16000, '찌개·탕', '[{"label": "중", "price": 16000}, {"label": "대", "price": 25000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기 추가', 8000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '내장 추가', 8000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태 추가', 8000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란말이', 7000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두사리', 4000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햄사리', 4000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '당면사리', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡사리', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생면사리', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '명동찌개마을 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '반반 돈까스 (BEST)', 10500, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카레 돈까스', 10000, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '옛날 돈까스 (BEST)', 10000, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '크림 돈까스', 10000, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육 & 돈까스반 (BEST)', 12000, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 돈까스', 10000, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밥 한스쿱 추가', 500, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밥 두스쿱 추가', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스 반쪽 추가', 3500, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육 추가', 4500, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모닝빵 추가', 500, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '코카콜라 (355ml)', 2000, '음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제로콜라 (355ml)', 2000, '음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스프라이트 (355ml)', 2000, '음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제로펩시 (355ml)', 2000, '음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '스마일돈까스'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치떡', 25000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '옛날 후라이드', 18000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양념 치킨', 20000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운 양념치킨', 20000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '간장 치킨', 20000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '파닭 치킨', 20000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마늘 치킨', 20000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불닭 감자', 21000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순) 튀김 찜닭', 21000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순) 튀김 찜닭 (1.5)', 28000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '똥집 튀김', 14000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '똥집 볶음', 15000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치클세트 (후라이드+새우튀김5+라면+황도+감자튀김)', 40000, '세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연인세트 (후반+양반+감자튀김+라면)', 28000, '세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '친구세트 (후반+양반+간반+감자튀김+라면)', 37000, '세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자 튀김', 8000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭봉', 8000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈볼', 8000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '핫도그', 8000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '번데기탕', 9000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란찜', 10000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '국물 떡볶이', 10000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '튀김 쥐포', 7000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꼬마 만두', 6000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김 말이', 8000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '황도', 10000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 5000, '스몰안주', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '골뱅이', 21000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스', 14000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란 말이', 14000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우 튀김', 15000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬 소시지', 16000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬 튀김', 20000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬 마른안주', 22000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어', 15000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한치', 15000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '먹태', 15000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '노가리', 14000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '대구포', 14000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '구운 쥐포', 13000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육포 땅콩', 16000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '은행', 13000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어묵탕', 15000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짬뽕탕', 18000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '파 샐러드', 3000, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우동·소면', 3000, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면 사리', 2000, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡 사리', 2000, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '햇 반', 2000, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '추가소스', 500, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '포장무', 500, '추가메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생 맥주 500CC', 4500, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생 맥주 2000CC', 16000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생 맥주 3000CC', 24000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 6000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라', 2000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사이다', 2000, 'BEER·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '치킨클럽 성북역본점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기쌈밥', 12000, '쌈밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쭈꾸미삼겹쌈밥', 12000, '쌈밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쭈꾸미쌈밥', 10000, '쌈밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생선구이쌈밥', 9000, '쌈밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육쌈밥', 9000, '쌈밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어쌈밥', 9000, '쌈밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰갈비찜', 10000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈치조림', 10000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태찌개', 10000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우거지갈비탕', 8000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청국장', 8000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '북어해장국', 8000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부찌개', 8000, '집밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생삼겹살 (200g)', 13000, '단품', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼치콩 3인분 이상 (삼겹살+김치+콩나물)', 10000, '단품', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오리로스', 50000, '모임 (예약)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오리백숙', 50000, '모임 (예약)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭 백숙', 45000, '모임 (예약)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭도리탕', 30000, '모임 (예약)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태탕 (소/중/대)', 18000, '모임 (예약)', '[{"label": "소", "price": 18000}, {"label": "중", "price": 27000}, {"label": "대", "price": 36000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전주밥상쌈밥'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물국밥', 7000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물국밥정식 (수육 5점)', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치콩나물국밥', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '황태콩나물국밥', 9000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '굴콩나물국밥', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물선지해장국', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물비빔밥', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한우소고기무국', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡만두국', 9000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기장터국밥', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈해장국', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스', 9000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 9000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔냉면', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어숙회', 13000, '부대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 15000, '부대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '왕만두 (고기/김치)', 6000, '부대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자만두 (7개)', 4000, '부대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비만두 (7개)', 6000, '부대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '편육', 12000, '부대', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지수육 (소/중)', 15000, '부대', '[{"label": "소", "price": 15000}, {"label": "중", "price": 20000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵밥', 8000, '계절', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '묵사발', 7000, '계절', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한방전주콩나물국밥 광운대역점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오감만족 아구찜 (1인/중/대)', 28000, '찜', '[{"label": "1인", "price": 28000}, {"label": "중", "price": 44000}, {"label": "대", "price": 55000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '활력충전 낙지찜 (소/중/대)', 34000, '찜', '[{"label": "소", "price": 34000}, {"label": "중", "price": 45000}, {"label": "대", "price": 56000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물의 꽃 게찜 (소/중/대)', 31000, '찜', '[{"label": "소", "price": 31000}, {"label": "중", "price": 45000}, {"label": "대", "price": 59000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '천연피로회복제 쭈꾸미찜 (소/대)', 39000, '찜', '[{"label": "소", "price": 39000}, {"label": "대", "price": 49000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오도독 만두이찜 (소/중/대)', 29000, '찜', '[{"label": "소", "price": 29000}, {"label": "중", "price": 36000}, {"label": "대", "price": 44000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고소담백 알찜 (1인/소/중/대)', 25000, '찜', '[{"label": "1인", "price": 25000}, {"label": "소", "price": 36000}, {"label": "중", "price": 47000}, {"label": "대", "price": 58000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탱글탱글 곤이찜 (1인/소/중/대)', 23000, '찜', '[{"label": "1인", "price": 23000}, {"label": "소", "price": 32000}, {"label": "중", "price": 41000}, {"label": "대", "price": 51000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '가오리찜 (1인/소)', 24000, '찜', '[{"label": "1인", "price": 24000}, {"label": "소", "price": 34000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라겐 아구찜 (1인/소/중/대)', 24000, '찜', '[{"label": "1인", "price": 24000}, {"label": "소", "price": 34000}, {"label": "중", "price": 42000}, {"label": "대", "price": 50000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '살마니 아구찜 (1인/소/중/대)', 25000, '찜', '[{"label": "1인", "price": 25000}, {"label": "소", "price": 35000}, {"label": "중", "price": 44000}, {"label": "대", "price": 54000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '종합영양제 해물아구찜 (소/중/대)', 38000, '찜', '[{"label": "소", "price": 38000}, {"label": "중", "price": 51000}, {"label": "대", "price": 65000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '영양만점 알곤이찜 (1인/소/중/대)', 25000, '찜', '[{"label": "1인", "price": 25000}, {"label": "소", "price": 36000}, {"label": "중", "price": 47000}, {"label": "대", "price": 58000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '강력추천 인생해물찜 (소/중/대)', 46000, '찜', '[{"label": "소", "price": 46000}, {"label": "중", "price": 57000}, {"label": "대", "price": 68000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통문어 황제해물찜 (중/대)', 58000, '찜', '[{"label": "중", "price": 58000}, {"label": "대", "price": 68000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '기력충전 아낙찜 (중/대)', 47000, '찜', '[{"label": "중", "price": 47000}, {"label": "대", "price": 59000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '키토산 대하찜 (중/대)', 39000, '찜', '[{"label": "중", "price": 39000}, {"label": "대", "price": 50000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '인생아구찜 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국 (보통/특)', 9000, '순대국', '[{"label": "보통", "price": 9000}, {"label": "특", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '큰맘 순대국', 10000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대해장라면', 12000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯 순대국 (매운맛)', 11000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯순대해장라면 (매운맛)', 11000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '큰맘 내장국밥', 11000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰 모듬 술국', 26000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수육국밥 (보통/특)', 9000, '식사', '[{"label": "보통", "price": 9000}, {"label": "특", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈해장국 (보통/특)', 10000, '식사', '[{"label": "보통", "price": 10000}, {"label": "특", "price": 13000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '황태해장국', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '선지해장국', 10000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기김치찜', 11000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '할매소내장탕', 11000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝배기소불고기', 11000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 11000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '영양순대국', 12000, '큰맘 보신', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소갈비탕', 14000, '큰맘 보신', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소머리곰탕', 11000, '큰맘 보신', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소머리영양곰탕', 12000, '큰맘 보신', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼계탕', 14000, '큰맘 보신', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '할매토종순대 (소/대)', 9000, '순대 편육', '[{"label": "소", "price": 9000}, {"label": "대", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '편육 (소/대)', 9000, '순대 편육', '[{"label": "소", "price": 9000}, {"label": "대", "price": 11000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대곱창전골 (중/대)', 31000, '탕·전골·볶음', '[{"label": "중", "price": 31000}, {"label": "대", "price": 41000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈감자탕 (소/중/대)', 26000, '탕·전골·볶음', '[{"label": "소", "price": 26000}, {"label": "중", "price": 32000}, {"label": "대", "price": 38000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대곱창볶음', 26000, '탕·전골·볶음', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물/비빔 냉면', 9000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대 추가 (김장전골)', 9000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈 추가 (감자탕)', 9000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우거지 추가 (감자탕)', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면 사리', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '당면 사리', 2000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰맘할매순대국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기왕만두 (5개)', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치왕만두 (5개)', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기납작만두 (6개)', 5000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치납작만두 (6개)', 5000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '옛날 찐빵 (5개)', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우만두 (5개)', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '군만두 (6개)', 6000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '단무지', 500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찰 옥수수 (3개/낱개)', 2000, NULL, '[{"label": "낱개", "price": 2000}, {"label": "3개", "price": 4000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '그옛날1947왕만두'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지불백 (간장맛)', 8500, '불백', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장불백 (순한맛)', 8500, '불백', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰불백 (매운맛 1~3단계)', 8500, '불백', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음', 8500, '불백', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두루치기', 8500, '불백', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '국물두루치기', 8500, '불백', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈 사리', 2000, '사리추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우동 사리', 2000, '사리추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '당면 사리', 2000, '사리추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡 사리', 2000, '사리추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지불고기덮밥 (간장맛)', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고추장불고기덮밥 (순한맛)', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰불고기덮밥 (매운맛)', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덮밥 치즈 추가', 2000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '덮밥 곱배기', 2000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장찌개', 2000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장 사발면', 1500, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 4500, '마실거리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '마실거리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, '마실거리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '맛불'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '민들레 비빔국수', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물 비빔밥 (소고기 들기름)', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩비지탕', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장찌개', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우거지갈비탕', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기덮밥', 10000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 8500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음닭덮밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두부정식', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치볶음밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치치즈볶음밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레국시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란 부리또', 5200, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨 부리또', 5400, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기 부리또', 5900, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스테이크 부리또', 5900, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소세지 부리또', 5900, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자 부리또', 5200, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '믹스 부리또', 5400, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨텐더 부리또', 5900, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우튀김 부리또', 5900, '부리또', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨 퀘사디아', 6500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기 퀘사디아', 6500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자튀김', 2500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해쉬브라운 3장', 2500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '어니언링', 3000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '시즈닝 추가', 200, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캔음료 세트 추가', 1500, '세트 추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캔음료+감자 세트', 3500, '세트 추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캔음료+어니언링 세트', 4000, '세트 추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캔음료+해쉬브라운 3장 세트', 3500, '세트 추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '다이어트 (맵소스 조금, 야채 많이)', 0, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '웨지감자', 600, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해쉬브라운', 800, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '슬라이스 치즈', 600, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모짜렐라치즈 50g', 1500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모짜렐라치즈 100g', 2600, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈스틱', 800, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소세지', 1200, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우튀김 (토핑)', 1200, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈가스', 1200, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨텐더', 1200, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '할라피뇨', 600, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삶은 계란', 800, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭고기 50g', 1500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불고기 40g', 2000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '너겟 3개', 1000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캔음료', 2000, '음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '부리또잇'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라탕 (100g)', 1800, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라샹궈 (100g)', 3000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿔보로우', 16000, '식사류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '튀김꼬치 야채류 (1개)', 1000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '튀김꼬치 기타 (1개)', 2000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기·양고기 추가 (1봉지)', 3000, '추가토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꼬치 추가 (1개)', 1000, '추가토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '탄산음료', 2000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '중국음료수', 3000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빙홍차', 3000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카스', 5000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칭타오', 7000, '음료·주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '수해복마라탕 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지한마리 (600g)', 37000, '돼지 (600g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹살 (600g)', 37000, '돼지 (600g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '목살 (600g)', 37000, '돼지 (600g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '가브리살 (600g)', 37000, '돼지 (600g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뒷고기 (600g)', 26000, '돼지 (600g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '항정살 (600g)', 48000, '돼지 (600g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '삼겹살 (200g)', 14000, '돼지 (200g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '목살 (200g)', 14000, '돼지 (200g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '수입삼겹살 (200g)', 9000, '돼지 (200g)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육우꽃등심 (600g)', 49000, '소고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육우꽃등심 (200g)', 22000, '소고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육우등심 (600g)', 37000, '소고기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 6000, '후식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉면', 4000, '후식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란찜', 4000, '후식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '영축산정육식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면', 8000, '냉면', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔냉면', 8000, '냉면', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩국수', 8000, '냉면', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '멸치국수', 7000, '국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔국수', 8000, '국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '칼국수', 8000, '국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부', 7000, '국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장', 8000, '국수', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈돈까스', 8500, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뚝불고기', 8500, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 8000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비탕', 12000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '주먹밥', 3000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '곱빼기 (면만)', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '전설의멸치국수 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '후라이드 (大/中)', 14000, '치킨', '[{"label": "中", "price": 14000}, {"label": "大", "price": 19000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양념치킨 (大/中)', 15000, '치킨', '[{"label": "中", "price": 15000}, {"label": "大", "price": 20000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '반반치킨 (양념+후라이드, 大/中)', 15000, '치킨', '[{"label": "中", "price": 15000}, {"label": "大", "price": 20000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순살후라이드', 20000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순살양념치킨', 21000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양념소스 추가', 1000, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '무 추가', 500, '치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라/사이다 (500ml)', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라/사이다 (1.25L)', 3000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '진미통닭'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬 사시미 24pcs', 42000, '사시미', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '1인 모듬 사시미 12pcs', 22000, '사시미', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '광어 사시미 24pcs', 40000, '사시미', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어 사시미 24pcs', 40000, '사시미', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '광어+연어 사시미 24pcs', 40000, '사시미', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오늘의 초밥 11pcs', 15000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '특 초밥 12pcs', 20000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스페셜 초밥 12pcs', 23000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'VIP 초밥 14pcs', 28000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '광어 초밥 10pcs', 20000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어 초밥 10pcs', 20000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기 초밥 10pcs', 20000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '장어 초밥 10pcs', 20000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '초새우 초밥 10pcs', 17000, '초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어+새우 10pcs', 18000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어+광어 10pcs', 20000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어+장어 10pcs', 20000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어+소고기 10pcs', 20000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '광어+장어 10pcs', 20000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '광어+소고기 10pcs', 20000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '장어+소고기 10pcs', 20000, '반반초밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '회덮밥 (단품/정식)', 13000, '밥류', '[{"label": "단품", "price": 13000}, {"label": "정식", "price": 14000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연어 회덮밥 (단품/정식)', 14000, '밥류', '[{"label": "단품", "price": 14000}, {"label": "정식", "price": 15000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '활어 회덮밥 (단품/정식)', 14000, '밥류', '[{"label": "단품", "price": 14000}, {"label": "정식", "price": 15000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치 회덮밥 (단품/정식)', 13000, '밥류', '[{"label": "단품", "price": 13000}, {"label": "정식", "price": 14000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬 회덮밥 (단품/정식)', 14000, '밥류', '[{"label": "단품", "price": 14000}, {"label": "정식", "price": 15000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육회 비빔밥 (단품/정식)', 14000, '밥류', '[{"label": "단품", "price": 14000}, {"label": "정식", "price": 15000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '커플 세트 (2인)', 38000, '스페셜', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '푸른스시 정식 (1인)', 30000, '스페셜', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '유부 우동', 7000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '단품 냉모밀', 8000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '튀김 우동', 9000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '튀김 냉모밀', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야끼 우동', 11000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬 튀김 (6pcs/12pcs)', 6500, '사이드', '[{"label": "6pcs", "price": 6500}, {"label": "12pcs", "price": 12000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우 튀김 (6pcs/12pcs)', 8500, '사이드', '[{"label": "6pcs", "price": 8500}, {"label": "12pcs", "price": 16000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자 고로케 4pcs', 6000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨 가라아게 7pcs', 6000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '푸른스시'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '민들레비빔국수', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물비빔밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩비지탕', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치찌개', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장찌개', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우거지갈비탕', 10000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기덮밥', 8500, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육덮밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음닭덮밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '두부정식', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치볶음밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치치즈볶음밥', 8000, NULL, NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '민들레뜨락2'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국', 9000, '메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국(특)', 11000, '메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순대국 정식', 13000, '메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '술국', 19000, '메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '머리고기', 19000, '메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어 데침', 15000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어 볶음', 25000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '메밀전병 (2개)', 10000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '동태찌개', 60000, '특선·예약', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭도리탕', 45000, '특선·예약', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주 (처음처럼)', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주 (생드래프트)', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '청하', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '또와집순대국'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라탕 (100g)', 1800, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마라샹궈 (100g)', 3000, '식사', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿔바로우 (소/대)', 10000, '식사', '[{"label": "소", "price": 10000}, {"label": "대", "price": 15000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고기류 추가 (100g)', 3000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야채/면사리 (100g)', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 1500, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '연유꽃빵튀김', 8000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우볶음밥', 7000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마파두부', 10000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '마파두부덮밥', 10000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토마토계란볶음', 10000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토마토계란덮밥', 10000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿔바로우볶음면', 10000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물만두', 7000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '신연마라탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈닭갈비', 16000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭큰갈비', 14000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰막국수', 8000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물막국수', 8000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '주먹밥', 3000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음밥', 3000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬사리', 5000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈사리', 4000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡사리', 2000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우동사리', 2000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면사리', 2000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄면사리', 2000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마사리', 2000, '사리', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '중화호반닭갈비 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '더진국 수육국밥', 9900, '수육국밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진한 수육국밥', 11000, '수육국밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '붉은 수육국밥', 10500, '수육국밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진한 붉은 수육국밥', 11000, '수육국밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '더진국 순대국', 9900, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진한 순대국', 11000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰 순대국', 10500, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진한 얼큰 순대국', 11000, '순대국', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부국밥', 11000, '순두부', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '얼큰 순두부', 11000, '순두부', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔냉면', 8000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '물냉면', 7000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '평양냉면', 10000, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '직화고기 추가', 6000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '들깨수육 (대)', 30000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '술국', 23000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토종순대 (10접/20접)', 8000, '안주류', '[{"label": "10접", "price": 8000}, {"label": "20접", "price": 14000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '간양천엽', 6000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '남도떡갈비', 14000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통모듬 (5접/10접)', 3000, '안주류', '[{"label": "5접", "price": 3000}, {"label": "10접", "price": 6000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자만두 (5개/10개)', 3000, '안주류', '[{"label": "5개", "price": 3000}, {"label": "10개", "price": 6000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '야채만두 (5개/8개)', 3000, '안주류', '[{"label": "5개", "price": 3000}, {"label": "8개", "price": 6000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '곱순이/곱찌개', 23000, '안주류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '더진국 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '등심카츠', 11900, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '안심카츠', 12900, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '통치즈카츠', 12900, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '안심&치즈카츠', 12900, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '안심&새우카츠', 12500, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '1985 경양식카츠', 12500, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마치즈카츠', 13500, '메인메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꼬치어묵우동', 7900, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤꼬치어묵우동', 8200, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈릭포크어묵우동', 8200, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉모밀', 7900, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔모밀', 7900, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '들기름모밀', 7400, '면류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈릭포가카레', 4500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우튀김 (2pc)', 3500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자코로케 (2pc)', 3500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '빽''s 치킨너겟 (5pc)', 4500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버팔로윙 (4pc)', 3500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생선카츠 (2pc)', 3500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '카츠백 월계점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '숯불 닭갈비', 7900, '단품 (5-7개)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '옛날양념 돼갈이 (목살)', 7900, '단품 (5-7개)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참숯 통감김 돼삼이', 7900, '단품 (5-7개)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤 매닭이 (닭다리살)', 7900, '단품 (5-7개)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '눈꽃 통목살 목살이', 7900, '단품 (5-7개)', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '5-7개 단품 세트', 7900, '세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '8-9개 단품 세트', 14500, '세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '12-14개 단품 세트', 21000, '세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '화로상회 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '후라이드 치킨', 16000, '대표', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '굿킨 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '양념 치킨', 18000, '대표', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '굿킨 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '핫마늘간장 치킨', 18000, '대표', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '굿킨 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈뿜뿜 치킨', 18000, '대표', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '굿킨 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '레드페퍼 치킨', 18000, '대표', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '굿킨 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아메리카노 (HOT/ICE)', 4000, 'COFFEE', '[{"label": "HOT", "price": 4000}, {"label": "ICE", "price": 5000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '프림믹스커피 (HOT/ICE)', 4000, 'COFFEE', '[{"label": "HOT", "price": 4000}, {"label": "ICE", "price": 5500}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카페라떼 (시럽: 헤이즐넛/바닐라/카라멜/연유)', 5500, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '초코라떼', 5500, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카페모카', 5500, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카라멜마끼야또', 5500, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카푸치노', 5500, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밀크티 / 생강밀크티 (HOT/ICE)', 5500, 'COFFEE', '[{"label": "HOT", "price": 5500}, {"label": "ICE", "price": 6000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '녹차라떼', 6000, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생강라떼', 6000, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마라떼', 6000, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '호박라떼', 6000, 'COFFEE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '율무차 (HOT/ICE)', 5000, 'TEA', '[{"label": "HOT", "price": 5000}, {"label": "ICE", "price": 5500}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '체리차 (HOT/ICE)', 5000, 'TEA', '[{"label": "HOT", "price": 5000}, {"label": "ICE", "price": 5500}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매실차 (HOT/ICE)', 5500, 'TEA', '[{"label": "HOT", "price": 5500}, {"label": "ICE", "price": 6000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀레몬차', 6000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀레몬+생강', 6000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀유자차', 6000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀자몽차', 6000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀모과차', 6000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀생강차', 6000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀대추차', 8000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꿀대추+생강차', 8000, 'TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '페퍼민트 (허브티)', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '캐모마일', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '로즈마리', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라벤더', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '홍차', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '녹차', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '자스민', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '국화차', 5000, 'HERBAL TEA', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '아이스티 (복숭아/레몬)', 5000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '레몬에이드 / 체리에이드', 5500, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '레몬콕 / 체리콕', 5500, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닥터페퍼', 5000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '미숫가루', 5500, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '밀크쉐이크', 7000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '딸기쉐이크', 7000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '초코쉐이크', 7000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모카쉐이크', 7000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '녹차쉐이크', 7000, 'SOFT DRINK', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생과일 딸기쥬스 (계절과일)', 7000, 'JUICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생과일 키위쥬스', 7000, 'JUICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '생과일 토마토쥬스', 7000, 'JUICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '혼합 생과일쥬스', 7000, 'JUICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '블루베리 스무디', 7000, 'JUICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '신토닉', 7000, 'COCKTAIL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진토닉', 7000, 'COCKTAIL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '진오렌지', 7000, 'COCKTAIL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '페퍼민트 (칵테일)', 7000, 'COCKTAIL', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팥빙수 (2인분, 여름 한정)', 13000, '기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '파르페', 7500, '기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계절과일 한 접시', 20000, '기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면 (왕뚜껑)', 5000, '기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토스트', 5500, '기타', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '오쎄'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭강정 (맛 9종 - 매운/중간매운/약간매운/순한/간장/치즈/허니버터/순살후라이드/뿌링클)', 9000, '닭강정', '[{"label": "중", "price": 9000}, {"label": "대 + 콜라(중)", "price": 13000}, {"label": "특대 + 콜라(대) — 반반 포장 가능", "price": 18000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤김밥 (4개)', 2500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두 (5개)', 1000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡 추가', 1000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨무', 500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '웨이브 감자튀김', 3000, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마치즈스틱 (4개)', 2500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈스틱 (5개)', 2500, '사이드', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈볼 (3개/5개)', 2500, '사이드', '[{"label": "3개", "price": 2500}, {"label": "5개", "price": 3500}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소스 (매운맛/순한맛/허니머스터드/시즈닝)', 500, '소스·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콜라/사이다 (중/대)', 1500, '소스·음료', '[{"label": "중", "price": 1500}, {"label": "대", "price": 2500}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '큰집닭강정 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯카레세트', 11500, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '포크카레세트', 14500, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡갈비카레세트', 12500, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨카레세트', 11000, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '시푸드카레세트 [NEW]', 13500, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈카레세트 [NEW]', 12500, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '포테이토카레세트', 11000, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '왕제카레세트', 21000, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '포크카레우동세트', 13000, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '시푸드카레우동세트', 11500, '카레 세트', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭튀김카레', 10000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스카레', 9000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡갈비카레', 9000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기카레', 9000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고로케카레', 9000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈롤까스카레', 10000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우까스카레', 10000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어알새우카레', 9000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기카레', 8500, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭가슴살카레', 8500, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯카레', 8000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '채소카레', 8000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈카레', 8000, '카레', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스카레우동', 9000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡갈비카레우동', 9000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기카레우동', 9000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우까스카레우동', 10000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈롤까스카레우동', 10000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어알새우카레우동', 9000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기카레우동', 8500, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭가슴살카레우동', 8500, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯카레우동', 8000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈카레우동', 8000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '채소카레우동', 8000, '카레우동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고씨네 카레치킨', 11000, '카레치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈카레치킨', 13000, '카레치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '채소카레치킨', 13000, '카레치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버섯카레치킨', 13000, '카레치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오향마늘파닭카레치킨', 14000, '카레치킨', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고씨네 가츠동', 10000, '가츠동·규동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고씨네 규동', 10000, '가츠동·규동', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돈까스(L)', 3000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡갈비', 3000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자크로켓', 1000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '고구마치즈크로켓', 1500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭튀김', 1000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우까스', 4000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈롤까스', 4000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란후라이', 1000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '후랑크소시지', 2500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해쉬포테이토', 1500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈볼', 1500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈스틱', 1000, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우튀김', 1500, '토핑', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '고씨네 광운대점'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자탕 (소/중/대)', 30000, '메인', '[{"label": "소", "price": 30000}, {"label": "중", "price": 35000}, {"label": "대", "price": 40000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해물뼈찜 (중/대)', 40000, '메인', '[{"label": "중", "price": 40000}, {"label": "대", "price": 50000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '누룽지백숙 (국내산, 하루전 예약)', 70000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈해장국', 10000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육칼국수 + 공기밥', 10000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한우 소머리 국밥', 10000, '메인', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩국수', 9000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '냉면', 8000, '계절메뉴', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '뼈 추가', 15000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '우거지 추가', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사리 추가 (당면)', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '사리 추가 (라면)', 1000, '추가', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음밥', 2000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, '밥류', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '막걸리', 4000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '한라산', 6000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '맥주', 5000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '음료수', 2000, '주류·음료', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '한라산감자탕'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면', 4500, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '라면 + 공기밥', 5000, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡/만두/치즈 라면 + 공기밥', 5500, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '된장찌개', 6500, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '순두부찌개', 6500, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈순두부찌개', 7000, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '쫄면순두부찌개', 7000, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치참치찌개두부', 7000, '라면·찌개', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '비빔밥', 6500, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돌솥비빔밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치비빔밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '떡만둣국 + 공기밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치볶음밥/덮밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '참치볶음밥/덮밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우볶음밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '알밥', 7000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈알밥', 8000, '비빔밥·볶음밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육볶음/덮밥', 7500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소불고기볶음/덮밥', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '김치짜글이 + 계란후라이', 7500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비덮밥 + 계란후라이', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '회덮밥', 7000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매콤참치마요', 7000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카레덮밥', 7000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카레덮밥 + 치즈', 8000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '카레덮밥 + 우동', 9000, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈덮밥', 7500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈제육덮밥', 8500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭갈비덮밥', 7500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '찜닭덮밥', 7500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '장조림덮밥', 7500, '덮밥', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육개장', 8000, '국·탕', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '갈비탕', 8000, '국·탕', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭볶음탕', 8000, '국·탕', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소불뚝', 8000, '뚝배기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '제육뚝', 8000, '뚝배기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '부대뚝', 8000, '뚝배기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '만두뚝', 8000, '뚝배기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란찜', 8000, '뚝배기', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈스파게티', 7500, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈라볶이', 7500, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '콩나물불고기 (콩불)', 7500, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어콩나물 (오콩)', 9000, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오삼콩나물 (오삼콩)', 9000, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오삼볶음/덮밥', 9500, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어볶음/덮밥', 9500, '분식', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '육회비빔밥 (보통/특)', 8000, '별미', '[{"label": "보통", "price": 8000}, {"label": "특", "price": 9000}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란후라이', 1000, '추가옵션', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '슬라이스치즈', 500, '추가옵션', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모짜렐라치즈', 1000, '추가옵션', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '후문식당'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '포레오쌀국수', 9500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운해장쌀국수', 10500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭껍질튀김쌀국수', 9500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운닭껍질쌀국수', 10500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운곱창쌀국수', 14000, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '불향쌀국수', 9900, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스지쌀국수', 14000, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '매운스지쌀국수', 15000, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '똠양쌀국수', 10500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해산물쌀국수', 9900, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '토마토바질쌀국수', 9500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '팟타이', 10500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '분짜', 12500, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '면 추가', 1000, 'PHO', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '소고기볶음밥', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우볶음밥', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란마늘볶음밥', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '나시고랭', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, 'BBQ라이스', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '해산물볶음밥', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기바질덮밥', 9500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '레드커리덮밥', 10500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '볶음밥 추가', 1500, 'RICE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '짜조 (3pcs)', 4500, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '꽃게네트', 7900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭튀김 (2pcs)', 4000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '돼지고기튀김', 5900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '닭껍질교자 (5pcs)', 6900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '모듬튀김', 13000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '버팔로윙 (5pcs)', 5900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '스프링롤', 8000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공심채', 8000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '새우고로케 (2pcs/4pcs)', 4900, 'SIDE', '[{"label": "2pcs", "price": 4900}, {"label": "4pcs", "price": 7900}]'::jsonb, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '감자말이새우튀김 (5pcs)', 5900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '오징어튀김 (5pcs)', 6900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치즈스틱 (3pcs)', 5500, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '치킨가라야게 (10pcs)', 8900, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '계란후라이', 1000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; +INSERT INTO "Menu" (id, "restaurantId", name, price, category, "priceOptions", "isSignature", "createdAt", "updatedAt") SELECT gen_random_uuid()::text, r.id, '공기밥', 1000, 'SIDE', NULL, false, clock_timestamp(), clock_timestamp() FROM "Restaurant" r WHERE r.name = '포 레오'; + +-- 검증: 메뉴 수가 0 인 대상 식당이 있으면 알림 (NAME 불일치 의심) +SELECT r.name, r.zone FROM "Restaurant" r +WHERE r.name IN ( + '포 레오', + '한라산감자탕', + '후문식당', + '고씨네 광운대점', + '굿킨 광운대점', + '그옛날1947왕만두', + '더진국 광운대점', + '또와집순대국', + '맛불', + '민들레국시', + '민들레뜨락2', + '부리또잇', + '수해복마라탕 광운대점', + '신연마라탕', + '영축산정육식당', + '오쎄', + '전설의멸치국수 월계점', + '중화호반닭갈비 광운대점', + '진미통닭', + '카츠백 월계점', + '큰집닭강정 광운대점', + '푸른스시', + '화로상회 광운대점', + '가마솥뼈다귀감자탕', + '놀부부대찌개 광운대역점', + '더원', + '돈장군 광운대본점', + '마떡다이천 광운대본점', + '마산아구찜', + '마포연탄불고기', + '명동찌개마을 광운대역점', + '명태이야기', + '미미식당 월계점', + '사계절김밥', + '서초우동 광운대역점', + '스마일돈까스', + '엄마손김밥&분식', + '왕토종순대국', + '인생아구찜 월계점', + '전주밥상쌈밥', + '정담소반', + '집밥', + '치킨클럽 성북역본점', + '친친', + '커피는기억의끌림', + '큰맘할매순대국 광운대점', + '한방전주콩나물국밥 광운대역점' +) AND NOT EXISTS (SELECT 1 FROM "Menu" m WHERE m."restaurantId" = r.id); + +COMMIT; \ No newline at end of file diff --git a/scripts/seed-restaurants/rename-images.py b/scripts/seed-restaurants/rename-images.py new file mode 100644 index 0000000..e5a2bbe --- /dev/null +++ b/scripts/seed-restaurants/rename-images.py @@ -0,0 +1,129 @@ +""" +public/restaurants/ 의 이미지 파일명을 일괄 정리. +- "X.jpg의 사본.jpg" 형식의 suffix 제거 +- 일부 파일명을 DB 식당명에 맞춰 rename +- 중복 파일 삭제 +- 한글 NFD/NFC 정규화 차이 우회 (Python os.listdir 후 NFC 비교) +""" +import os +import sys +import unicodedata + +BASE = os.path.join(os.path.dirname(__file__), '..', '..', 'apps', 'web', 'public', 'restaurants') +BASE = os.path.normpath(BASE) + +if not os.path.isdir(BASE): + print(f"❌ 디렉토리 없음: {BASE}") + sys.exit(1) + +# Step 1: 모든 파일명을 NFC 정규화 (필요한 경우 rename) +print(f"== {BASE} 안 파일 NFC 정규화 ==") +normalized = 0 +for fname in os.listdir(BASE): + nfc = unicodedata.normalize('NFC', fname) + if fname != nfc: + src = os.path.join(BASE, fname) + dst = os.path.join(BASE, nfc) + os.rename(src, dst) + normalized += 1 +print(f" 정규화 {normalized}개") + +# 이후 모든 비교는 NFC 기준 + +# Step 2: 삭제할 중복 파일 +to_delete = [ + 'OSSE Coffee(2).jpg', + '장수국수(1).jpg', +] + +# Step 3: rename 매핑 (현재 파일명 → 최종 DB 이름) +# 사본 suffix 가 붙은 것도 여기서 한 번에 처리 +renames = { + # 사본 suffix 정리 + DB 명 매핑 + '1일1잔.jpg의 사본.jpg': '1일1잔.jpg', + '5일장 햄버거.jpg의 사본.jpg': '5일장 햄버거.jpg', + 'CAFE FIASCO.jpg의 사본.jpg': 'CAFE FIASCO.jpg', + 'CORD Jr..jpg의 사본.jpg': 'CORD Jr..jpg', + 'DAYLONG COFFEE.jpg의 사본.jpg': '데이롱카페 광운대점.jpg', + 'OSSE Coffee.jpg': '오쎄.jpg', + 'PHO LEO.jpg의 사본.jpg': '포 레오.jpg', + 'Pas_mal.jpg의 사본.jpg': '빠말.jpg', + '경대컵밥(한식밥상).jpg의 사본.jpg': '경대컵밥 광운대점.jpg', + '국수천왕.jpg의 사본.jpg': '국수천왕 광운대점.jpg', + '기사식당.jpg의 사본.jpg': '용기사 식당.jpg', + '꽃제비칼국수.jpg의 사본.jpg': '꽃제비칼국수.jpg', + '목포홍탁.jpg의 사본.jpg': '목포홍탁.jpg', + '미식성.jpg의 사본.jpg': '미식성.jpg', + '밥은화.jpg의 사본.jpg': '밥은화 광운대본점.jpg', + '별난주점.jpg의 사본.jpg': '별난주점 광운대점.jpg', + '서선생김치찜.jpg의 사본.jpg': '서선생김치찜.jpg', + '소담밥상.jpg의 사본.jpg': '소담밥상.jpg', + '아, 그집.jpg의 사본.jpg': '아 그집.jpg', + '우우즈 베이커리.jpg의 사본.jpg': '우우즈베이커리.jpg', + '이층집.jpg의 사본.jpg': '이층집.jpg', + '일심해장국.jpg의 사본.jpg': '일심해장국 월계점.jpg', + '천년초칼국수.jpg의 사본.jpg': '천년초우리밀칼국수.jpg', + '청계빨간집.jpg의 사본.jpg': '청계 빨간집.jpg', + '카페 베르데.jpg의 사본.jpg': '카페베르데.jpg', + '튀맥(Tui Mac).jpg의 사본.jpg': '튀맥.jpg', + '하이레(HAIRE).jpg의 사본.jpg': '하이레.jpg', + '한그릇.jpg의 사본.jpg': '한그릇.jpg', + '한라산감자탕.jpg의 사본.jpg': '한라산감자탕.jpg', + '후문식당.jpg의 사본.jpg': '후문식당.jpg', + # 그 외 단순 이름들 + '고씨네.jpg': '고씨네 광운대점.jpg', + '디델리.jpg': '디델리 광운대점.jpg', + '로스 2000.jpg': '로스2000.jpg', + '마루덮밥.jpg': '마루.jpg', + '민들레밥상.jpg': '민들레국시.jpg', + '샐러리아.jpg': '샐러리아 광운대점.jpg', + '썬더치킨.jpg': '썬더치킨 광운대점.jpg', + '영축산.jpg': '영축산정육식당.jpg', + '일심텐동(1).jpg': '일심텐동 광운대점.jpg', + '장수국수.jpg': '장수국수 광운대점.jpg', + '전설의 멸치국수.jpg': '전설의멸치국수 월계점.jpg', + '전주밥상.jpg': '전주밥상쌈밥.jpg', + '중화호반닭갈비.jpg': '중화호반닭갈비 광운대점.jpg', + '지지고.jpg': '지지고 광운대점.jpg', + '카츠백.jpg': '카츠백 월계점.jpg', + '큰집닭강정.jpg': '큰집닭강정 광운대점.jpg', + '프랭크버거.jpg': '프랭크버거 광운대점.jpg', + '한끼철판.jpg': '한끼철판 광운대점.jpg', + '화로상회.jpg': '화로상회 광운대점.jpg', +} + +# Step 4: 삭제 먼저 +print("\n== 중복 삭제 ==") +for fname in to_delete: + path = os.path.join(BASE, fname) + if os.path.exists(path): + os.remove(path) + print(f" [DEL]{fname}") + else: + print(f" - {fname} (없음, skip)") + +# Step 5: rename +print("\n== rename ==") +done = 0 +skipped = 0 +for src_name, dst_name in renames.items(): + src = os.path.join(BASE, src_name) + dst = os.path.join(BASE, dst_name) + if not os.path.exists(src): + print(f" - {src_name} → {dst_name} (소스 없음, skip)") + skipped += 1 + continue + if src_name == dst_name: + # 같은 이름이라 rename 불필요 + continue + if os.path.exists(dst): + print(f" [SKIP]{src_name} → {dst_name} (target 이미 존재, skip)") + skipped += 1 + continue + os.rename(src, dst) + print(f" [OK]{src_name} → {dst_name}") + done += 1 + +print(f"\n== 완료 ==") +print(f"rename: {done}개 / skip: {skipped}개") +print(f"최종 파일 수: {len(os.listdir(BASE))}") diff --git a/scripts/seed-restaurants/report.txt b/scripts/seed-restaurants/report.txt new file mode 100644 index 0000000..4632239 --- /dev/null +++ b/scripts/seed-restaurants/report.txt @@ -0,0 +1,122 @@ +=== 처리 요약 === +성공: 107건 +실패: 0건 +모호한 매칭: 2건 + +=== 모호한 매칭 (둘 이상 가까운 결과) === +- DAYLONG COFFEE: + · 데이롱카페 광운대점 | 서울 노원구 광운로12길 38 | 314m + · 데이롱카페 석계역점 | 서울 노원구 석계로3길 30 | 492m + · 데이롱카페 월계역점 | 서울 노원구 월계로53길 21 | 1403m +- 후문식당: + · 후문식당 | 서울 노원구 석계로13길 25-1 | 239m + · 매머드익스프레스 광운대후문점 | 서울 노원구 석계로13길 23 | 258m + +=== 매칭 결과 (이름, 카카오명, 거리, 카테고리) === +[KWANGWOON_STATION] 인생아구찜 → 인생아구찜 월계점 | 560m | 한식 +[KWANGWOON_STATION] 서초우동 → 서초우동 광운대역점 | 555m | 일식 +[KWANGWOON_STATION] 짝태촌노가리 → 짝태촌노가리 | 554m | 주점 +[KWANGWOON_STATION] 치킨클럽 → 치킨클럽 성북역본점 | 529m | 양식 +[KWANGWOON_STATION] 친친 → 친친 | 530m | 한식 +[KWANGWOON_STATION] 여자만아구찜 → 여자만아구찜 | 516m | 한식 +[KWANGWOON_STATION] 커피는 기억의 끌림 → 커피는기억의끌림 | 513m | 카페 +[KWANGWOON_STATION] 꽃님맥주 → 꽃님맥주 | 510m | 주점 +[KWANGWOON_STATION] 야타이 → 야타이 | 512m | 일식 +[KWANGWOON_STATION] 명태이야기 → 명태이야기 | 520m | 한식 +[KWANGWOON_STATION] 미미식당 → 미미식당 월계점 | 479m | 한식 +[KWANGWOON_STATION] 생마차 광운대점 → 생마차 광운대점 | 479m | 주점 +[KWANGWOON_STATION] 명동찌개마을 → 명동찌개마을 광운대역점 | 498m | 한식 +[KWANGWOON_STATION] 가마솥뼈다귀감자탕 → 가마솥뼈다귀감자탕 | 525m | 한식 +[KWANGWOON_STATION] 왕토종순대국 → 왕토종순대국 | 515m | 한식 +[KWANGWOON_STATION] 마산아구찜 → 마산아구찜 | 513m | 한식 +[KWANGWOON_STATION] 엄마손 김밥&분식 → 엄마손김밥&분식 | 493m | 분식 +[KWANGWOON_STATION] 사계절김밥 → 사계절김밥 | 507m | 분식 +[KWANGWOON_STATION] 돈장군 → 돈장군 광운대본점 | 488m | 한식 +[KWANGWOON_STATION] 빈대떡 신사 → 빈대떡신사 | 497m | 한식 +[KWANGWOON_STATION] 집밥 → 집밥 | 498m | 한식 +[KWANGWOON_STATION] 큰맘할매순대국 → 큰맘할매순대국 광운대점 | 473m | 한식 +[KWANGWOON_STATION] 여우곱창 → 여우곱창 | 481m | 한식 +[KWANGWOON_STATION] 가마솥소머리곰탕 → 한우가마솥소머리곰탕 | 481m | 한식 +[KWANGWOON_STATION] 한방전주콩나물국밥 → 한방전주콩나물국밥 광운대역점 | 460m | 한식 +[KWANGWOON_STATION] 마포 연탄불고기 → 마포연탄불고기 | 478m | 한식 +[KWANGWOON_STATION] 놀부부대찌개 → 놀부부대찌개 광운대역점 | 457m | 한식 +[KWANGWOON_STATION] 착한족발 → 착한족발 월계점 | 463m | 한식 +[KWANGWOON_STATION] 스마일돈까스 → 스마일돈까스 | 467m | 일식 +[KWANGWOON_STATION] 마떡다이천 → 마떡다이천 광운대본점 | 461m | 분식 +[KWANGWOON_STATION] 맛닭꼬 → 맛닭꼬 광운대점 | 451m | 한식 +[KWANGWOON_STATION] THE ONE → 더원 | 449m | 한식 +[KWANGWOON_STATION] 전주밥상쌈밥 → 전주밥상쌈밥 | 432m | 한식 +[FRONT_GATE] OSSE Coffee → 오쎄 | 413m | 카페 +[FRONT_GATE] 1947 왕만두 → 그옛날1947왕만두 | 380m | 중식 +[FRONT_GATE] 굿킨 → 굿킨 광운대점 | 373m | 한식 +[FRONT_GATE] 전설의 멸치국수 → 전설의멸치국수 월계점 | 353m | 한식 +[FRONT_GATE] 큰집 닭강정 → 큰집닭강정 광운대점 | 349m | 분식 +[FRONT_GATE] 영축산 정육식당 → 영축산정육식당 | 306m | 한식 +[FRONT_GATE] 진미통닭 → 진미통닭 | 262m | 양식 +[FRONT_GATE] 로스2000 → 로스2000 | 234m | 한식 +[FRONT_GATE] 썬더치킨 → 썬더치킨 광운대점 | 249m | 양식 +[FRONT_GATE] 종로전집 → 종로전집 | 201m | 한식 +[FRONT_GATE] 맛불 → 맛불 | 218m | 한식 +[FRONT_GATE] 수해복마라탕 → 수해복마라탕 광운대점 | 219m | 중식 +[FRONT_GATE] 더진국 → 더진국 광운대점 | 200m | 한식 +[FRONT_GATE] 고씨네 카레전문점 → 고씨네 광운대점 | 200m | 아시안 +[FRONT_GATE] 화로상회 → 화로상회 광운대점 | 187m | 한식 +[FRONT_GATE] 부리또잇 → 부리또잇 | 187m | 양식 +[FRONT_GATE] 재리스토스트&빙수바보빙식이 광운대점 → 재리스토스트&빙수바보빙식이 광운대점 | 198m | 카페 +[FRONT_GATE] 신연마라탕 → 신연마라탕 | 179m | 중식 +[FRONT_GATE] 민들레뜨락2 → 민들레뜨락2 | 166m | 한식 +[FRONT_GATE] 푸른스시 → 푸른스시 | 169m | 일식 +[FRONT_GATE] 일심텐동 → 일심텐동 광운대점 | 155m | 일식 +[FRONT_GATE] 디델리라볶이 → 디델리 광운대점 | 155m | 분식 +[FRONT_GATE] 마루덮밥 → 마루 | 152m | 일식 +[FRONT_GATE] 윤스쿡 → 윤스쿡 | 143m | 한식 +[FRONT_GATE] 한끼철판 → 한끼철판 광운대점 | 136m | 일식 +[FRONT_GATE] 장수국수 → 장수국수 광운대점 | 138m | 한식 +[FRONT_GATE] 지지고 → 지지고 광운대점 | 134m | 한식 +[FRONT_GATE] 광운커피 → 광운커피 | 128m | 카페 +[FRONT_GATE] 프랭크버거 → 프랭크버거 광운대점 | 128m | 양식 +[FRONT_GATE] 팔팔부대찌개 → 팔팔전어횟집 | 124m | 한식 +[FRONT_GATE] 카츠백 → 카츠백 월계점 | 252m | 일식 +[FRONT_GATE] 민들레국시 → 민들레국시 | 252m | 한식 +[FRONT_GATE] 중화 호반 닭갈비 막국수 → 중화호반닭갈비 광운대점 | 374m | 한식 +[FRONT_GATE] 전주밥상 → 전주밥상쌈밥 | 432m | 한식 +[FRONT_GATE] 꽁꽁 삼겹살 차돌박이 → 꽁꽁삼겹살차돌박이 석계2호점 | 566m | 한식 +[FRONT_GATE] 또와집순대국 → 또와집순대국 | 467m | 한식 +[BACK_GATE] 튀맥 → 튀맥 | 432m | 튀김류 +[BACK_GATE] 서선생김치찜 → 서선생김치찜 | 398m | 한식 +[BACK_GATE] 한라산 감자탕 → 한라산감자탕 | 409m | 한식 +[BACK_GATE] 국수천왕 → 국수천왕 광운대점 | 350m | 한식 +[BACK_GATE] 한그릇 → 한그릇 | 315m | 한식 +[BACK_GATE] DAYLONG COFFEE → 데이롱카페 광운대점 | 314m | 카페 +[BACK_GATE] 별난주점 → 별난주점 광운대점 | 274m | 주점 +[BACK_GATE] 꽃제비칼국수 → 꽃제비칼국수 | 258m | 한식 +[BACK_GATE] 밥은화 → 밥은화 광운대본점 | 252m | 한식 +[BACK_GATE] 하이레 → 하이레 | 210m | 한식 +[BACK_GATE] 아, 그집 → 아 그집 | 285m | 한식 +[BACK_GATE] CORD.jr → CORD Jr. | 285m | 한식 +[BACK_GATE] 치킨플러스 → 치킨플러스 월계점 | 259m | 양식 +[BACK_GATE] 후문식당 → 후문식당 | 239m | 한식 +[BACK_GATE] 천년초칼국수 → 천년초우리밀칼국수 | 366m | 한식 +[BACK_GATE] 월계돈 → 월계돈 | 364m | 한식 +[BACK_GATE] 일심해장국 → 일심해장국 월계점 | 406m | 한식 +[BACK_GATE] 볼카츠마켙 → 김바삭군의 볼카츠마켙 광운대점 | 118m | 일식 +[BACK_GATE] 카페베르데 → 카페베르데 | 124m | 카페 +[BACK_GATE] 이층집 → 이층집 | 136m | 한식 +[BACK_GATE] 병천순대 → 병천청년순대 광운대점 | 135m | 한식 +[BACK_GATE] 경대컵밥 → 경대컵밥 광운대점 | 172m | 분식 +[BACK_GATE] 소담밥상 → 소담밥상 | 135m | 한식 +[BACK_GATE] 쉐프밥버거 → 쉐프밥버거 광운대점 | 119m | 양식 +[BACK_GATE] 미식성 → 미식성 | 156m | 한식 +[BACK_GATE] 빠말 → 빠말 | 161m | 한식 +[BACK_GATE] 스시덤 → 스시덤 | 177m | 일식 +[BACK_GATE] 1일1잔 → 1일1잔 | 178m | 주점 +[BACK_GATE] 이찌마 김치 → 이찌마 김치 | 172m | 한식 +[BACK_GATE] 목포홍탁 → 목포홍탁 | 185m | 한식 +[BACK_GATE] 갤러리eat → 갤러리eat | 239m | 한식 +[BACK_GATE] 진심카츠 → 진심카츠 | 140m | 일식 +[KWANGWOON_STATION] 와플대학 → 와플대학 광운대캠퍼스 | 428m | 카페 +[BACK_GATE] 청계 빨간집 → 청계 빨간집 | manualm | 한식 +[BACK_GATE] 우우즈베이커리 → 우우즈베이커리 | manualm | 카페 +[KWANGWOON_STATION] 정담소반 → 정담소반 | manualm | 한식 +[BACK_GATE] 포 레오 → 포 레오 | manualm | 아시안 +[BACK_GATE] 용기사 식당 → 용기사 식당 | manualm | 한식 diff --git a/scripts/seed-restaurants/seed.mjs b/scripts/seed-restaurants/seed.mjs new file mode 100644 index 0000000..41a838f --- /dev/null +++ b/scripts/seed-restaurants/seed.mjs @@ -0,0 +1,420 @@ +/** + * 광운대 주변 식당 일괄 등록 스크립트 + * + * 사용법: + * KAKAO_REST_KEY=xxxx node scripts/seed-restaurants/seed.mjs > out.sql 2> report.txt + * + * 결과: + * stdout: 실행 가능한 SQL (INSERT/COMMIT) + * stderr: 처리 요약 + 실패 항목 + 모호한 매칭 + */ + +const KEY = process.env.KAKAO_REST_KEY; +if (!KEY) { + console.error('환경변수 KAKAO_REST_KEY 가 필요합니다'); + process.exit(1); +} + +// 광운대 캠퍼스 중심 +const CENTER = { x: 127.0590, y: 37.6191 }; +const RADIUS = 1500; + +// (검색어 → zone) 매핑. 사용자가 준 그룹핑 그대로. +// '본도시락'은 이미 추가됐으므로 제외. +// 사용자 검토 후 수정된 검색어 사용 (예: 'Burrito eat' → '부리또잇'). +// 스킵 항목 제거: 끝집, FM.25.1st(폐업), 뉴욕쟁이디저트(폐업), 스트릿츄러스. +const LIST = [ + // 1. 광운대역 + ['인생아구찜', 'KWANGWOON_STATION'], + // 정담소반은 카카오 REST API에 없어 MANUAL_ENTRIES 로 이동 + ['서초우동', 'KWANGWOON_STATION'], + ['짝태촌노가리', 'KWANGWOON_STATION'], + ['치킨클럽', 'KWANGWOON_STATION'], + ['친친', 'KWANGWOON_STATION'], + ['여자만아구찜', 'KWANGWOON_STATION'], + ['커피는 기억의 끌림', 'KWANGWOON_STATION'], + ['꽃님맥주', 'KWANGWOON_STATION'], + ['야타이', 'KWANGWOON_STATION'], + ['명태이야기', 'KWANGWOON_STATION'], + ['미미식당', 'KWANGWOON_STATION'], + ['생마차 광운대점', 'KWANGWOON_STATION'], + ['명동찌개마을', 'KWANGWOON_STATION'], + ['가마솥뼈다귀감자탕', 'KWANGWOON_STATION'], + ['왕토종순대국', 'KWANGWOON_STATION'], + ['마산아구찜', 'KWANGWOON_STATION'], + ['엄마손 김밥&분식', 'KWANGWOON_STATION'], + ['사계절김밥', 'KWANGWOON_STATION'], + ['돈장군', 'KWANGWOON_STATION'], + ['빈대떡 신사', 'KWANGWOON_STATION'], + ['집밥', 'KWANGWOON_STATION'], + ['큰맘할매순대국', 'KWANGWOON_STATION'], + ['여우곱창', 'KWANGWOON_STATION'], + ['가마솥소머리곰탕', 'KWANGWOON_STATION'], + ['한방전주콩나물국밥', 'KWANGWOON_STATION'], + ['마포 연탄불고기', 'KWANGWOON_STATION'], + ['놀부부대찌개', 'KWANGWOON_STATION'], + ['착한족발', 'KWANGWOON_STATION'], + ['스마일돈까스', 'KWANGWOON_STATION'], + ['마떡다이천', 'KWANGWOON_STATION'], + ['맛닭꼬', 'KWANGWOON_STATION'], + ['THE ONE', 'KWANGWOON_STATION'], + ['전주밥상쌈밥', 'KWANGWOON_STATION'], + + // 2. 정문 + ['OSSE Coffee', 'FRONT_GATE'], + ['1947 왕만두', 'FRONT_GATE'], + ['굿킨', 'FRONT_GATE'], + ['전설의 멸치국수', 'FRONT_GATE'], + ['큰집 닭강정', 'FRONT_GATE'], + ['영축산 정육식당', 'FRONT_GATE'], + ['진미통닭', 'FRONT_GATE'], + ['로스2000', 'FRONT_GATE'], + ['썬더치킨', 'FRONT_GATE'], + ['종로전집', 'FRONT_GATE'], + ['맛불', 'FRONT_GATE'], + ['수해복마라탕', 'FRONT_GATE'], + ['더진국', 'FRONT_GATE'], + ['고씨네 카레전문점', 'FRONT_GATE'], + ['화로상회', 'FRONT_GATE'], + ['부리또잇', 'FRONT_GATE'], + // 레드컵스: 카카오 REST API 에 없음 + ['재리스토스트&빙수바보빙식이 광운대점', 'FRONT_GATE'], + ['신연마라탕', 'FRONT_GATE'], + ['민들레뜨락2', 'FRONT_GATE'], + ['푸른스시', 'FRONT_GATE'], + ['일심텐동', 'FRONT_GATE'], + ['디델리라볶이', 'FRONT_GATE'], + ['마루덮밥', 'FRONT_GATE'], + ['윤스쿡', 'FRONT_GATE'], + ['한끼철판', 'FRONT_GATE'], + ['장수국수', 'FRONT_GATE'], + ['지지고', 'FRONT_GATE'], + ['광운커피', 'FRONT_GATE'], + ['프랭크버거', 'FRONT_GATE'], + ['팔팔부대찌개', 'FRONT_GATE'], + ['카츠백', 'FRONT_GATE'], + ['민들레국시', 'FRONT_GATE'], + // 샐러리아 광운대점: 카카오 REST API 에 없음 + ['중화 호반 닭갈비 막국수', 'FRONT_GATE'], + ['전주밥상', 'FRONT_GATE'], + ['또와집순대국', 'FRONT_GATE'], + + // 3. 후문 + ['튀맥', 'BACK_GATE'], + // CAFE FIASCO 는 카카오 REST API 에 없음 — 사용자 추가 정보 필요 + ['서선생김치찜', 'BACK_GATE'], + ['한라산 감자탕', 'BACK_GATE'], + ['국수천왕', 'BACK_GATE'], + // 포 레오는 MANUAL_ENTRIES 로 이동 + ['한그릇', 'BACK_GATE'], + ['DAYLONG COFFEE', 'BACK_GATE'], + ['별난주점', 'BACK_GATE'], + ['꽃제비칼국수', 'BACK_GATE'], + ['밥은화', 'BACK_GATE'], + ['하이레', 'BACK_GATE'], + ['아, 그집', 'BACK_GATE'], + ['CORD.jr', 'BACK_GATE'], + ['치킨플러스', 'BACK_GATE'], + ['후문식당', 'BACK_GATE'], + ['천년초칼국수', 'BACK_GATE'], + ['월계돈', 'BACK_GATE'], + ['일심해장국', 'BACK_GATE'], + // 용기사 식당은 MANUAL_ENTRIES 로 이동 + // 레드컵스, 샐러리아 광운대점 은 카카오 REST API 에 없음 — 사용자 추가 정보 필요 + ['볼카츠마켙', 'BACK_GATE'], + ['카페베르데', 'BACK_GATE'], + ['이층집', 'BACK_GATE'], + ['병천순대', 'BACK_GATE'], + ['경대컵밥', 'BACK_GATE'], + ['소담밥상', 'BACK_GATE'], + ['쉐프밥버거', 'BACK_GATE'], + ['미식성', 'BACK_GATE'], + ['빠말', 'BACK_GATE'], + ['스시덤', 'BACK_GATE'], + ['1일1잔', 'BACK_GATE'], + ['이찌마 김치', 'BACK_GATE'], + ['목포홍탁', 'BACK_GATE'], + + // 제휴 리스트에만 있는 신규 식당 — zone은 카카오 검색 결과로 추정 + ['갤러리eat', null], + ['진심카츠', null], + ['와플대학', null], +]; + +// 카카오 키워드 검색에 안 잡혀서 주소만으로 직접 등록할 식당. +// 주소 → 좌표 API로 lat/lng 만 채우고 나머지는 사용자 제공. +const MANUAL_ENTRIES = [ + { + place_name: '청계 빨간집', + address: '서울 노원구 석계로 103 3층', + zone: 'BACK_GATE', + category: '한식', + phone: null, + }, + { + place_name: '우우즈베이커리', + address: '서울 노원구 광운로12길 32', + zone: 'BACK_GATE', + category: '카페', + phone: null, + }, + { + place_name: '정담소반', + address: '서울 노원구 석계로18길 23', + zone: 'KWANGWOON_STATION', + category: '한식', + phone: null, + }, + { + place_name: '포 레오', + address: '서울 노원구 광운로 46', + zone: 'BACK_GATE', + category: '아시안', + phone: null, + }, + { + place_name: '용기사 식당', + address: '서울 노원구 석계로15길 25', + zone: 'BACK_GATE', + category: '한식', + phone: null, + }, +]; + +// 카테고리 자동 추정. 어떤 규칙에도 안 맞으면 한식(기본). +function guessCategory(name) { + // 튀김류 (사용자 추가 카테고리) + if (/튀김|튀맥/.test(name)) return '튀김류'; + // 카페 (영문 case-insensitive) + if (/카페|커피|디저트|빙수|츄러스|와플|베이커리|토스트/i.test(name) || /coffee|cafe/i.test(name)) return '카페'; + // 주점 + if (/맥주|포차|노가리|주점|꽃님|생마차|1잔/.test(name)) return '주점'; + // 분식 + if (/김밥|떡볶이|라볶이|컵밥|마떡|분식/.test(name)) return '분식'; + // 일식 + if (/스시|초밥|우동|텐동|덮밥|돈까스|돈가스|카츠|야타이|철판/.test(name)) return '일식'; + // 중식 + if (/마라탕|마라샹궈|샹궈|만두|짜장|짬뽕|중화/.test(name)) { + if (/닭갈비/.test(name)) return '한식'; // '중화 호반 닭갈비'는 한식 + return '중식'; + } + // 아시안 + if (/pho|쌀국수|카레|팟타이|베트남|태국|포 레오/i.test(name)) return '아시안'; + // 양식 + if (/burrito|부리또|버거|파스타|피자|샐러드|샐러리|레드컵|red cups|치즈/i.test(name)) return '양식'; + // 닭강정 → 분식 + if (/닭강정/.test(name)) return '분식'; + // 치킨/통닭 → 양식 + if (/치킨|통닭/.test(name)) return '양식'; + // 기본: 한식 + return '한식'; +} + +// 식당 ID 슬러그 (영문/숫자만, 충돌 방지용 인덱스 포함) +function slug(name, index) { + // 한글 포함 이름은 인덱스만으로 식별 + return `rst_${String(index + 1).padStart(3, '0')}`; +} + +// 기본 영업시간 +const DEFAULT_HOURS = { + mon: { open: '09:00', close: '22:00' }, + tue: { open: '09:00', close: '22:00' }, + wed: { open: '09:00', close: '22:00' }, + thu: { open: '09:00', close: '22:00' }, + fri: { open: '09:00', close: '22:00' }, + sat: { open: '09:00', close: '22:00' }, + sun: { open: '09:00', close: '22:00' }, +}; + +// zone 추정 (좌표 기준 — 신규 식당 4개용) +function inferZone(x, y) { + // 광운대역: 북쪽 ~37.624, 127.061 + // 정문: 서쪽 ~37.6189, 127.0582 + // 후문: 남쪽 ~37.6178, 127.0595 + if (y > 37.622) return 'KWANGWOON_STATION'; + if (x < 127.0585) return 'FRONT_GATE'; + return 'BACK_GATE'; +} + +async function searchPlace(name) { + const url = `https://dapi.kakao.com/v2/local/search/keyword.json?query=${encodeURIComponent(name)}&x=${CENTER.x}&y=${CENTER.y}&radius=${RADIUS}&size=5`; + const res = await fetch(url, { + headers: { Authorization: `KakaoAK ${KEY}` }, + }); + if (!res.ok) { + throw new Error(`HTTP ${res.status}: ${await res.text()}`); + } + return await res.json(); +} + +async function geocodeAddress(address) { + const url = `https://dapi.kakao.com/v2/local/search/address.json?query=${encodeURIComponent(address)}`; + const res = await fetch(url, { + headers: { Authorization: `KakaoAK ${KEY}` }, + }); + if (!res.ok) { + throw new Error(`HTTP ${res.status}: ${await res.text()}`); + } + return await res.json(); +} + +function sqlString(s) { + if (s == null) return 'NULL'; + return `'${String(s).replace(/'/g, "''")}'`; +} + +async function main() { + const results = []; + const failures = []; + const ambiguous = []; + + for (let i = 0; i < LIST.length; i++) { + const [name, zoneHint] = LIST[i]; + try { + const data = await searchPlace(name); + if (data.documents.length === 0) { + failures.push({ name, zoneHint, reason: '카카오 검색 0건' }); + continue; + } + // 첫 결과 = 가장 정확/가까운 매칭 + const best = data.documents[0]; + const zone = zoneHint ?? inferZone(parseFloat(best.x), parseFloat(best.y)); + const category = guessCategory(name) || guessCategory(best.place_name); + + // 결과가 2개 이상이고 둘 다 distance < 1000m면 모호 + if (data.documents.length > 1 && parseInt(data.documents[1].distance ?? '9999') < 500) { + ambiguous.push({ + name, + candidates: data.documents.slice(0, 3).map((d) => ({ + place_name: d.place_name, + address: d.road_address_name || d.address_name, + distance: d.distance, + })), + }); + } + + results.push({ + index: i, + originalName: name, + id: slug(name, i), + place_name: best.place_name, + zone, + category, + latitude: parseFloat(best.y), + longitude: parseFloat(best.x), + address: best.road_address_name || best.address_name, + phone: best.phone || null, + distance: best.distance, + kakao_category: best.category_name, + }); + } catch (err) { + failures.push({ name, zoneHint, reason: err.message }); + } + // rate limit 보호: 50ms 슬립 + await new Promise((r) => setTimeout(r, 50)); + } + + // Manual entries — 주소만으로 좌표 조회 후 추가 + for (let i = 0; i < MANUAL_ENTRIES.length; i++) { + const m = MANUAL_ENTRIES[i]; + try { + const data = await geocodeAddress(m.address); + if (data.documents.length === 0) { + failures.push({ name: m.place_name, zoneHint: m.zone, reason: '주소 좌표 변환 실패' }); + continue; + } + const best = data.documents[0]; + results.push({ + index: 1000 + i, // manual entries는 별도 인덱스 범위 + originalName: m.place_name, + id: slug(m.place_name, 1000 + i), + place_name: m.place_name, + zone: m.zone, + category: m.category, + latitude: parseFloat(best.y), + longitude: parseFloat(best.x), + address: best.road_address?.address_name || best.address_name || m.address, + phone: m.phone, + distance: 'manual', + kakao_category: 'manual entry', + }); + } catch (err) { + failures.push({ name: m.place_name, zoneHint: m.zone, reason: err.message }); + } + await new Promise((r) => setTimeout(r, 50)); + } + + // SQL 출력 (stdout) + console.log('-- 자동 생성됨: kwu_eats 식당 일괄 등록'); + console.log(`-- 생성 시각: ${new Date().toISOString()}`); + console.log(`-- 총 ${results.length}건 INSERT`); + console.log(''); + console.log('BEGIN;'); + console.log(''); + + // 신규 카테고리 (없으면 생성). cuid를 직접 만들 수 없으니 gen_random_uuid 사용. + console.log("-- 신규 카테고리: 튀김류 (없으면 생성)"); + console.log("INSERT INTO \"Category\" (id, name) SELECT gen_random_uuid()::text, '튀김류' WHERE NOT EXISTS (SELECT 1 FROM \"Category\" WHERE name = '튀김류');"); + console.log(''); + + // Restaurant + for (const r of results) { + const hours = JSON.stringify(DEFAULT_HOURS).replace(/'/g, "''"); + console.log( + `INSERT INTO "Restaurant" (id, name, zone, latitude, longitude, address, phone, "businessHours", "isPartner", "updatedAt") VALUES (${sqlString(r.id)}, ${sqlString(r.place_name)}, '${r.zone}', ${r.latitude}, ${r.longitude}, ${sqlString(r.address)}, ${sqlString(r.phone)}, '${hours}'::jsonb, false, NOW());`, + ); + } + + // RestaurantCategory + console.log(''); + console.log('-- 카테고리 매핑'); + for (const r of results) { + console.log( + `INSERT INTO "RestaurantCategory" ("restaurantId", "categoryId") SELECT ${sqlString(r.id)}, id FROM "Category" WHERE name = ${sqlString(r.category)};`, + ); + } + + console.log(''); + console.log('-- 검증'); + console.log('SELECT COUNT(*) AS restaurants FROM "Restaurant";'); + console.log('SELECT COUNT(*) AS restaurant_categories FROM "RestaurantCategory";'); + console.log(''); + console.log('COMMIT;'); + + // 리포트 (stderr) + console.error('=== 처리 요약 ==='); + console.error(`성공: ${results.length}건`); + console.error(`실패: ${failures.length}건`); + console.error(`모호한 매칭: ${ambiguous.length}건`); + console.error(''); + + if (failures.length > 0) { + console.error('=== 실패 항목 ==='); + for (const f of failures) { + console.error(`- ${f.name} (zone: ${f.zoneHint || '미정'}) — ${f.reason}`); + } + console.error(''); + } + + if (ambiguous.length > 0) { + console.error('=== 모호한 매칭 (둘 이상 가까운 결과) ==='); + for (const a of ambiguous) { + console.error(`- ${a.name}:`); + for (const c of a.candidates) { + console.error(` · ${c.place_name} | ${c.address} | ${c.distance}m`); + } + } + console.error(''); + } + + console.error('=== 매칭 결과 (이름, 카카오명, 거리, 카테고리) ==='); + for (const r of results) { + console.error(`[${r.zone}] ${r.originalName.padEnd(20)} → ${r.place_name.padEnd(30)} | ${r.distance}m | ${r.category}`); + } +} + +main().catch((err) => { + console.error('FATAL:', err); + process.exit(1); +}); diff --git a/scripts/seed-restaurants/validate-menus.py b/scripts/seed-restaurants/validate-menus.py new file mode 100644 index 0000000..875a6f0 --- /dev/null +++ b/scripts/seed-restaurants/validate-menus.py @@ -0,0 +1,145 @@ +""" +docs/기술과 경영_메뉴판 정리.xlsx 의 메뉴 vs 가격 개수 검증. +- 같은 행에서 쉼표로 분리된 메뉴 개수와 가격 개수가 일치해야 정상. +- DB 식당명 ↔ 엑셀 상호명 매핑도 함께 점검. +""" +import os +import openpyxl +import re + +XLSX = os.path.join(os.path.dirname(__file__), '..', '..', 'docs', '기술과 경영_메뉴판 정리.xlsx') + +# DB 의 식당명 (사전에 확인된 110개) +# 매핑이 어긋난 경우 사용자에게 보고하기 위해 사용 +DB_NAMES = { + # 광운대역 zone (sample subset — 후문/우이천만 검증하니까 광운대역 zone 은 무관) + # 후문 zone (엑셀의 후문/우이천 구역과 매핑되는 식당들) + '1일1잔', '5일장 햄버거', '갤러리eat', '경대컵밥 광운대점', '국수천왕 광운대점', + '꽃제비칼국수', '데이롱카페 광운대점', '미식성', '밥은화 광운대본점', '별난주점 광운대점', + '병천청년순대 광운대점', '서선생김치찜', '소담밥상', '쉐프밥버거 광운대점', '스시덤', + '아 그집', '용기사 식당', '우우즈베이커리', '월계돈', '이찌마 김치', '이층집', + '일심해장국 월계점', '천년초우리밀칼국수', '청계 빨간집', '치킨플러스 월계점', + '카페베르데', '튀맥', '포 레오', '하이레', '한그릇', '한라산감자탕', '후문식당', + 'CAFE FIASCO', 'CORD Jr.', '광운양꼬치', '목포홍탁', + # 정문 zone (엑셀에는 없지만 광운양꼬치는 정문) +} + +# 엑셀 → DB 매핑 후보 (이름 약간 다른 경우) +NAME_MAP = { + 'DAYLONG COFFEE': '데이롱카페 광운대점', + 'PHO LEO': '포 레오', + 'Pas;mal(빠말)': '빠말', + 'CORD Jr': 'CORD Jr.', + '5일장햄버거': '5일장 햄버거', + '이찌마김치': '이찌마 김치', + '병천순대': '병천청년순대 광운대점', + '기사식당': '용기사 식당', + '경대컵밥': '경대컵밥 광운대점', + '국수천왕': '국수천왕 광운대점', + '밥은화': '밥은화 광운대본점', + '별난주점': '별난주점 광운대점', + '셰프밥버거': '쉐프밥버거 광운대점', + '치킨플러스': '치킨플러스 월계점', + '아, 그집': '아 그집', + '청계빨간집': '청계 빨간집', + '카페 베르데': '카페베르데', + '우우즈 베이커리': '우우즈베이커리', + '일심해장국': '일심해장국 월계점', + '천년초칼국수': '천년초우리밀칼국수', +} + + +def count_menus(s): + """쉼표 기준 메뉴 개수. 빈 문자열이면 0.""" + if not s or not s.strip(): + return 0 + return len([x for x in s.split(',') if x.strip()]) + + +def count_prices(s): + """쉼표 기준 가격 개수.""" + if not s or not s.strip(): + return 0 + if '#VALUE!' in s or '#REF!' in s: + return -1 # 엑셀 오류 + return len([x for x in s.split(',') if x.strip()]) + + +def main(): + wb = openpyxl.load_workbook(XLSX, data_only=True) + ws = wb['Sheet1'] + + rows_with_data = [] + rows_empty = [] + mismatches = [] + name_unmapped = [] + + for i, row in enumerate(ws.iter_rows(min_row=2, values_only=True), start=2): + zone, name, status, category, menu, price, request, note, *rest = list(row) + [None] * 8 + if not name or not str(name).strip(): + continue + name = str(name).strip() + + m_count = count_menus(str(menu) if menu else '') + p_count = count_prices(str(price) if price else '') + + # DB 매핑 확인 + mapped = NAME_MAP.get(name, name) + in_db = mapped in DB_NAMES + + # 비어있는 케이스 + if m_count == 0 and p_count == 0: + rows_empty.append((name, mapped, in_db)) + continue + + rows_with_data.append((name, mapped, in_db, m_count, p_count, note)) + + # 개수 불일치 + if m_count != p_count: + mismatches.append((name, mapped, m_count, p_count, note)) + + # DB 에 없는 이름 + if not in_db: + name_unmapped.append((name, mapped)) + + # 출력 + print('=' * 60) + print('메뉴/가격 데이터가 채워진 식당:', len(rows_with_data)) + print('비어있는 식당:', len(rows_empty)) + print('=' * 60) + + print('\n[전체 식당 — 메뉴/가격 개수]') + print(f'{"엑셀상호명":<18} {"DB명":<22} {"메뉴":>4} {"가격":>4} 비고') + print('-' * 80) + for name, mapped, in_db, mc, pc, note in rows_with_data: + ok = 'OK' if mc == pc else ('VAL' if pc == -1 else 'X') + db_mark = '' if in_db else '!' + note_short = (str(note)[:30] + '...') if note and len(str(note)) > 30 else (note or '') + print(f'{name:<18} {mapped:<22} {mc:>4} {pc:>4} [{ok}{db_mark}] {note_short}') + + if mismatches: + print('\n\n[메뉴 vs 가격 개수 불일치] — 임포트 전 수정 필요') + print(f'{"식당":<22} {"메뉴":>4} {"가격":>4} 비고') + print('-' * 60) + for name, mapped, mc, pc, note in mismatches: + note_short = (str(note)[:40] + '...') if note and len(str(note)) > 40 else (note or '') + mark = ' (#VALUE!)' if pc == -1 else '' + print(f'{mapped:<22} {mc:>4} {pc:>4} {note_short}{mark}') + else: + print('\n✓ 메뉴/가격 개수 모두 일치') + + if name_unmapped: + print('\n\n[DB 에 없는 식당명] — 임포트 시 매칭 실패 예상') + for name, mapped in name_unmapped: + print(f' - 엑셀: {name} → 매핑: {mapped}') + else: + print('\n✓ 모든 식당명이 DB 와 매핑됨') + + print('\n\n[메뉴 비어있는 식당]') + for name, mapped, in_db in rows_empty: + db_mark = '' if in_db else ' (DB 없음)' + print(f' - {mapped}{db_mark}') + + +if __name__ == '__main__': + main()