Skip to content

[FEAT] 챌린지 신고 기능 추가 - #371

Merged
yc3697 merged 2 commits into
developfrom
feat/369-report-challenge
Aug 18, 2026
Merged

yc3697 merged 2 commits into
developfrom
feat/369-report-challenge

Conversation

@yc3697

@yc3697 yc3697 commented Aug 18, 2026 •

Copy link
Copy Markdown
Contributor

#️⃣ 연관된 이슈

관련된 이슈 번호를 적어주세요.
Close #369

✨ 작업 내용 (Summary)

이번 PR에서 작업한 내용을 간략히 설명해주세요. (이미지 첨부 가능)

챌린지 참여자가 부적절한 챌린지를 신고할 수 있도록 신고 API를 구현했습니다.

  • 챌린지 신고 API 추가(POST /api/v1/report/challenge)

  • 해당 챌린지에 참가중인 사용자만 신고 가능(시작 전, 진행 중 둘 다 가능)

  • 방장은 자신의 챌린지 신고 불가

  • 동일 사용자의 동일 챌린지 중복 신고 방지

  • 챌린지 신고 테이블 생성

  • 별도 알림이나 챌린지 제재 로직은 적용하지 않음

  • V2.45__create_challenge_report.sql 추가


✅ 변경 사항 체크리스트

다음 항목들을 확인하고 체크해주세요.

  • 코드에 영향이 있는 모든 부분에 대한 테스트를 작성하고 실행했나요?
  • 문서를 작성하거나 수정했나요? (필요한 경우)
  • 중요한 변경 사항이 팀에 공유되었나요?

🧪 테스트 결과

코드 변경에 대해 테스트를 수행한 결과를 요약해주세요.

  • 테스트 환경: (예: 로컬, 개발 서버 등) 로컬
  • 테스트 방법: (예: Postman, 단위 테스트, 수동 기능 테스트 등) 단위 테스트
  • 결과 요약: (예: 모든 테스트 통과, 새로운 테스트 케이스 3개 추가 완료) 통과

📸 스크린샷

관련된 스크린샷 또는 GIF가 있다면 여기에 첨부해주세요.


💬 리뷰 요구사항

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요.


📎 참고 자료

관련 문서, 레퍼런스 링크 등이 있다면 여기에 첨부해주세요.

Summary by CodeRabbit

  • 새로운 기능

    • 참여 중인 챌린지를 신고할 수 있는 기능을 추가했습니다.
    • 신고 사유와 상세 설명을 저장하며, 동일 챌린지에 대한 중복 신고를 방지합니다.
  • 유효성 검사

    • 기타 사유 선택 시 상세 설명을 필수로 입력해야 합니다.
    • 상세 설명은 최대 200자까지 입력할 수 있습니다.
  • 오류 처리

    • 비참여자의 신고, 방장의 자기 챌린지 신고, 중복 신고를 제한합니다.

@yc3697 yc3697 linked an issue Aug 18, 2026 that may be closed by this pull request
2 tasks
@yc3697 yc3697 self-assigned this Aug 18, 2026
@yc3697 yc3697 added 🌟 feat 새로운 기능 개발 영찬 labels Aug 18, 2026
@coderabbitai

coderabbitai Bot commented Aug 18, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b94c069-f206-4744-959d-19d7cb7bf83d

📥 Commits

Reviewing files that changed from the base of the PR and between a3b390c and b5945fa.

📒 Files selected for processing (10)
  • src/main/java/com/hrr/backend/domain/report/controller/ReportController.java
  • src/main/java/com/hrr/backend/domain/report/dto/ReportRequestDto.java
  • src/main/java/com/hrr/backend/domain/report/entity/ChallengeReport.java
  • src/main/java/com/hrr/backend/domain/report/repository/ChallengeReportRepository.java
  • src/main/java/com/hrr/backend/domain/report/service/ReportService.java
  • src/main/java/com/hrr/backend/domain/report/service/ReportServiceImpl.java
  • src/main/java/com/hrr/backend/global/response/ErrorCode.java
  • src/main/resources/db/migration/V2.46__create_challenge_report.sql
  • src/test/java/com/hrr/backend/domain/report/dto/ReportRequestDtoTest.java
  • src/test/java/com/hrr/backend/domain/report/service/ReportServiceChallengeTest.java

Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

챌린지 신고 API와 서비스 로직이 추가되었습니다. 참여 상태, 방장 여부, 중복 신고를 검증하고 ChallengeReport를 저장합니다. 신고 사유별 설명 검증과 데이터베이스 제약조건, 관련 테스트도 추가되었습니다.

Changes

챌린지 신고 기능

Layer / File(s) Summary
신고 계약과 저장 구조
src/main/java/com/hrr/backend/domain/report/dto/ReportRequestDto.java, src/main/java/com/hrr/backend/domain/report/entity/ChallengeReport.java, src/main/java/com/hrr/backend/domain/report/repository/ChallengeReportRepository.java, src/main/resources/db/migration/V2.46__create_challenge_report.sql
OTHER 사유의 설명 필수 조건과 200자 제한을 추가했습니다. ChallengeReport 엔티티와 중복 신고 조회 저장소를 추가했습니다. 신고자와 챌린지 조합의 유일 제약조건을 추가했습니다.
신고 서비스 흐름
src/main/java/com/hrr/backend/domain/report/service/ReportService.java, src/main/java/com/hrr/backend/domain/report/service/ReportServiceImpl.java, src/main/java/com/hrr/backend/global/response/ErrorCode.java, src/test/java/com/hrr/backend/domain/report/service/ReportServiceChallengeTest.java
챌린지 존재 여부, 참여 상태, 방장 여부, 중복 신고를 검증합니다. OTHER가 아닌 사유의 설명은 저장하지 않습니다. 관련 오류 코드와 서비스 테스트를 추가했습니다.
API 연결과 입력 검증
src/main/java/com/hrr/backend/domain/report/controller/ReportController.java, src/test/java/com/hrr/backend/domain/report/dto/ReportRequestDtoTest.java
POST /api/v1/report/challenge 엔드포인트를 추가했습니다. DTO 검증과 신고 요청 처리 테스트를 추가했습니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to b5945

This change adds a localized challenge-reporting API and related persistence logic; no actionable merge-blocking risk remains beyond normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant 신고자
  participant ReportController
  participant ReportServiceImpl
  participant ChallengeRepository
  participant ChallengeReportRepository

  신고자->>ReportController: POST /api/v1/report/challenge
  ReportController->>ReportServiceImpl: reportChallenge(reporter, request)
  ReportServiceImpl->>ChallengeRepository: 챌린지 조회 및 참여 상태 확인
  ReportServiceImpl->>ChallengeReportRepository: 중복 신고 확인
  ReportServiceImpl->>ChallengeReportRepository: ChallengeReport 저장
  ReportServiceImpl-->>ReportController: 성공 응답
  ReportController-->>신고자: 신고 완료
Loading

Poem

챌린지에 신고 버튼이 피고
사유와 설명은 규칙을 지키고
참여자는 조심스레 기록을 남기네
중복 신고는 문 앞에서 멈추고
데이터베이스는 단단히 잠든다.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed [369] 챌린지 신고 API와 참가자 제한, 방장 및 중복 신고 방지 요구사항을 구현했습니다.
Out of Scope Changes check ✅ Passed 변경 사항은 [369]의 챌린지 신고 기능 범위에 포함되며 알림과 제재 로직은 추가하지 않았습니다.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 챌린지 신고 기능 추가라는 변경의 핵심을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/369-report-challenge

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yc3697
yc3697 merged commit 80ccff5 into develop Aug 18, 2026
2 checks passed
@yc3697
yc3697 deleted the feat/369-report-challenge branch August 18, 2026 01:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

영찬 🌟 feat 새로운 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 챌린지 신고 기능 도입

1 participant