Skip to content

feat/#84-crew: 게시글·댓글 및 무무 도메인 이관 - #85

Open
huncozyboy wants to merge 5 commits into
developfrom
feat/#84
Open

feat/#84-crew: 게시글·댓글 및 무무 도메인 이관#85
huncozyboy wants to merge 5 commits into
developfrom
feat/#84

Conversation

@huncozyboy

Copy link
Copy Markdown
Member

Related Issue 🚀

Work Description ✏️

crew-post-api-controller

Method Endpoint Description
GET /post/v2 게시글 목록 조회
GET /post/v2/{postId} 게시글 상세 조회
POST /post/v2 게시글 생성
PUT /post/v2/{postId} 게시글 수정
DELETE /post/v2/{postId} 게시글 삭제
POST /post/v2/{postId}/like 게시글 좋아요 토글
POST /post/v2/{postId}/report 게시글 신고
POST /post/v2/{postId}/view 게시글 조회수 증가

crew-comment-api-controller

Method Endpoint Description
GET /comment/v2 댓글·대댓글 조회
POST /comment/v2 댓글·대댓글 생성
PUT /comment/v2/{commentId} 댓글 수정
DELETE /comment/v2/{commentId} 댓글 삭제
POST /comment/v2/{commentId}/like 댓글 좋아요 토글
POST /comment/v2/{commentId}/report 댓글 신고

admin-crew-mumu-api-controller

Method Endpoint Description
GET /admin/crew/mumu/text 무무 텍스트 조회
PUT /admin/crew/mumu/text 무무 텍스트 등록 및 수정

PR Point 📸

  • 기존 Crew 서버에 남아있던 게시글 / 댓글 / 무무 관련 기능을 통합 레포 구조에 맞게 이관해주었어요

  • 게시글 / 댓글의 CRUD, 좋아요, 신고 등 공통적인 기능은 domain-playground의 Post 도메인에서 관리하도록 구성했습니다

    • 기존 Crew와 Playground에서 각각 관리하던 게시글 관련 책임을 하나의 Post 도메인으로 정리해주었어요
  • 다만 모임 게시글의 조회 / 작성 가능 여부와 같은 Crew 고유의 모임 정책은 domain-crew가 계속 관리하도록 구성했습니다

    • Post 도메인에서 Crew 내부 구현을 직접 참조하지 않고 MeetingPostAccessPort를 통해 필요한 모임 접근 정책만 확인하도록 분리해주었어요
  • 무무의 경우 일반 게시글과 동일한 정책으로 관리하기 어려운 운영성 기능이기 때문에, 게시글 자체는 공통 Post 도메인을 사용하되 무무 텍스트와 작성 이력 등의 정책은 Crew에 유지했습니다

    • MumuText
    • MumuPostWriteHistory
    • MumuPostPolicyPort
  • 기존 Playground에서 Crew 서버의 Internal API를 통해 조회하던 모임 관련 기능들도 통합 서버 구조에 맞게 내부 Port / Adapter 기반으로 변경해주었어요

    • 모임 신청자
    • 모임 참여자
    • 관련 모임 사용자
    • Crew 통계
    • 활동 기수 기준 모임 정보
  • 게시글 / 댓글의 멘션 및 관련 알림은 Post 도메인에서 알림 구현체를 직접 참조하지 않고 PostNotificationSenderPort를 통해 발송하도록 구성했습니다

  • 관련 Storage 영역도 함께 이관하여 Post / Comment / Like / Report와 무무 관련 Entity, Repository, Adapter를 통합 레포 구조에 맞게 추가해주었어요

@huncozyboy huncozyboy linked an issue Sep 5, 2026 that may be closed by this pull request
4 tasks
@coderabbitai

coderabbitai Bot commented Sep 5, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 133 files, which is 33 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: d69a9871-577a-4786-b391-7e64b74d8888

📥 Commits

Reviewing files that changed from the base of the PR and between 7760504 and 7adc8ac.

📒 Files selected for processing (133)
  • api/src/main/java/org/sopt/makers/api/controller/admin/crew/mumu/AdminMumuTextApi.java
  • api/src/main/java/org/sopt/makers/api/controller/admin/crew/mumu/AdminMumuTextController.java
  • api/src/main/java/org/sopt/makers/api/controller/admin/crew/mumu/AdminMumuTextSuccessCode.java
  • api/src/main/java/org/sopt/makers/api/controller/admin/crew/mumu/dto/MumuTextResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/admin/crew/mumu/dto/MumuTextStatus.java
  • api/src/main/java/org/sopt/makers/api/controller/admin/crew/mumu/dto/MumuTextUpsertRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/CommentApi.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/CommentController.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/CommentSuccessCode.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/CommentPageResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/CommentResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/CommentWriterResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/CreateCommentRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/CreateCommentResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/GetCommentsRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/MentionCommentRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/ReplyResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/ReportCommentResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/ToggleCommentLikeResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/UpdateCommentRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/comment/dto/UpdateCommentResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/PostApi.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/PostController.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/PostSuccessCode.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/CreatePostRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/CreatePostResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/GetPostsRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/MentionPostRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/MumuHomeResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/MumuPostResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/MumuTextResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostCountResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostDetailResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostListItemResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostMeetingImageResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostMeetingResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostPageMetaResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostPageResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostViewCountResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/PostWriterResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/ReportPostResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/TogglePostLikeResponse.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/UpdatePostRequest.java
  • api/src/main/java/org/sopt/makers/api/controller/crew/post/dto/UpdatePostResponse.java
  • clients/build.gradle.kts
  • clients/src/main/java/org/sopt/makers/clients/notification/PostNotificationSenderAdapter.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/MeetingUser.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/adapter/MeetingUserAdapter.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/adapter/PlaygroundMeetingAdapter.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/MeetingActiveGenerationPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/MeetingApplyRepositoryPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/MeetingRepositoryPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/MemberRepositoryPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/PlaygroundCrewStatsPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/PlaygroundMeetingApplicantPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/PlaygroundMemberCrewPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/meeting/port/PlaygroundRelatedMeetingUserPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/MumuPostWriteHistory.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/MumuText.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/exception/MumuException.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/exception/MumuFailure.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/port/MumuPostWriteHistoryRepositoryPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/port/MumuTextRepositoryPort.java
  • domain/domain-crew/src/main/java/org/sopt/makers/domain/crew/mumu/service/MumuTextService.java
  • domain/domain-crew/src/test/java/org/sopt/makers/domain/crew/meeting/adapter/PlaygroundMeetingAdapterTest.java
  • domain/domain-crew/src/test/java/org/sopt/makers/domain/crew/mumu/service/MumuTextServiceTest.java
  • domain/domain-playground/build.gradle.kts
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/MeetingPostContext.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/Post.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/PostCategory.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/PostContentType.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/PostMeetingImage.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/PostNotification.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/PostWriter.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/adapter/PlaygroundPostQueryAdapter.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/comment/PostComment.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/exception/PostException.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/exception/PostFailure.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/like/PostCommentLike.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/like/PostLike.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/MeetingPostAccessPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/MumuPostPolicyPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PlaygroundPostQueryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostCommentLikeRepositoryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostCommentReportRepositoryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostCommentRepositoryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostLikeRepositoryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostNotificationSenderPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostReportRepositoryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/port/PostRepositoryPort.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/report/PostCommentReport.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/report/PostReport.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/service/PostCommentService.java
  • domain/domain-playground/src/main/java/org/sopt/makers/domain/playground/post/service/PostService.java
  • domain/domain-playground/src/test/java/org/sopt/makers/domain/playground/post/PostTest.java
  • domain/domain-playground/src/test/java/org/sopt/makers/domain/playground/post/adapter/PlaygroundPostQueryAdapterTest.java
  • domain/domain-playground/src/test/java/org/sopt/makers/domain/playground/post/comment/PostCommentTest.java
  • domain/domain-playground/src/test/java/org/sopt/makers/domain/playground/post/service/PostCommentServiceTest.java
  • domain/domain-playground/src/test/java/org/sopt/makers/domain/playground/post/service/PostServiceTest.java
  • domain/domain-user/src/main/java/org/sopt/makers/domain/user/adapter/PlaygroundPostUserAdapter.java
  • domain/domain-user/src/main/java/org/sopt/makers/domain/user/port/PlaygroundPostUserPort.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/adapter/MeetingActiveGenerationAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/adapter/MeetingApplyRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/adapter/MeetingRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/adapter/MemberRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/adapter/MumuPostPolicyAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/adapter/MumuPostWriteHistoryRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/adapter/MumuTextRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/entity/MumuPostWriteHistoryEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/entity/MumuTextEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/repository/MumuPostWriteHistoryJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/mumu/repository/MumuTextJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/repository/MeetingApplyJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/crew/repository/MeetingMemberJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/MeetingPostAccessAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/PostCommentLikeRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/PostCommentReportRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/PostCommentRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/PostLikeRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/PostReportRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/adapter/PostRepositoryAdapter.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/entity/PostCommentEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/entity/PostCommentLikeEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/entity/PostCommentReportEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/entity/PostEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/entity/PostLikeEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/entity/PostReportEntity.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/repository/PostCommentJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/repository/PostCommentLikeJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/repository/PostCommentReportJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/repository/PostJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/repository/PostLikeJpaRepository.java
  • storage/src/main/java/org/sopt/makers/storage/db/playground/post/repository/PostReportJpaRepository.java

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


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.

@huncozyboy huncozyboy self-assigned this Sep 5, 2026
@huncozyboy huncozyboy added 🎁 feature 새로운 기능을 개발하거나 추가, 변경할 경우 💛 crew labels Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💛 crew 🎁 feature 새로운 기능을 개발하거나 추가, 변경할 경우

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat-crew: 게시글 관련 API 이관

1 participant