Skip to content

[FEAT] Photo 도메인 기능 구현 및 S3 업로드 연동 #44

@khg9900

Description

@khg9900

🔍 개선사항

현재 사진 업로드/관리 기능이 체계적으로 분리되어 있지 않아, 다음 문제가 있습니다.

  • 사진 업로드를 위한 S3 업로드 흐름(업로드 URL 발급 등) 이 도메인 레벨로 정리되어 있지 않음
  • 사진을 앨범에 귀속/이동/삭제 하는 관리 기능이 부족함
  • 앨범에 속하지 않은(미지정) 사진을 별도로 조회/관리하기 어려움
  • Trip 기준 권한 체크가 각 기능에서 일관되게 적용되기 어려움

💡 제안하는 해결 방안

Photo 도메인을 도입하고, S3 업로드를 위한 인프라를 함께 구성합니다.

구현 범위는 아래와 같습니다.

  • Photo API 구현

    • 업로드 URL 생성 API (GenerateUploadUrls)
    • 사진 메타데이터 생성/등록 API (CreatePhotos)
    • 앨범별 사진 목록 조회 (GetPhotosByAlbum)
    • 미지정(앨범 없는) 사진 조회 (GetUnassignedPhotos)
    • 사진 단건 조회 (GetPhoto)
    • 사진 이동(앨범 변경) (MovePhotos)
    • 사진 삭제 (DeletePhotos)
  • 권한 체크 적용

    • Trip 편집 권한이 있는 사용자만 업로드/이동/삭제 가능하도록 TripPermissionService 기반으로 처리
  • S3 연동 구성

    • S3Config, S3Service, S3KeyGenerator 기반으로 업로드 키 생성 및 업로드 URL 발급 흐름 정리
    • application-dev.yml, build.gradle 설정 반영

📈 기대 효과

  • 사진 업로드부터 저장/조회/이동/삭제까지 도메인 책임이 명확해짐
  • 앨범/미지정 사진 관리가 가능해져 사용자 경험 개선
  • S3 업로드 흐름이 표준화되어 추후 기능 확장(대표사진, 썸네일, 검증/상태관리 등) 기반 마련
  • 권한 체크 로직이 공통화되어 보안/정합성 확보

💬 추가 참고사항

  • Photo 도메인 Swagger 문서 작성
  • 테스트 코드 작성
  • API 테스트 시나리오 작성
  • dev seed 수정

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions