Skip to content

[deploy] 배포 - #127

Merged
You-Hyuk merged 21 commits into
mainfrom
develop
Sep 21, 2026
Merged

You-Hyuk merged 21 commits into
mainfrom
develop

Conversation

@You-Hyuk

Copy link
Copy Markdown
Contributor

배포 내용

You-Hyuk and others added 21 commits September 19, 2026 22:54
추천수가 임계치(기본 10) 이상인 게시글을 최신순으로 조회하는
GET /api/posts/popular-board 엔드포인트 추가. 기존 /popular(최근 N일
TOP N 랭킹)와는 별개 API. 임계치는 application.yaml 프로퍼티로 분리.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
Post 엔티티 재사용 없이 별도 notice 도메인 신설. 댓글·신고·추천이
없는 단순 콘텐츠 구조(plain text)이며, 관리자가 개별 공지의 노출
여부를 제어할 수 있도록 active 필드를 둔다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
GET /api/notices(커뮤니티 홈 상단 고정용, 활성 공지 최신순 N개),
GET /api/notices/{id}(상세) 추가. 비활성 공지는 상세 조회 시에도
NOTICE_NOT_FOUND(404)로 응답해 링크 공유를 통한 노출을 막는다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
/api/admin/notices/** CRUD 추가(목록·상세는 활성 여부 무관 조회,
작성 시 active 미지정이면 기본 활성). 기존 inquiry 처리와 동일하게
AdminService가 NoticeRepository를 직접 참조해 위임한다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
게시글·댓글 신고를 위한 report 도메인 신설. reporter_id+target_type+
target_id unique 제약으로 동일 대상 중복 신고를 막는다. 처리 상태는
Inquiry와 동일하게 PENDING/RESOLVED/REJECTED + adminNote 구조.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
POST /api/reports 추가. reason=ETC인데 detail이 비어 있으면 400,
대상(게시글/댓글) 미존재 시 404, 중복 신고 시 409(unique 제약 위반
race condition도 동일하게 처리)로 응답한다. 저장 성공 시
ReportCreatedEvent를 발행한다(디스코드 알림은 다음 커밋에서 연동).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
ReportCreatedEvent를 AFTER_COMMIT 시점에 소비해 매 신고 건마다
디스코드로 알린다. inquiry 알림과 동일한 구조로 DiscordNotifier
인터페이스를 확장(NoOpDiscordNotifier/DiscordNotificationService
양쪽 구현). application-prod.yaml의 discord.webhook.report-url은
훅 차단으로 직접 추가하지 못해 사용자에게 안내함.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
PostService.adminDelete()/CommentService.adminDelete() 추가. 작성자
검증 없이 삭제한다는 점만 기존 delete()와 다르며, 게시글 삭제의
부수효과(댓글·좋아요·추천·태그 정리)는 deletePostAndDependents로
추출해 재사용한다. 신고 처리 관리자 API(다음 커밋)에서 사용한다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
/api/admin/reports/** 추가(목록 조회는 targetType·status 필터,
상세 조회, 상태 변경). 상태 변경 시 deleteTarget=true를 함께 보내면
같은 트랜잭션에서 PostService.adminDelete()/CommentService.adminDelete()
를 호출해 신고 대상 게시글·댓글을 강제 삭제한다.

이슈 #123의 9개 커밋 중 마지막 커밋.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
숫자 ID만으로는 관리자가 신고자를 식별하기 어려워 FE에서 표시용 필드 요청.
기존 문의(Inquiry) 관리자 응답의 userNickname 조회 패턴을 그대로 재사용.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEuNZdecA5CU738DK5vZW7
- 공지 생성/수정 DTO에 title 255자 제한 및 공백 거부 검증 추가
- 공지 목록 조회 정렬에 id 타이브레이커 추가로 동일 시각 데이터 순서 불안정성 제거
- 인기글(popular-board) API 설명을 실제 동작(이상)에 맞게 수정
- CD 워크플로우에 누락된 DISCORD_WEBHOOK_REPORT_URL 환경변수 전달 추가

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
static import를 마지막 그룹으로 이동. admin/CLAUDE.md의 "static import는 마지막 그룹"
컨벤션에 맞춤 (PR #124 CodeRabbit nitpick 반영).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
[feat] 커뮤니티 인기글·공지사항·신고 기능 추가
공연·릴리즈 별점 평가(#163) 기능을 위한 Rating 엔티티, target_type enum,
마이그레이션, Repository, ErrorCode를 추가한다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
RatingService와 DTO를 추가하고 ConcertController·ReleaseController에
PUT/GET(me)/DELETE 별점 엔드포인트를 붙인다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Concert/ReleaseService가 RatingService 집계를 조회해 상세·목록 응답에
averageRating, ratingCount 필드를 채운다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- 100자 초과 라인 정리
- rating.exception.UnauthorizedException 중복 제거, concert 것 재사용
- EMPTY_RATING_SUMMARY 중복 제거, RatingSummary.empty() 팩토리로 통합
- SecurityConfig에 GET .../rating/me 인증 carve-out 추가

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
FE에서 공연 상태가 ENDED일 때만 별점 입력 UI를 노출하도록 정책을 변경함에 따라,
서버 측에서도 concert.status가 ENDED가 아니면 별점 등록·수정을 거부하도록 검증을 추가했다.
release 별점은 정책 변경 대상이 아니므로 기존과 동일하게 상태 검증 없이 항상 허용한다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
score 범위 검증(0.5~5.0)이 서비스 계층에서 빠져있어 컨트롤러 우회 시 잘못된 값이 저장될 수 있는
문제와, 조회 후 삽입 방식의 upsert가 동시 첫 등록 요청에서 유니크 제약 위반으로 500을 반환하던
레이스 컨디션을 DB 원자적 upsert(INSERT ... ON CONFLICT)로 해결했다. 아울러 rating 컨트롤러
테스트가 인증된 사용자 ID 전파를 검증하지 못하던 공백과 테스트 파일의 import 순서 컨벤션 위반도 함께 정리했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
GET /api/mentions/search가 permitAll 목록에 포함되어 인증 없이 호출 가능했다.
해당 API는 게시글 작성 시 멘션 자동완성 용도로 인증된 사용자만 사용해야 하므로,
rating/me·following과 동일하게 hasAnyRole("USER", "ADMIN") 그룹으로 이동했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
[feat] 공연·릴리즈 별점 평가 API 추가
@You-Hyuk You-Hyuk added the Deploy 🚀 develop → main 배포(운영 반영) PR label Sep 21, 2026
@You-Hyuk You-Hyuk self-assigned this Sep 21, 2026
@coderabbitai

coderabbitai Bot commented Sep 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 16693a29-6f9e-4aa2-950d-1449a604bcdc

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@You-Hyuk
You-Hyuk merged commit 90c9dc7 into main Sep 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Deploy 🚀 develop → main 배포(운영 반영) PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant