📊 개발 단계 및 우선순위
해당하는 우선순위에 체크해 주세요.
🎯 도메인 연관 관계 및 완료 조건 (Definition of Done)
이 이슈가 완료되기 위해 충족해야 하는 조건들을 나열해 주세요.
예) 수강 완료 확인을 위해 강의 수강 완료 체크 기능이 있어야 함. (연관 도메인: course)
💻 상세 작업 내용
클린 아키텍처(Clean Architecture) 구조에 맞춰 작업이 발생하는 계층에 체크하고 세부 내용을 작성해 주세요.
🚨 검증 및 예외 처리 (TestCode)
정상 작동뿐만 아니라, 잘못된 값이나 예외 상황에 대한 처리를 꼼꼼히 확인해 주세요.
🔗 참고 자료
- API 명세 (문서 링크 첨부):
PATCH /api/admin/reports/{reportId}/decision
📊 개발 단계 및 우선순위
P0: 서비스 핵심 동작P1: 운영 및 확장 기능P2: 부가적인 고도화 기능🎯 도메인 연관 관계 및 완료 조건 (Definition of Done)
연관 도메인: report_moderation, community, identity설명: 관리자는 신고 ID를 기준으로 신고를 처리할 수 있어야 한다.설명: 신고 처리 결정은REJECT,SUSPEND중 하나만 허용해야 한다.설명:REJECT처리 시 신고 상태를REJECTED로 변경해야 한다.설명:REJECT처리 시 신고 대상 작성자의 상태와 신고 대상 콘텐츠는 변경하지 않아야 한다.설명:SUSPEND처리 시 신고 상태를RESOLVED로 변경해야 한다.설명:SUSPEND처리 시 신고 대상 작성자의 커뮤니티 이용 상태를SUSPENDED로 변경해야 한다.설명:SUSPEND처리 시deleteTarget이true이면 신고 대상 게시글, 댓글 또는 강의 리뷰를 삭제 상태로 변경해야 한다.설명: 신고 대상 삭제는 물리 삭제가 아닌 소프트 삭제 방식으로 처리해야 한다.설명:REJECT처리에서는deleteTarget=false만 허용해야 한다.설명: 관리자가 입력한 처리 메모를 신고 정보에 저장해야 한다.설명: 이미 처리된 신고는 다시 처리할 수 없어야 한다.설명:BLACKLIST상태는 누적 신고 50회 도달 시 자동 처리되므로 이 API에서 직접 설정하지 않아야 한다.설명: 관리자 권한을 가진 사용자만 신고 처리 API에 접근할 수 있어야 한다.💻 상세 작업 내용
Model/Policy: 신고 처리 결정에 따른 상태 전이, 재처리 방지 및 신고 대상 삭제 정책 정의UseCase/Command:DecideAdminReportUseCase및 신고 처리 Command 정의Service: 신고 상태와 요청값을 검증하고 처리 결정에 따라 신고 상태 변경, 회원 이용 제한, 신고 대상 삭제 및 관리자 메모 저장Port/Adapter: 신고 대상 작성자 상태 변경과 게시글, 댓글, 리뷰 삭제 상태 변경을 위한 Port 및 Adapter 구현Repository: 신고 ID 조회, 신고 처리 상태와 관리자 메모 저장 기능 구현Controller:PATCH /api/admin/reports/{reportId}/decisionAPI 구현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가 반환되는지 테스트404 Not Found가 반환되는지 테스트409 Conflict가 반환되는지 테스트401 Unauthorized가 반환되는지 테스트403 Forbidden이 반환되는지 테스트🔗 참고 자료
PATCH /api/admin/reports/{reportId}/decision