Skip to content

[FEAT] 관리자 신고 처리 API 구현 #43

@Yoonjongho1122

Description

@Yoonjongho1122

📊 개발 단계 및 우선순위

해당하는 우선순위에 체크해 주세요.

  • P0 : 서비스 핵심 동작
  • P1 : 운영 및 확장 기능
  • P2 : 부가적인 고도화 기능

🎯 도메인 연관 관계 및 완료 조건 (Definition of Done)

이 이슈가 완료되기 위해 충족해야 하는 조건들을 나열해 주세요.
예) 수강 완료 확인을 위해 강의 수강 완료 체크 기능이 있어야 함. (연관 도메인: course)

  • 연관 도메인 : report_moderation, community, identity
  • 설명 : 관리자는 신고 ID를 기준으로 신고를 처리할 수 있어야 한다.
  • 설명 : 신고 처리 결정은 REJECT, SUSPEND 중 하나만 허용해야 한다.
  • 설명 : REJECT 처리 시 신고 상태를 REJECTED로 변경해야 한다.
  • 설명 : REJECT 처리 시 신고 대상 작성자의 상태와 신고 대상 콘텐츠는 변경하지 않아야 한다.
  • 설명 : SUSPEND 처리 시 신고 상태를 RESOLVED로 변경해야 한다.
  • 설명 : SUSPEND 처리 시 신고 대상 작성자의 커뮤니티 이용 상태를 SUSPENDED로 변경해야 한다.
  • 설명 : SUSPEND 처리 시 deleteTargettrue이면 신고 대상 게시글, 댓글 또는 강의 리뷰를 삭제 상태로 변경해야 한다.
  • 설명 : 신고 대상 삭제는 물리 삭제가 아닌 소프트 삭제 방식으로 처리해야 한다.
  • 설명 : REJECT 처리에서는 deleteTarget=false만 허용해야 한다.
  • 설명 : 관리자가 입력한 처리 메모를 신고 정보에 저장해야 한다.
  • 설명 : 이미 처리된 신고는 다시 처리할 수 없어야 한다.
  • 설명 : BLACKLIST 상태는 누적 신고 50회 도달 시 자동 처리되므로 이 API에서 직접 설정하지 않아야 한다.
  • 설명 : 관리자 권한을 가진 사용자만 신고 처리 API에 접근할 수 있어야 한다.

💻 상세 작업 내용

클린 아키텍처(Clean Architecture) 구조에 맞춰 작업이 발생하는 계층에 체크하고 세부 내용을 작성해 주세요.

  • Model / Policy: 신고 처리 결정에 따른 상태 전이, 재처리 방지 및 신고 대상 삭제 정책 정의
  • UseCase / Command: DecideAdminReportUseCase 및 신고 처리 Command 정의
  • Service: 신고 상태와 요청값을 검증하고 처리 결정에 따라 신고 상태 변경, 회원 이용 제한, 신고 대상 삭제 및 관리자 메모 저장
  • Port / Adapter: 신고 대상 작성자 상태 변경과 게시글, 댓글, 리뷰 삭제 상태 변경을 위한 Port 및 Adapter 구현
  • Repository: 신고 ID 조회, 신고 처리 상태와 관리자 메모 저장 기능 구현
  • Controller: PATCH /api/admin/reports/{reportId}/decision API 구현
  • response / request: 신고 처리 Request 및 신고 처리 결과 Response 구현

🚨 검증 및 예외 처리 (TestCode)

정상 작동뿐만 아니라, 잘못된 값이나 예외 상황에 대한 처리를 꼼꼼히 확인해 주세요.

  • REJECT, deleteTarget=false 요청 시 신고 상태가 REJECTED로 변경되는지 테스트
  • REJECT 처리 시 회원 상태와 신고 대상 콘텐츠가 변경되지 않는지 테스트
  • SUSPEND, deleteTarget=false 요청 시 신고 상태가 RESOLVED로 변경되는지 테스트
  • SUSPEND 처리 시 신고 대상 작성자 상태가 SUSPENDED로 변경되는지 테스트
  • SUSPEND, deleteTarget=true 요청 시 신고 대상이 소프트 삭제되는지 테스트
  • 신고 대상 유형이 POST, COMMENT, REVIEW인 경우 각각 정상적으로 삭제 처리되는지 테스트
  • 관리자 처리 메모가 정상적으로 저장되고 응답에 반환되는지 테스트
  • 잘못된 decision 값 입력 시 400 Bad Request가 반환되는지 테스트
  • REJECT, deleteTarget=true 요청 시 400 Bad Request가 반환되는지 테스트
  • 존재하지 않는 신고 ID 요청 시 404 Not Found가 반환되는지 테스트
  • 이미 처리된 신고 요청 시 409 Conflict가 반환되는지 테스트
  • 인증되지 않은 사용자의 접근 시 401 Unauthorized가 반환되는지 테스트
  • 관리자 권한이 없는 사용자의 접근 시 403 Forbidden이 반환되는지 테스트
  • 예외 발생 시 적절한 HTTP 상태 코드 및 응답 메시지 반환 확인

🔗 참고 자료

  • API 명세 (문서 링크 첨부): PATCH /api/admin/reports/{reportId}/decision

Metadata

Metadata

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions