Skip to content

Choi#33

Merged
chlwjddls0923 merged 3 commits into
mainfrom
choi
May 21, 2026
Merged

Choi#33
chlwjddls0923 merged 3 commits into
mainfrom
choi

Conversation

@chlwjddls0923
Copy link
Copy Markdown
Contributor

Summary

광운대 일대 식당 정보를 본격 등록하면서 함께 발견된 UX·데이터 모델·인프라 이슈를 광범위하게 정리한 PR. 이전 PR 이후 40 커밋 누적.

규모: 식당 110개 / 메뉴 2,773개 / 단과대학 제휴 81건 / 대표사진 77장 / 체인점 외부 메뉴 URL 9건

핵심 변경

  • 데이터: 식당·메뉴 대량 등록 + Python 기반 메뉴 임포터 시스템 + 대표사진 일괄 압축(149MB→17MB)
  • 메뉴 UI: 카테고리 가로 탭(우선순위 정렬), 사이즈별 옵션가격(소/중/대) 표기, 면책 문구, 입력순 대표 메뉴
  • 지도/마커: 5단계 클러스터링, 같은 건물 묶음 + ClusterPicker, 마커 선택 시각화(흰 stroke 굵게 + 1.22x), 검색 시 setCenter+setLevel(1) 안정화, 뷰포트 보존(상세 → 뒤로 복귀 시 위치 복원), 클러스터 항목 탭 → 상세 페이지 라우팅
  • 검색/필터: 식당명 검색 시트, 활성 필터 칩, 다중 선택, 결과 0건 빈 상태
  • 관리자: 식당 이름 검색창, 대표사진·외부메뉴URL 입력, 인증 보안/UX 개선
  • 영업시간: 자정 넘김 / 브레이크타임 / 자유 비고 (note) 지원, 5개 식당 영업시간 업데이트
  • 빌드/CI: packageManager pnpm@10.33.2 핀, kakao Map 타입 보완 (getBounds/relayout/anchor), MenuList Map.values for-of iteration 수정

Major changes

데이터·스키마

  • Menu.category + Menu.priceOptions (Json) — 옵션가격 지원
  • Restaurant.coverImageUrl + Restaurant.externalMenuUrl (체인점 공식 메뉴 페이지)
  • College.FREE_MAJOR, Zone.UICHEON 추가
  • 영업시간 자정 넘김 (close < open) + 브레이크타임 + note 필드 지원
  • Python 메뉴 파일 시스템 (kwoondae/frontgate/backgate _menus.py) + import-py-menus.py (clock_timestamp 로 row 별 createdAt 미세차 → 입력순 정렬 가능)
  • NAME_MAP 으로 민들레밥상 → 민들레뜨락2, 또와순대국 → 또와집순대국 자동 보정

API

  • RESTAURANT_LIST_SELECT / RESTAURANT_DETAIL_SELECT 의 menus.select 에 priceOptions + category 포함 (사이즈가격 누락 버그 수정)
  • featuredMenu orderBy: [isSignature, price]createdAt asc (입력 첫 메뉴 = 대표)
  • CORS_ORIGIN 콤마 구분 다중 origin
  • 영업시간 utility 자정 넘김·브레이크타임 처리

Web

  • MenuList: 카테고리 가로 탭 + priceOptions 표기 + 우선순위 정렬(메인 → 주력 → 사이드 → 기타 → 음료) + 면책 문구
  • RestaurantHero: coverImageUrl 우선 카루셀
  • useMarkerClusterer: selectedId 지원, 12종 SVG 캐시(tier × partner × selected), 흰 stroke 굵게 + 1.22x 사이즈로 선택 강조
  • mapStore (Zustand): 지도 중심·줌 인메모리 보존 → 상세 페이지 갔다 돌아와도 직전 위치 복원
  • KakaoMap: 초기 setTimeout setCenter → relayout (복원 위치 덮어쓰기 버그)
  • ClusterPicker: 항목 선택 → router.push(/restaurants/:id)
  • 검색 시트, 활성 필터 칩, 필터 다중 선택, 빈 상태 분기
  • 관리자 폼: 식당 이름 검색창, 대표사진·외부메뉴URL 입력
  • 공지사항 게시판 + Markdown 렌더링

Seed / 스크립트

  • 식당 110개 + 단과대학 제휴 81건 일괄 임포트
  • 대표사진 77장 1200px JPEG Q80 압축 (149MB → 17.4MB, -88%, compress-cover-images.py)
  • 체인점 externalMenuUrl 일괄 SQL (멱등): 본도시락 / 프랭크버거 / 썬더치킨 / 맛닭꼬 / 와플대학 / 샐러리아 / 스트릿츄러스 / 생마차 / 치킨플러스
  • 영업시간 업데이트 v1/v2/v3 (자정 넘김·브레이크타임·노트 포함)
  • xlsx 메뉴판 → SQL 변환기 + 메뉴 vs 가격 검증 스크립트
  • 잘못 등록된 "꽁꽁삼겹살차돌박이 석계2호점" seed 제거
  • 광운양꼬치 훈둔 → 훈툰 정정

