Skip to content

Comments

[feature/40-dot-image-api] - 음식 도트 선택 조회/추가/삭제 API 구현#41

Merged
Parkchanyoung0710 merged 4 commits intodevelopfrom
feature/40-dot-image-api
Feb 8, 2026
Merged

[feature/40-dot-image-api] - 음식 도트 선택 조회/추가/삭제 API 구현#41
Parkchanyoung0710 merged 4 commits intodevelopfrom
feature/40-dot-image-api

Conversation

@Parkchanyoung0710
Copy link
Contributor

@Parkchanyoung0710 Parkchanyoung0710 commented Feb 7, 2026

제안 이유

  • 사용자 프로필에 음식 취향(도트 뱃지)을 표현할 수 있도록, 선택 정보를 User 도메인에 영속화하기 위함
  • 프론트/백엔드 간 최대 선택 개수 9개로 통일하여 데이터 불일치 가능성 제거

설계 방향

  • 음식 도트는 별도 엔티티로 분리하지 않고, 문자열 배열 형태로 관리
  • 실제 이미지 리소스는 프론트엔드 정적 자산으로 관리하고, 백엔드는 도트 ID 배열의 저장 및 검증만 담당

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 사용자가 선호하는 음식점을 저장·관리하는 Food Dots API 추가 (조회/추가/삭제 엔드포인트)
    • 최대 9개까지 저장 제한 및 관련 서버-side 검증 적용
    • Food Dots 요청 검증을 위한 입력 DTO 추가
    • 사용자 스키마에 선택한 Food Dot ID 배열 필드 추가
  • 데이터 업데이트

    • 메뉴 항목 이름 변경: '김치찌개' → '국밥'

@coderabbitai
Copy link

coderabbitai bot commented Feb 7, 2026

📝 Walkthrough

Walkthrough

인증된 사용자가 선호 음식점(food dot)을 조회·추가·제거할 수 있도록 UsersController, 관련 DTO·서비스·모듈 변경과 User 스키마 필드 추가, 주석·시드 데이터 수정을 포함한 기능 추가 및 관련 정리가 이루어졌습니다.

Changes

Cohort / File(s) Summary
앱 진입부 및 시드 데이터
src/main.ts, src/menus/seed/menu.seed.ts
src/main.ts의 인라인 주석 제거; 메뉴 시드 데이터에서 첫 항목 이름을 '김치찌개''국밥'으로 변경.
스키마 확장
src/users/schemas/user.schema.ts
User 스키마에 selectedFoodDotIds: string[] 필드 추가(타입: [String], 기본값: []), 비실행 주석 제거.
컨트롤러 및 DTO
src/users/users.controller.ts, src/users/dto/add-food-dot.dto.ts
UsersController 추가(인증 토큰 검증 후 GET/POST/DELETE /users/me/food-dots 엔드포인트). AddFoodDotDto 추가(유효성 검사: string, 길이, 패턴).
서비스 로직
src/users/users.service.ts
getMyFoodDots(userId), addFoodDot(userId,dotId), removeFoodDot(userId,dotId) 추가. 최대값 상수 MAX_FOOD_DOTS = 9 적용, 중복 방지 및 예외 처리 추가.
모듈 의존성 및 등록
src/users/users.module.ts, src/auth/auth.module.ts
UsersController를 UsersModule에 등록하고 AuthModule/UsersModule 간 순환 의존성 해결을 위해 forwardRef 적용(UsersModule imports에 AuthModule, AuthModule imports에 UsersModule forwardRef).

Sequence Diagram

sequenceDiagram
    participant Client as Client
    participant Controller as UsersController
    participant Auth as AuthService
    participant Service as UsersService
    participant DB as Database

    Client->>Controller: GET /users/me/food-dots (쿠키)
    Controller->>Auth: accessToken 검증
    Auth-->>Controller: userId
    Controller->>Service: getMyFoodDots(userId)
    Service->>DB: 사용자 조회
    DB-->>Service: selectedFoodDotIds 반환
    Service-->>Controller: 음식점 목록
    Controller-->>Client: 응답 (Cache-Control: no-store)

    Client->>Controller: POST /users/me/food-dots {dotId}
    Controller->>Auth: accessToken 검증
    Auth-->>Controller: userId
    Controller->>Service: addFoodDot(userId, dotId)
    Service->>DB: 사용자 조회
    Service->>Service: 중복/최대 개수 검증
    Service->>DB: 업데이트 저장
    DB-->>Service: 저장 완료
    Service-->>Controller: 업데이트된 목록
    Controller-->>Client: 추가 완료 응답

    Client->>Controller: DELETE /users/me/food-dots/:dotId
    Controller->>Auth: accessToken 검증
    Auth-->>Controller: userId
    Controller->>Service: removeFoodDot(userId, dotId)
    Service->>DB: 사용자 조회 및 삭제 후 저장
    DB-->>Service: 저장 완료
    Service-->>Controller: 업데이트된 목록
    Controller-->>Client: 제거 완료 응답
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 토끼가 속삭여요
새 기능이 폴짝 폴짝,
맛집을 담고 빼고 골라요.
아홉개까지 소중히 담아,
사용자의 한입을 위해 🥣


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@Parkchanyoung0710 Parkchanyoung0710 linked an issue Feb 7, 2026 that may be closed by this pull request
@ramong26 ramong26 requested review from Copilot and removed request for ramong26 February 8, 2026 01:07
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

사용자 프로필에 “음식 도트(Food Dots)” 선택 정보를 저장/조회/추가/삭제할 수 있도록 Users 도메인에 필드를 추가하고 관련 API 엔드포인트를 구현한 PR입니다. 최대 선택 개수를 9개로 제한해 프론트/백 간 데이터 불일치 가능성을 줄이려는 목적에 해당합니다.

Changes:

  • User 스키마에 selectedFoodDotIds: string[] 필드 추가
  • 내 음식 도트 조회/추가/삭제용 Users API 및 서비스 로직 추가
  • 메뉴 시드 데이터 일부 수정 및 부트스트랩 주석 정리

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/users/users.service.ts 음식 도트 조회/추가/삭제 서비스 메서드 추가 및 최대 9개 제한 적용
src/users/users.module.ts UsersController 등록 및 AuthModule 의존성 추가(forwardRef)
src/users/users.controller.ts /users/me/food-dots 조회/추가/삭제 엔드포인트 신규 추가
src/users/schemas/user.schema.ts selectedFoodDotIds 필드 스키마에 추가
src/menus/seed/menu.seed.ts 시드 메뉴명 1건 변경
src/main.ts 주석 정리(동작 변경 없음)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Parkchanyoung0710 Parkchanyoung0710 merged commit 3d6bd5b into develop Feb 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature/40-dot-image-api] - 음식 도트 api 구현

2 participants