diff --git a/CHANGELOG.md b/CHANGELOG.md index 61fd2a4..fa5fab7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,16 @@ ## 2026-06-16 +### ๐Ÿ—บ๏ธ #363 ๋ฉ”์ธ ์ง€๋„ SDK ๊ตญ๋‚ด(๋„ค์ด๋ฒ„)/ํ•ด์™ธ(๊ตฌ๊ธ€) ๋ถ„๊ธฐ (v0.1.52) +- MapView๋ฅผ dispatcher๋กœ ์ „ํ™˜: ์ขŒํ‘œ๊ฐ€ KR bbox + NAVER_MAP_CLIENT_ID ์„ค์ • ์‹œ NaverMapView, ๊ทธ ์™ธ GoogleMapView +- NaverMapView ์‹ ๊ทœ (๋„ค์ด๋ฒ„ v3 ์ง์ ‘ wrapper, Supercluster ์žฌ์‚ฌ์šฉ, ๋งˆ์ปค/ํด๋Ÿฌ์Šคํ„ฐ/flyTo) +- GoogleMapView ์‹ ๊ทœ (๊ธฐ์กด MapView ๋‚ด์šฉ rename) +- MapView.types.ts ๊ณต์šฉ (MapBounds/FlyTo/MapViewProps + isKoreaCoord) +- Dockerfile + deploy.sh: NEXT_PUBLIC_NAVER_MAP_CLIENT_ID build-arg ์ถ”๊ฐ€ +- ํ‚ค ๋ฏธ์„ค์ • ์‹œ GoogleMap fallback (ํšŒ๊ท€ 0) +- ์„ค๊ณ„์„œ: docs/design/363-map-sdk-branch/README.md +- Refs: #363 + ### ๐Ÿ—บ๏ธ ์‹๋‹น ์ƒ์„ธ ์ง€๋„ ๋งํฌ ๊ตญ๋‚ด/ํ•ด์™ธ ๋ถ„๊ธฐ (v0.1.51) - ์ขŒํ‘œ ๊ธฐ๋ฐ˜ ํ•œ๊ตญ ํŒ์ • (WGS84 KR bbox 33~38.7ยฐN, 124~132ยฐE) - ๊ตญ๋‚ด: ๋„ค์ด๋ฒ„ ์ง€๋„ primary + Google Maps ๋ณด์กฐ (๋„ค์ด๋ฒ„ URL์€ ์‹  ๋„๋ฉ”์ธ /p/search/) diff --git a/deploy.sh b/deploy.sh index 1817b3d..3357092 100755 --- a/deploy.sh +++ b/deploy.sh @@ -62,15 +62,18 @@ if [[ "$TARGET" == "all" || "$TARGET" == "frontend" ]]; then # Read build args from env or .env file MAPS_KEY="${NEXT_PUBLIC_GOOGLE_MAPS_API_KEY:-}" CLIENT_ID="${NEXT_PUBLIC_GOOGLE_CLIENT_ID:-}" + NAVER_MAP_ID="${NEXT_PUBLIC_NAVER_MAP_CLIENT_ID:-}" if [[ -f frontend/.env.local ]]; then MAPS_KEY="${MAPS_KEY:-$(grep NEXT_PUBLIC_GOOGLE_MAPS_API_KEY frontend/.env.local 2>/dev/null | cut -d= -f2)}" CLIENT_ID="${CLIENT_ID:-$(grep NEXT_PUBLIC_GOOGLE_CLIENT_ID frontend/.env.local 2>/dev/null | cut -d= -f2)}" + NAVER_MAP_ID="${NAVER_MAP_ID:-$(grep NEXT_PUBLIC_NAVER_MAP_CLIENT_ID frontend/.env.local 2>/dev/null | cut -d= -f2)}" fi docker build --platform "$PLATFORM" \ --build-arg NEXT_PUBLIC_GOOGLE_MAPS_API_KEY="$MAPS_KEY" \ --build-arg NEXT_PUBLIC_GOOGLE_CLIENT_ID="$CLIENT_ID" \ + --build-arg NEXT_PUBLIC_NAVER_MAP_CLIENT_ID="$NAVER_MAP_ID" \ -t "$REGISTRY/frontend:$TAG" \ -t "$REGISTRY/frontend:latest" \ frontend/ diff --git a/docs/design/363-map-sdk-branch/README.md b/docs/design/363-map-sdk-branch/README.md new file mode 100644 index 0000000..17bd618 --- /dev/null +++ b/docs/design/363-map-sdk-branch/README.md @@ -0,0 +1,84 @@ +# ์„ค๊ณ„์„œ: ๋ฉ”์ธ ์ง€๋„ ํƒญ SDK ๊ตญ๋‚ด/ํ•ด์™ธ ๋ถ„๊ธฐ (#363) + +> **์ƒํƒœ**: Approved +> **์ž‘์„ฑ**: [AI] Architect ยท **์ตœ์ข…์ˆ˜์ •**: 2026-06-16 +> **์ถ”์ ์„ฑ** โ€” Redmine: #363 ยท ๋ถ€๋ชจ: v0.1.51 1๋‹จ๊ณ„(์™ธ๋ถ€ ๋งํฌ ๋ถ„๊ธฐ) ยท ๊ด€๋ จ: MapView.tsx, mobile nearby +> ยท ๊ตฌํ˜„ ํŒŒ์ผ: `frontend/src/components/MapView.tsx`(dispatcher), `frontend/src/components/GoogleMapView.tsx`(rename from ๊ธฐ์กด MapView ๋‚ด์šฉ), `frontend/src/components/NaverMapView.tsx`(์‹ ๊ทœ), `frontend/src/lib/map-utils.ts`(๊ณต์šฉ ํ—ฌํผ) +> ยท ํ…Œ์ŠคํŠธ: ๋ณธ ๋ฒ”์œ„ ๋ฐ– (์ˆ˜๋™ โ€” dev ๋ธŒ๋ผ์šฐ์ € ๊ฒ€์ฆ) + +## 1. ๋ชฉ์  (Why) + +ํ˜„์žฌ MapView๋Š” `@vis.gl/react-google-maps` ๋‹จ์ผ ์‚ฌ์šฉ. ํ•œ๊ตญ ์‹๋‹น์€ ๋„ค์ด๋ฒ„ ์ง€๋„๊ฐ€ ์ง€๋ฒˆ/๋„๋กœ๋ช…/์ƒํ˜ธ/๊ธธ์ฐพ๊ธฐ์—์„œ ์••๋„์ ์œผ๋กœ ์ •ํ™•. ๋ฉ”์ธ ์ง€๋„ ํƒญ ์ž์ฒด๋ฅผ ๊ตญ๋‚ด/ํ•ด์™ธ ๋ถ„๊ธฐ. + +## 2. ๋ฒ”์œ„ + +- ํฌํ•จ: MapView๋ฅผ dispatcher๋กœ ์ „ํ™˜, ์ขŒํ‘œ ๊ธฐ๋ฐ˜ ์ž๋™ ๋ถ„๊ธฐ(KR bbox), ๋„ค์ด๋ฒ„ ํ‚ค ๋ฏธ์„ค์ • ์‹œ GoogleMap fallback. +- ์ œ์™ธ (๋ณ„๋„ ํ›„์†): ์‚ฌ์šฉ์ž ๊ฐ•์ œ ํ† ๊ธ€ UI, mixed ํ™”๋ฉด(ํ•œ๊ตญ+ํ•ด์™ธ ๋™์‹œ) ์ตœ์ ํ™”, ๋ชจ๋ฐ”์ผ nearby๋„ ๋™์ผ ๋ถ„๊ธฐ๋Š” 1์ฐจ ์ ์šฉ ํ›„ ๊ฒ€ํ† . + +## 3. ์ธ์ˆ˜์กฐ๊ฑด + +- [ ] `NEXT_PUBLIC_NAVER_MAP_CLIENT_ID` ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • + ํ™”๋ฉด ์ค‘์‹ฌ์ด KR bbox ์•ˆ์ด๋ฉด NaverMap ๋ Œ๋”. +- [ ] ํ‚ค ๋ฏธ์„ค์ • ๋˜๋Š” ํ™”๋ฉด์ด KR ๋ฐ–์ด๋ฉด GoogleMap ๋ Œ๋” (ํ˜„ํ–‰ ๋™์ผ). +- [ ] Supercluster + ํด๋Ÿฌ์Šคํ„ฐ/๋‹จ์ผ ๋งˆ์ปค ํ‘œ์‹œ, ํด๋ฆญ โ†’ onSelectRestaurant ์ฝœ๋ฐฑ ๋™์ผ. +- [ ] flyTo, onBoundsChanged, ๋‚ด ์œ„์น˜, ์ฑ„๋„ ์ƒ‰์ƒ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘. +- [ ] ๋นŒ๋“œ/ํƒ€์ž… ํšŒ๊ท€ ์—†์Œ. + +## 4. ์ปจํ…์ŠคํŠธ & ์ œ์•ฝ + +- ๋„ค์ด๋ฒ„ ์ง€๋„ v3: `https://oapi.map.naver.com/openapi/v3/maps.js?ncpClientId=` ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ. +- ๋„ค์ด๋ฒ„ ์ขŒํ‘œ๊ณ„: ๊ธฐ๋ณธ WGS84 (`naver.maps.LatLng(lat, lng)`). +- ์ง์ ‘ wrapper ์ฑ„ํƒ (react-naver-maps ์˜์กด์„ฑ ์ œ๊ฑฐ โ€” ๋ฉ”์ธํ„ฐ๋„Œ์Šค ๋ฆฌ์Šคํฌ). +- Supercluster๋Š” SDK ๋…๋ฆฝ์ด๋ผ ์žฌ์‚ฌ์šฉ. +- KR bbox: ์œ„๋„ 33~38.7, ๊ฒฝ๋„ 124~132. ํ™”๋ฉด ์ค‘์‹ฌ์ขŒํ‘œ๊ฐ€ ์•ˆ์— ์žˆ์œผ๋ฉด ํ•œ๊ตญ. + +## 5. ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š” + +``` +MapView (dispatcher) + โ”‚ + โ”œโ”€ ํ™”๋ฉด ์ค‘์‹ฌ ์ขŒํ‘œ๊ฐ€ KR bbox AND ๋„ค์ด๋ฒ„ ํ‚ค ์žˆ์Œ โ†’ NaverMapView + โ”‚ โ”œโ”€