빌드/CI

  • packageManager: pnpm@10.33.2 핀 (Dockerfile node:20-alpine 에서 corepack 이 pnpm 11 자동 다운로드해 OOM 되는 문제)
  • pnpm/action-setup@v4 의 version 필드 제거 (packageManager 와 중복)
  • apps/web/types/kakao.d.ts: Map.getBounds / Map.relayout / setLevel anchor 옵션 / LatLngBounds.getSouthWest·getNorthEast 추가
  • MenuList: Map.values for-of → forEach (downlevelIteration 미설정 환경 대응)

Test plan

  • 홈 지도에서 광운대역/정문/후문 줌인·아웃 시 클러스터 및 마커 사이즈가 자연스럽게 변하는지
  • 같은 건물 마커 탭 → ClusterPicker 가 뜨고, 항목 탭 시 상세 페이지로 이동하는지
  • 식당 이름 검색 후 결과 탭 → 지도가 해당 위치로 줌인되고 마커가 흰 stroke 굵게 강조되는지
  • 상세 페이지에서 메뉴 탭이 메인 → 주력 → 사이드 → 음료 순으로 정렬되는지
  • 감자탕/카츠·치킨/주먹밥 등 사이즈 옵션이 "소 30,000원 / 중 35,000원 / 대 40,000원" 형태로 표기되는지
  • 체인점 식당(본도시락/프랭크버거 등) 의 외부 메뉴 URL 버튼이 정상 동작하는지
  • 식당 카드 → 상세 → 뒤로 가기 시 직전에 보던 지도 중심/줌이 복원되는지
  • 관리자 폼에서 식당 검색·대표사진 URL·외부 메뉴 URL 입력이 저장되는지
  • 영업시간 자정 넘김 (예: 14:00-05:00) + 브레이크타임 식당 상태가 올바른지
  • CI: lint / build (api+web) / docker-build 전부 통과

- 광운대역: 큰맘할매순대국·꽃님맥주·빈대떡신사·야타이·여우곱창·여자만아구찜·한우가마솥소머리곰탕·착한족발 월계점 (8 신규) + 가마솥뼈다귀감자탕 메뉴 재정리
- 정문: 로스2000·진심카츠·오쎄(OSSE)·큰집닭강정·윤스쿡·한끼철판·마루·지지고·팔팔전어횟집·장수국수·일심텐동·광운커피 (12 신규) + 카츠백 메뉴 재OCR 정정(메인메뉴/면류/사이드 + 갈릭포가카레) + 화로상회 메뉴 전면 교체(2시간 무제한 연령별 priceOptions) + 디델리 주먹밥 priceOptions(1/2/3개) 추가 + 굿킨 5종 + 고씨네 + 부리또잇 외 기존 정문 항목 정리
- 후문: CORD Jr.·데이롱카페·빠말·갤러리eat·별난주점·쉐프밥버거·월계돈·청계 빨간집·튀맥 (9 신규)
- 광운커피 약 120개 / 튀맥 약 85개 / 일심텐동 57개 / 별난주점 약 40개 등 단일 식당 다카테고리
- priceOptions 활용: 사이즈(소/중/대)·연령(5-7세/8-13세/14세 이상)·옵션(아샷추 종류) 등 14개 식당 + 옵션 항목
- 카테고리 풍부: 메인·사이드·음료·디저트·디카페인 등 식당별 4-14개 가로 탭
- py-menus-import.sql: import-py-menus.py 로 재생성 (clock_timestamp 기반 입력순 정렬, NAME_MAP 보정 — 민들레밥상→민들레뜨락2, 또와순대국→또와집순대국)
- 맛닭꼬 광운대점 → mdcco.co.kr
- 와플대학 광운대캠퍼스 → waffleuniv.com
- 샐러리아 광운대점 → xn--vl2b25awylm0e.com (살러리아 공식)
- 스트릿츄러스 광운대점 → churros.dothome.co.kr
- 생마차 광운대점 → beer1900.com
- 치킨플러스 월계점 → chickenplus.co.kr
- DB 에는 이미 반영. seed 재실행·이관 시 복원용
- 로스2000 (정문): 월~토 17:00-24:00, 일 휴무
- 스트릿츄러스 광운대점 (정문): 매일 10:30-19:30 (네이버 기준)
- 진심카츠 (정문): 평일 10:00-19:00, 주말·공휴일 휴무 (note 활용)
- 굿킨 광운대점 (정문): 월~토 17:00-01:00 (자정 넘김), 일 휴무
- 민들레뜨락2 (정문): 월~토 16:00-02:00 (자정 넘김), 일 휴무(예약 시 영업) + 전화번호 추가
- close < open 자정 넘김 케이스는 기존 business-hours.util 의 overnight 분기로 자동 처리
@chlwjddls0923 chlwjddls0923 merged commit 23f331a into main May 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant