Skip to content

[feat #108]: 칵테일 즐겨찾기 API 추가 및 개발 가이드 작성#109

Merged
Leesowon merged 1 commit into
devfrom
feat/#108
Mar 26, 2026
Merged

[feat #108]: 칵테일 즐겨찾기 API 추가 및 개발 가이드 작성#109
Leesowon merged 1 commit into
devfrom
feat/#108

Conversation

@Leesowon

@Leesowon Leesowon commented Mar 26, 2026

Copy link
Copy Markdown
Contributor

📌 작업 개요

주요 변경사항

  • 배치 즐겨찾기 토글 API 구현 (POST /api/v2/cocktails/bookmarks/batch)

    • 사용자가 화면을 이탈할 때 누른 모든 즐겨찾기를 한 번에 처리
    • 각 칵테일 ID에 대해 기존 즐겨찾기 상태를 확인하여 토글 (추가/삭제)
    • Request/Response DTO는 snake_case 사용 (cocktail_ids)
  • JWTFilter 인증 경로 등록

    • /api/v2/cocktails/bookmarks/batch 경로를 인증 필수로 설정
    • /onz/api/v2/cocktails/bookmarks/batch (context-path 포함) 경로도 등록
  • 테스트 지원 기능

    • JWT 토큰 생성 API 추가 (TestAuthController)
    • 테스트 데이터 삽입 SQL 스크립트 작성

📚 문서화 및 개발 가이드

  • CLAUDE.md 추가

    • API 개발 체크리스트 (DTO snake_case, JWTFilter 등록 규칙)
    • JSON 네이밍 전략 가이드 (@JsonProperty 사용)
    • 보안 규칙 및 트러블슈팅 가이드
  • 보안 강화

    • 민감 정보 노출 방지 검증 스크립트 (scripts/check-secrets.sh)
    • .gitignore 개선: application.properties 제외 설정 유지

📁 수정/추가된 파일

핵심 코드 (7개)

  • JWTFilter.java - 배치 북마크 API 인증 경로 등록
  • CocktailBookmarkController.java - 배치 토글 엔드포인트 + 디버그 로깅
  • CocktailBookmarkService.java - 배치 토글 비즈니스 로직
  • BookmarkBatchRequest.java - 배치 요청 DTO (snake_case)
  • BookmarkBatchResponse.java - 배치 응답 DTO (snake_case)
  • TestAuthController.java - 테스트용 JWT 토큰 생성 API
  • .gitignore - application.properties 제외 설정

문서 및 스크립트 (3개)

  • CLAUDE.md - API 개발 가이드 (227줄)
  • scripts/check-secrets.sh - 민감 정보 검증 자동화 스크립트
  • scripts/insert_test_data.sql - 테스트 데이터 SQL

✨ 기타 참고 사항

API 사용 예시

// Request
POST /onz/api/v2/cocktails/bookmarks/batch
Headers: Authorization: Bearer {JWT_TOKEN}
Body: {
  "cocktail_ids": [1, 2, 3, 4, 5]
}

// Response
{
  "code": 1,
  "msg": "즐겨찾기 배치 토글 성공",
  "data": {
    "cocktail_ids": [1, 2, 3, 4, 5]
  }
}

주의사항

- snake_case 네이밍: application.properties에서 spring.jackson.property-naming-strategy=SNAKE_CASE 설정되어 있음
- 모든 새로운 DTO는 @JsonProperty("snake_case") 필수
- 인증이 필요한 API는 JWTFilter.REQUIRE_AUTH_PATH_PATTERNS에 등록 필수

테스트 방법

1. JWT 토큰 발급: GET /onz/api/v2/test/auth/token?credentialId=test_user_001
2. 배치 토글 테스트: POST /onz/api/v2/cocktails/bookmarks/batch
3. 북마크 목록 확인: GET /onz/api/v2/cocktails/bookmarks

---
✅ PR 체크 리스트

- 로컬 서버에서 정상 동작을 확인했어요.
- 변경 내용에 대한 테스트를 진행했어요.
- application.yml 파일을 수정했다면, Notion에 업로드 및 공유했어요. (수정 없음)
- 깃허브에 올라가면 안되는 정보가 있는지 확인했어요. (./scripts/check-secrets.sh 통과)

- 칵테일 배치 즐겨찾기 토글 API 구현 (POST /api/v2/cocktails/bookmarks/batch)
- 사용자가 화면 이탈 시 여러 칵테일을 한 번에 토글 처리
- snake_case JSON 네이밍 전략에 맞춰 DTO 작성 (@JsonProperty)
- JWTFilter에 배치 북마크 API 인증 경로 등록

추가 기능:
- 테스트용 JWT 토큰 생성 API (TestAuthController)
- 테스트 데이터 삽입 SQL 스크립트

문서 및 보안:
- CLAUDE.md 추가: API 개발 체크리스트, snake_case 규칙, JWTFilter 등록 가이드
- 민감 정보 노출 방지 검증 스크립트 (check-secrets.sh)
- .gitignore 개선: application.properties 제외 설정 유지

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@Leesowon Leesowon added the Feature ✨ 새로운 기능을 추가합니다. label Mar 26, 2026
@Leesowon Leesowon merged commit f98ff49 into dev Mar 26, 2026
1 check passed
@Leesowon Leesowon deleted the feat/#108 branch March 26, 2026 22:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature ✨ 새로운 기능을 추가합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant