From 983e481da961cf1b61ce2219e0ba09dfa86c5058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Wed, 9 Sep 2026 16:49:50 +0900 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20=EC=9A=A9=EC=96=B4=20=EC=82=AC?= =?UTF-8?q?=EC=A0=84=20=EC=BB=A8=EB=B2=A4=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 백엔드 엔드포인트 네이밍과 프론트 도메인 용어(라우트 경로, features 폴더명 등)를 통일하기 위한 용어 사전을 만들고, coding-style.md 네이밍 규칙에서 참조하게 한다 --- docs/conventions/coding-style.md | 1 + docs/conventions/terminology.md | 38 +++++++++++++++++++ .../8pin-charger.svg | 0 .../alcohol-swab.svg | 0 .../band-aid.svg | 0 .../curling-iron.svg | 0 .../default.svg | 0 .../eye-drops.svg | 0 .../hair-dryer.svg | 0 .../laptop-charger.svg | 0 .../{rental-items => bililge-items}/mask.svg | 0 .../ointment.svg | 0 .../pain-relief-patch.svg | 0 .../{rental-items => bililge-items}/pill.svg | 0 .../power-bank.svg | 0 .../sanitary-pad.svg | 0 .../umbrella.svg | 0 .../usb-c-charger.svg | 0 ...ntal-selected.svg => bililge-selected.svg} | 0 .../BililgeListScreen.tsx} | 0 .../components/BililgeCategoryFilter.tsx} | 0 .../components/BililgeItemCard.tsx} | 0 .../constants/bililgeItems.ts} | 0 23 files changed, 39 insertions(+) create mode 100644 docs/conventions/terminology.md rename src/assets/icons/{rental-items => bililge-items}/8pin-charger.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/alcohol-swab.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/band-aid.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/curling-iron.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/default.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/eye-drops.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/hair-dryer.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/laptop-charger.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/mask.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/ointment.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/pain-relief-patch.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/pill.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/power-bank.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/sanitary-pad.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/umbrella.svg (100%) rename src/assets/icons/{rental-items => bililge-items}/usb-c-charger.svg (100%) rename src/assets/icons/bottom-nav/{rental-selected.svg => bililge-selected.svg} (100%) rename src/features/{rental/RentalListScreen.tsx => bililge/BililgeListScreen.tsx} (100%) rename src/features/{rental/components/RentalCategoryFilter.tsx => bililge/components/BililgeCategoryFilter.tsx} (100%) rename src/features/{rental/components/RentalItemCard.tsx => bililge/components/BililgeItemCard.tsx} (100%) rename src/features/{rental/constants/rentalItems.ts => bililge/constants/bililgeItems.ts} (100%) diff --git a/docs/conventions/coding-style.md b/docs/conventions/coding-style.md index 32a4b6f..3b04a4d 100644 --- a/docs/conventions/coding-style.md +++ b/docs/conventions/coding-style.md @@ -16,6 +16,7 @@ - 훅: `useXxx`. 일반 함수/변수: camelCase. 상수: `UPPER_SNAKE_CASE`. - 불리언: `is` / `has` / `should` 접두사. - 폴더: 도메인명 소문자 또는 kebab-case. +- **도메인 이름은 임의로 번역/축약하지 않는다.** `features/<기능>/` 폴더명, 라우트 경로, 도메인 접두사가 붙는 컴포넌트/타입명은 `docs/conventions/terminology.md`(용어 사전)의 코드 용어를 그대로 쓴다 — 백엔드 API 엔드포인트 네이밍과 맞추기 위함이다. 사전에 없는 새 도메인이면 먼저 그 문서에 추가한 뒤 코드에 반영한다. ## 폴더 구조 diff --git a/docs/conventions/terminology.md b/docs/conventions/terminology.md new file mode 100644 index 0000000..3c1f89a --- /dev/null +++ b/docs/conventions/terminology.md @@ -0,0 +1,38 @@ +# 용어 사전 (한글 도메인명 ↔ 코드 용어) + +> 코드에서 도메인 이름을 임의로 짓지 않기 위한 사전. 백엔드 API 엔드포인트 네이밍과 프론트 코드(라우트 경로, `src/features/` 폴더명, 컴포넌트/타입 접두사 등)가 같은 용어를 쓰게 맞춘다. + +## 원칙 + +- 새 기능/화면을 만들 때 도메인 이름이 필요하면, 영어로 대충 번역하지 말고 **반드시 이 표부터 확인한다.** +- 여기 없는 새 도메인이 생기면 백엔드와 협의해서 엔드포인트 네이밍을 먼저 정하고, 그걸 이 표에 추가한 뒤 코드에 반영한다 — 프론트에서 먼저 임의로 정하지 않는다. +- 표의 "코드 용어"는 백엔드 엔드포인트 세그먼트(`/api/{코드 용어}/...`)와 동일한 문자열이다. 프론트에서는 아래 "적용 범위"에 그대로 쓴다. + +## 사전 + +| 한글 도메인명 | 코드 용어 | +| --- | --- | +| 공통 | `auth` | +| 사용자 | `users` | +| 게시판(공지) | `notices` | +| 게시판(열린피드백) | `feedbacks` | +| 빌릴게 | `bililge` | +| 사물함 | `lockers` | +| 슬랑제 | `seulrangjes` | +| 아카이빙 | `archives` | +| 챗봇 | `chat` | +| 파일 | `files` | +| 행사(event) | `events` | +| 회비 납부 | `fee` | + +## 적용 범위 + +- 백엔드 API 엔드포인트 경로: `/api/{코드 용어}/...` +- 프론트 라우트 경로: `/{코드 용어}` +- `src/features/{코드 용어}/` 폴더명 +- 그 안의 컴포넌트/타입/상수 이름의 도메인 접두사 — 코드 용어를 PascalCase로 바꿔서 쓴다 (예: `bililge` → `Bililge...`, `bililgeItems` 같은 camelCase 변수명도 동일) +- Figma 노드/화면 이름은 그대로 한글을 쓴다(디자이너와의 소통 채널이라 번역하지 않음) — 코드 파일 최상단의 `// Figma: ...` 주석에서만 한글 화면명을 남긴다. + +## 반영 사례 + +- "빌릴게" 기능: 처음엔 `rental`로 임의 명명했다가, 이 사전을 도입하면서 `src/features/rental/` → `src/features/bililge/`로 전체 리네이밍했다(#18). diff --git a/src/assets/icons/rental-items/8pin-charger.svg b/src/assets/icons/bililge-items/8pin-charger.svg similarity index 100% rename from src/assets/icons/rental-items/8pin-charger.svg rename to src/assets/icons/bililge-items/8pin-charger.svg diff --git a/src/assets/icons/rental-items/alcohol-swab.svg b/src/assets/icons/bililge-items/alcohol-swab.svg similarity index 100% rename from src/assets/icons/rental-items/alcohol-swab.svg rename to src/assets/icons/bililge-items/alcohol-swab.svg diff --git a/src/assets/icons/rental-items/band-aid.svg b/src/assets/icons/bililge-items/band-aid.svg similarity index 100% rename from src/assets/icons/rental-items/band-aid.svg rename to src/assets/icons/bililge-items/band-aid.svg diff --git a/src/assets/icons/rental-items/curling-iron.svg b/src/assets/icons/bililge-items/curling-iron.svg similarity index 100% rename from src/assets/icons/rental-items/curling-iron.svg rename to src/assets/icons/bililge-items/curling-iron.svg diff --git a/src/assets/icons/rental-items/default.svg b/src/assets/icons/bililge-items/default.svg similarity index 100% rename from src/assets/icons/rental-items/default.svg rename to src/assets/icons/bililge-items/default.svg diff --git a/src/assets/icons/rental-items/eye-drops.svg b/src/assets/icons/bililge-items/eye-drops.svg similarity index 100% rename from src/assets/icons/rental-items/eye-drops.svg rename to src/assets/icons/bililge-items/eye-drops.svg diff --git a/src/assets/icons/rental-items/hair-dryer.svg b/src/assets/icons/bililge-items/hair-dryer.svg similarity index 100% rename from src/assets/icons/rental-items/hair-dryer.svg rename to src/assets/icons/bililge-items/hair-dryer.svg diff --git a/src/assets/icons/rental-items/laptop-charger.svg b/src/assets/icons/bililge-items/laptop-charger.svg similarity index 100% rename from src/assets/icons/rental-items/laptop-charger.svg rename to src/assets/icons/bililge-items/laptop-charger.svg diff --git a/src/assets/icons/rental-items/mask.svg b/src/assets/icons/bililge-items/mask.svg similarity index 100% rename from src/assets/icons/rental-items/mask.svg rename to src/assets/icons/bililge-items/mask.svg diff --git a/src/assets/icons/rental-items/ointment.svg b/src/assets/icons/bililge-items/ointment.svg similarity index 100% rename from src/assets/icons/rental-items/ointment.svg rename to src/assets/icons/bililge-items/ointment.svg diff --git a/src/assets/icons/rental-items/pain-relief-patch.svg b/src/assets/icons/bililge-items/pain-relief-patch.svg similarity index 100% rename from src/assets/icons/rental-items/pain-relief-patch.svg rename to src/assets/icons/bililge-items/pain-relief-patch.svg diff --git a/src/assets/icons/rental-items/pill.svg b/src/assets/icons/bililge-items/pill.svg similarity index 100% rename from src/assets/icons/rental-items/pill.svg rename to src/assets/icons/bililge-items/pill.svg diff --git a/src/assets/icons/rental-items/power-bank.svg b/src/assets/icons/bililge-items/power-bank.svg similarity index 100% rename from src/assets/icons/rental-items/power-bank.svg rename to src/assets/icons/bililge-items/power-bank.svg diff --git a/src/assets/icons/rental-items/sanitary-pad.svg b/src/assets/icons/bililge-items/sanitary-pad.svg similarity index 100% rename from src/assets/icons/rental-items/sanitary-pad.svg rename to src/assets/icons/bililge-items/sanitary-pad.svg diff --git a/src/assets/icons/rental-items/umbrella.svg b/src/assets/icons/bililge-items/umbrella.svg similarity index 100% rename from src/assets/icons/rental-items/umbrella.svg rename to src/assets/icons/bililge-items/umbrella.svg diff --git a/src/assets/icons/rental-items/usb-c-charger.svg b/src/assets/icons/bililge-items/usb-c-charger.svg similarity index 100% rename from src/assets/icons/rental-items/usb-c-charger.svg rename to src/assets/icons/bililge-items/usb-c-charger.svg diff --git a/src/assets/icons/bottom-nav/rental-selected.svg b/src/assets/icons/bottom-nav/bililge-selected.svg similarity index 100% rename from src/assets/icons/bottom-nav/rental-selected.svg rename to src/assets/icons/bottom-nav/bililge-selected.svg diff --git a/src/features/rental/RentalListScreen.tsx b/src/features/bililge/BililgeListScreen.tsx similarity index 100% rename from src/features/rental/RentalListScreen.tsx rename to src/features/bililge/BililgeListScreen.tsx diff --git a/src/features/rental/components/RentalCategoryFilter.tsx b/src/features/bililge/components/BililgeCategoryFilter.tsx similarity index 100% rename from src/features/rental/components/RentalCategoryFilter.tsx rename to src/features/bililge/components/BililgeCategoryFilter.tsx diff --git a/src/features/rental/components/RentalItemCard.tsx b/src/features/bililge/components/BililgeItemCard.tsx similarity index 100% rename from src/features/rental/components/RentalItemCard.tsx rename to src/features/bililge/components/BililgeItemCard.tsx diff --git a/src/features/rental/constants/rentalItems.ts b/src/features/bililge/constants/bililgeItems.ts similarity index 100% rename from src/features/rental/constants/rentalItems.ts rename to src/features/bililge/constants/bililgeItems.ts From bf4693b67ebb312fe6cdf07fa950541051aa9ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Wed, 9 Sep 2026 16:50:03 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20rental=20=E2=86=92=20bililge=20?= =?UTF-8?q?=EB=84=A4=EC=9D=B4=EB=B0=8D=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 용어 사전(docs/conventions/terminology.md)에 맞춰 '빌릴게' 도메인의 rental 네이밍을 bililge로 전부 바꾼다: features/rental → features/bililge, 컴포넌트/타입/상수명(RentalXxx → BililgeXxx), 라우트 경로(/rental → /bililge), BottomNavValue의 'rental' → 'bililge', asset 폴더/파일명까지. Figma 노드 실제 이름을 그대로 옮긴 주석(예: 'Rental Item Card')은 용어 사전 규칙대로 그대로 둔다 --- src/app/App.tsx | 4 +-- src/components/ui/BottomNav.tsx | 8 ++--- src/components/ui/ScreenLayout.tsx | 2 +- src/features/bililge/BililgeListScreen.tsx | 16 ++++----- .../components/BililgeCategoryFilter.tsx | 13 ++++--- .../bililge/components/BililgeItemCard.tsx | 8 ++--- .../bililge/constants/bililgeItems.ts | 34 +++++++++---------- src/features/home/HomeScreen.tsx | 2 +- 8 files changed, 45 insertions(+), 42 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 1e2a4b3..616d406 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1,8 +1,8 @@ import { Route, Routes } from "react-router-dom"; import ScreenLayout from "@/components/ui/ScreenLayout"; +import BililgeListScreen from "@/features/bililge/BililgeListScreen"; import HomeScreen from "@/features/home/HomeScreen"; -import RentalListScreen from "@/features/rental/RentalListScreen"; // 데스크톱에서 보기 좋게 아이폰 화면 크기로 가운데 정렬만 해준다. function App() { @@ -11,7 +11,7 @@ function App() { }> } path="/" /> - } path="/rental" /> + } path="/bililge" /> diff --git a/src/components/ui/BottomNav.tsx b/src/components/ui/BottomNav.tsx index 8bfe241..e9f2669 100644 --- a/src/components/ui/BottomNav.tsx +++ b/src/components/ui/BottomNav.tsx @@ -5,12 +5,12 @@ import { IconTicket, } from "@wanteddev/wds-icon"; +import bililgeSelected from "@/assets/icons/bottom-nav/bililge-selected.svg"; import boardSelected from "@/assets/icons/bottom-nav/board-selected.svg"; import eventSelected from "@/assets/icons/bottom-nav/event-selected.svg"; import homeSelected from "@/assets/icons/bottom-nav/home-selected.svg"; -import rentalSelected from "@/assets/icons/bottom-nav/rental-selected.svg"; -export type BottomNavValue = "home" | "event" | "board" | "rental"; +export type BottomNavValue = "home" | "event" | "board" | "bililge"; interface BottomNavProps { value: BottomNavValue; @@ -47,8 +47,8 @@ const TABS: BottomNavTab[] = [ { NormalIcon: IconStorage, label: "빌릴게", - selectedIcon: rentalSelected, - value: "rental", + selectedIcon: bililgeSelected, + value: "bililge", }, ]; diff --git a/src/components/ui/ScreenLayout.tsx b/src/components/ui/ScreenLayout.tsx index cc8fbf2..704c02e 100644 --- a/src/components/ui/ScreenLayout.tsx +++ b/src/components/ui/ScreenLayout.tsx @@ -7,10 +7,10 @@ import { ScreenHeaderContext } from "@/components/ui/screenHeaderContext"; // Bottom Nav 탭 ↔ 라우트 경로 매핑. 화면이 늘어나면 여기에 추가한다. const BOTTOM_NAV_PATHS: Record = { + bililge: "/bililge", board: "/board", event: "/event", home: "/", - rental: "/rental", }; function getBottomNavValueFromPath(pathname: string): BottomNavValue { diff --git a/src/features/bililge/BililgeListScreen.tsx b/src/features/bililge/BililgeListScreen.tsx index 98247b3..f28920a 100644 --- a/src/features/bililge/BililgeListScreen.tsx +++ b/src/features/bililge/BililgeListScreen.tsx @@ -3,12 +3,12 @@ import { useState } from "react"; import ScreenHeader from "@/components/ui/ScreenHeader"; import { useScreenHeader } from "@/components/ui/useScreenHeader"; -import RentalCategoryFilter from "@/features/rental/components/RentalCategoryFilter"; -import RentalItemCard from "@/features/rental/components/RentalItemCard"; -import { RENTAL_ITEMS } from "@/features/rental/constants/rentalItems"; +import BililgeCategoryFilter from "@/features/bililge/components/BililgeCategoryFilter"; +import BililgeItemCard from "@/features/bililge/components/BililgeItemCard"; +import { BILILGE_ITEMS } from "@/features/bililge/constants/bililgeItems"; // Figma: 빌릴게 (nodeId 1243:73331) -function RentalListScreen() { +function BililgeListScreen() { const [tab, setTab] = useState("rent"); const [category, setCategory] = useState("전체"); @@ -26,14 +26,14 @@ function RentalListScreen() {
- +
{tab === "rent" ? (
- {RENTAL_ITEMS.map((item) => ( - ( + void; } // Figma: 빌릴게 Filter Row (nodeId 1243:73337) — WDS Chip이 아니라 Stream 로컬 커스텀 칩. // 카테고리·물품 매핑 API가 아직 없어 필터링 없이 선택 상태만 표시한다. -function RentalCategoryFilter({ value, onChange }: RentalCategoryFilterProps) { +function BililgeCategoryFilter({ + value, + onChange, +}: BililgeCategoryFilterProps) { return (
- {RENTAL_CATEGORIES.map((category) => { + {BILILGE_CATEGORIES.map((category) => { const active = category === value; return (