Skip to content

[OT-104] [FEAT]: 업로드 API 구현 #60

@arlen02-01

Description

@arlen02-01

🎟️ 상위 작업 (Ticket Number)

OT-64

🌳 브랜치명 (Branch)

feature/upload-api

📝 상세 내용 (Description)

  • 관리자 업로드 init API 신규 구현
  • 시리즈/콘텐츠/숏폼 업로드 초기화 엔드포인트 추가
  • 권한 정책 적용
    • 시리즈/콘텐츠: ADMIN
    • 숏폼: ADMIN, EDITOR
  • Presigned URL 발급 로직 구현(S3)
  • 업로드 대상 URL 저장 방식 정리
    • DB에 object key 기반 S3 URL 저장
    • presigned URL은 업로드 전용으로 응답
  • 파일명 sanitize 적용
    • 특수문자/경로문자 제거
    • 미지원 확장자 업로드 차단(INVALID_INPUT)
  • 숏폼 연관 대상 검증 강화
    • seriesId, contentsId 중 정확히 하나만 허용
  • 도메인 엔티티 갱신 메서드 추가
    • Media.updateImageKeys
    • Contents.updateStorageKeys
    • ShortForm.updateStorageKeys

✅ TO-DO LIST

  • Task1: 관리자 업로드 init API(시리즈/콘텐츠/숏폼) 엔드포인트 구현
  • Task2: 업로드 엔드포인트 권한 정책 적용 (시리즈/콘텐츠=ADMIN, 숏폼=ADMIN|EDITOR)
  • Task3: S3 Presigned URL 발급 로직 구현
  • Task4: 업로드 URL 저장 방식 정리 (DB=S3 URL 저장, 응답=업로드용 presigned URL)
  • Task5: 파일명 sanitize 적용 (특수문자/경로문자 제거)
  • Task6: 미지원 확장자 업로드 차단 (INVALID_INPUT)
  • Task7: 숏폼 연관 대상 검증 강화 (seriesId, contentsId 중 정확히 하나만 허용)
  • Task8: 도메인 엔티티 갱신 메서드 추가 (Media.updateImageKeys, Contents.updateStorageKeys, ShortForm.updateStorageKeys)

📌 기타 사항

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions