Skip to content

Refactor/#186 calendar event 리팩토링 및 member 도메인 폴더 생성#192

Merged
yeongsinkeem merged 3 commits intodev_tempfrom
feat/#186-calendar-event
Feb 18, 2026
Merged

Refactor/#186 calendar event 리팩토링 및 member 도메인 폴더 생성#192
yeongsinkeem merged 3 commits intodev_tempfrom
feat/#186-calendar-event

Conversation

@tishakong
Copy link
Collaborator

이슈 번호

#186

작업 내용

  • memberRepository와 memberOrgRepository를 auth 밑이 아닌 상위 폴더(member 도메인 폴더)로 이동했습니다.
  • 기존 [FEATURE] 캘린더 일정 생성 #186 에서 작업했던 캘린더 일정 생성 관려 API를 리팩토링 했습니다.
  • 기존 토큰에서 member_id를 받아 memberOrg가 존재하는지 확인하는 형태에서, MemberOrgId를 헤더에서 추출해 해당 id로 MemberOrg를 반환하는 방식으로 수정했습니다.
  • ApiResponse 객체를 만들어 controller에서 공통 형태로 response 반환을 할 수 있도록 했습니다. 현재는 성공했을 경우에 대한 반환 처리만 되어 있어 추후 exception 관련해서도 처리를 해야합니다.
  • 기존의 Event 폴더 밑에 있던 EventParticipantDto를 member 폴더 밑의 SimpleMemberProfileDto로 변경했습니다. 투표 등 타 도메인에서도 동일한 DTO를 사용하기에 중복 제거를 위해 변경했습니다.
  • 기존에 EventService에 있던 validateExecutive 등 활동 회원 멤버/운영진 여부 체크 메서드를 MemberOrgValidator 파일로 분리했습니다. 투표 혹은 게시글에서도 해당 기능을 공통적으로 활용해 권한 체크할 예정입니다.

- 기존 토큰에서 member_id를 받아 memberOrg가 존재하는지 확인하는 형태에서, MemberOrgId를 헤더에서 추출해 해당 id로 MemberOrg를 반환하는 방식으로 수정했습니다.
- ApiResponse 객체를 만들어 controller에서 공통 형태로 response 반환을 할 수 있도록 했습니다. 현재는 성공했을 경우에 대한 반환 처리만 되어 있어 추후 exception 관련해서도 처리를 해야합니다.
- 기존의 Event 폴더 밑에 있던 EventParticipantDto를 member 폴더 밑의 SimpleMemberProfileDto로 변경했습니다. 투표 등 타 도메인에서도 동일한 DTO를 사용하기에 중복 제거를 위해 변경했습니다.
- 기존에 EventService에 있던 validateExecutive 등 활동 회원 멤버/운영진 여부 체크 메서드를 MemberOrgValidator 파일로 분리했습니다. 투표 혹은 게시글에서도 해당 기능을 공통적으로 활용해 권한 체크할 예정입니다.
@tishakong tishakong self-assigned this Feb 17, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @tishakong, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 멀티 프로필 시스템을 도입하고 캘린더 일정 API를 리팩토링하여 사용자 경험과 시스템의 확장성을 크게 향상시킵니다. 조직별 사용자 프로필 관리를 위한 MemberOrg 엔티티를 중심으로 도메인 모델을 재구성하고, API 응답을 표준화하며, 권한 검증 로직을 중앙 집중화하여 코드의 재사용성과 유지보수성을 높였습니다. 이는 향후 다양한 조직 기반 기능 개발의 기반을 마련합니다.

Highlights

  • 멀티 프로필 시스템 도입: 사용자의 조직별 프로필을 관리하는 MemberOrg 엔티티를 도입하여 멀티 프로필 기능을 구현했습니다. 이로써 사용자는 여러 조직에서 각기 다른 닉네임과 역할을 가질 수 있게 됩니다.
  • 캘린더 일정 API 리팩토링: 캘린더 일정 생성 및 관리 API를 리팩토링했습니다. 기존 토큰에서 member_id를 추출하던 방식에서, Active-Profile-Id 헤더를 통해 MemberOrgId를 추출하여 해당 조직 프로필의 컨텍스트를 활용하도록 변경했습니다.
  • 표준화된 API 응답 형식 도입: 컨트롤러에서 일관된 응답 형식을 제공하기 위해 ApiResponse 객체를 도입했습니다. 현재는 성공 응답에 적용되었으며, 향후 예외 처리에도 확장될 예정입니다.
  • 권한 검증 로직 분리: 활동 회원 및 운영진 여부를 확인하는 validateExecutive와 같은 권한 검증 로직을 EventService에서 MemberOrgValidator 파일로 분리하여, 투표나 게시글 등 다른 도메인에서도 재사용할 수 있도록 했습니다.
  • 도메인 모델 재구성 및 패키지 리팩토링: 주요 도메인 엔티티(Member, FreePost, QnAPost, TipPost 등)가 MemberOrg를 참조하도록 변경되었으며, 게시판 관련 패키지명(Free_board -> freeBoard 등)과 상태 관리 Enum(Status -> AccountStatus)이 일관성 있게 리팩토링되었습니다.
Changelog
  • src/main/java/org/example/tackit/common/aop/logging/LoggingAspect.java
    • Updated imports for FreeMemberJPARepository and MemberLogRepository.
    • Commented out the logUserAction method.
  • src/main/java/org/example/tackit/common/dto/ActiveProfile.java
    • Added new annotation @ActiveProfile for method parameters.
  • src/main/java/org/example/tackit/common/dto/ProfileContext.java
    • Added new record ProfileContext to hold a profile ID.
  • src/main/java/org/example/tackit/common/homePopular/HomePopularPostController.java
    • Updated getPopularPosts method to use @ActiveProfile ProfileContext for retrieving the organization ID.
  • src/main/java/org/example/tackit/common/homePopular/HomePopularPostService.java
    • Updated imports.
    • Changed getPopularPosts method signature to accept Long orgId instead of String organization.
    • Introduced new query methods for popular posts.
  • src/main/java/org/example/tackit/config/AdminDataInitializer.java
    • Removed the file.
  • src/main/java/org/example/tackit/config/CommonDataInitializer.java
    • Added new initializer for creating default admin member and school data.
  • src/main/java/org/example/tackit/config/FreeTagInitializer.java
    • Commented out the @Component annotation.
  • src/main/java/org/example/tackit/config/QnATagInitializer.java
    • Commented out the @Component annotation.
  • src/main/java/org/example/tackit/config/Resolver/ProfileContextResolver.java
    • Added new argument resolver for @ActiveProfile annotation.
  • src/main/java/org/example/tackit/config/TipTagInitializer.java
    • Commented out the @Component annotation.
  • src/main/java/org/example/tackit/config/WebConfig.java
    • Added new web configuration to register ProfileContextResolver.
  • src/main/java/org/example/tackit/config/jwt/TokenProvider.java
    • Replaced Status with AccountStatus.
    • Removed role from TokenDto creation and CustomUserDetails constructor.
    • Added generateTokenDtoWithProfile method for profile-specific tokens.
  • src/main/java/org/example/tackit/domain/Free_board/Free_comment/service/FreeCommentService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Free_board/Free_post/repository/FreePostJPARepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Free_board/Free_post/repository/FreePostReportRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Free_board/Free_post/repository/FreeScrapJPARepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Free_board/Free_post/service/FreePostService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Free_board/Free_tag/repository/FreeTagCustomRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Notice_board/Notice_comment/service/NoticeCommentService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Notice_board/Notice_post/service/NoticePostService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/QnA_board/QnA_comment/controller/QnACommentController.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/QnA_board/QnA_comment/service/QnACommentService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/QnA_board/QnA_post/repository/QnAPostRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/QnA_board/QnA_post/service/QnAPostService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Tip_board/Tip_comment/controller/TipCommentController.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Tip_board/Tip_comment/service/TipCommentService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Tip_board/Tip_post/repository/TipPostRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Tip_board/Tip_post/repository/TipScrapRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Tip_board/Tip_post/service/TipPostService.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/Tip_board/Tip_tag/repository/TipTagCustomRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/admin/controller/AdminDashboardController.java
    • Commented out most methods related to DAU/MAU and statistics.
  • src/main/java/org/example/tackit/domain/admin/controller/AdminMemberController.java
    • Commented out most methods related to user management.
  • src/main/java/org/example/tackit/domain/admin/dto/DeletedMemberDTO.java
    • Replaced Status with AccountStatus.
    • Removed nickname field.
  • src/main/java/org/example/tackit/domain/admin/dto/MemberDTO.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/admin/dto/ReportedPostDTO.java
    • Removed organization field.
    • Updated fromEntity to use MemberOrg for writer.
  • src/main/java/org/example/tackit/domain/admin/model/ReportablePost.java
    • Replaced Member with MemberOrg for writer.
    • Removed getOrganization() method.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminFreePostRepository.java
    • Replaced Status with AccountStatus in method signature.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminMemberRepository.java
    • Replaced Status with AccountStatus.
    • Commented out bulkUpdateType and existsByNickname methods.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminQnAPostRepository.java
    • Replaced Status with AccountStatus in method signatures.
  • src/main/java/org/example/tackit/domain/admin/repository/AdminTipPostRepository.java
    • Replaced Status with AccountStatus in method signatures.
  • src/main/java/org/example/tackit/domain/admin/repository/MemberLogRepository.java
    • Renamed from UserLogRepository.java.
    • Commented out DAU/MAU queries.
  • src/main/java/org/example/tackit/domain/admin/service/AdminDashboardService.java
    • Updated imports.
    • Replaced UserLogRepository with MemberLogRepository.
    • Replaced Status with AccountStatus.
    • Commented out DAU/MAU/post count logic.
  • src/main/java/org/example/tackit/domain/admin/service/AdminFreePostService.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/admin/service/AdminMemberService.java
    • Replaced Status with AccountStatus.
    • Commented out getAllMembersOrderByStatus method.
  • src/main/java/org/example/tackit/domain/admin/service/AdminQnAPostService.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/admin/service/AdminTipPostService.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/auth/login/controller/AuthController.java
    • Changed signIn return type to SignInResponse.
    • Commented out find-email and find-password endpoints.
  • src/main/java/org/example/tackit/domain/auth/login/controller/CheckController.java
    • Commented out checkNickname method.
  • src/main/java/org/example/tackit/domain/auth/login/dto/MultiProfileDto.java
    • Added new DTO for multi-profile information.
  • src/main/java/org/example/tackit/domain/auth/login/dto/SignInResponse.java
    • Added new DTO for sign-in response, including multi-profile list.
  • src/main/java/org/example/tackit/domain/auth/login/dto/SignUpDto.java
    • Removed organization-specific fields (nickname, organization, memberRole, memberType, joinedYear).
  • src/main/java/org/example/tackit/domain/auth/login/dto/TokenDto.java
    • Commented out role field.
  • src/main/java/org/example/tackit/domain/auth/login/repository/MemberRepository.java
    • Removed the file.
  • src/main/java/org/example/tackit/domain/auth/login/security/CustomUserDetails.java
    • Removed organization and member type fields from constructor.
    • Simplified authorities to just ROLE_USER.
  • src/main/java/org/example/tackit/domain/auth/login/service/AuthService.java
    • Updated signup and signIn methods to reflect multi-profile changes.
    • Added selectProfile method for profile-specific login.
    • Commented out old find/reset password logic.
  • src/main/java/org/example/tackit/domain/auth/login/service/CheckService.java
    • Commented out isNicknameDuplicated method.
  • src/main/java/org/example/tackit/domain/auth/login/service/CustomUserDetailsService.java
    • Replaced Status with AccountStatus.
    • Simplified authority assignment to ROLE_USER.
  • src/main/java/org/example/tackit/domain/auth/login/service/RejoinCheckService.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/auth/logout/repository/LogoutRepository.java
    • Removed Status import.
  • src/main/java/org/example/tackit/domain/auth/logout/service/WithdrawService.java
    • Removed Status import.
  • src/main/java/org/example/tackit/domain/entity/AccountStatus.java
    • Renamed from Status.java.
  • src/main/java/org/example/tackit/domain/entity/Event.java
    • Added new entity Event for calendar events.
  • src/main/java/org/example/tackit/domain/entity/EventParticipant.java
    • Added new entity EventParticipant for event participants.
  • src/main/java/org/example/tackit/domain/entity/EventScope.java
    • Added new enum EventScope for event visibility.
  • src/main/java/org/example/tackit/domain/entity/FreeComment.java
    • Replaced Member writer with MemberOrg writer.
  • src/main/java/org/example/tackit/domain/entity/FreePost.java
    • Replaced Member writer with MemberOrg writer.
    • Replaced String organization with Organization organization entity.
    • Replaced Status status with AccountStatus accountStatus.
  • src/main/java/org/example/tackit/domain/entity/FreeReport.java
    • Replaced Member member with MemberOrg member.
  • src/main/java/org/example/tackit/domain/entity/FreeScrap.java
    • Replaced Member member with MemberOrg member.
  • src/main/java/org/example/tackit/domain/entity/Member.java
    • Refactored to remove organization-specific fields (nickname, organization, profileImageUrl, memberRole, memberType, joinedYear).
    • Introduced AccountStatus accountStatus field.
    • Commented out calculateYearsOfService, generateMypageResponse, updateNickname, updateProfileImage, deleteProfileImage methods.
  • src/main/java/org/example/tackit/domain/entity/MemberLog.java
    • Replaced direct member/organization fields with Member and MemberOrg entities, and orgName.
  • src/main/java/org/example/tackit/domain/entity/NoticeComment.java
    • Replaced Member writer with MemberOrg writer.
  • src/main/java/org/example/tackit/domain/entity/NoticePost.java
    • Replaced Member writer with MemberOrg writer.
    • Removed String organization field.
  • src/main/java/org/example/tackit/domain/entity/Notification.java
    • Added memberOrgId and fromMemberOrgId fields.
  • src/main/java/org/example/tackit/domain/entity/Org/MemberOrg.java
    • Added new entity MemberOrg for member-organization mapping.
  • src/main/java/org/example/tackit/domain/entity/Org/OrgStatus.java
    • Added new enum OrgStatus for organization status.
  • src/main/java/org/example/tackit/domain/entity/Org/OrgType.java
    • Added new enum OrgType for organization type.
  • src/main/java/org/example/tackit/domain/entity/Org/Organization.java
    • Added new entity Organization for organizations.
  • src/main/java/org/example/tackit/domain/entity/Org/School.java
    • Added new entity School for schools.
  • src/main/java/org/example/tackit/domain/entity/Org/SchoolType.java
    • Added new enum SchoolType for school types.
  • src/main/java/org/example/tackit/domain/entity/QnAComment.java
    • Replaced Member writer with MemberOrg writer.
    • Replaced Status status with AccountStatus accountStatus.
  • src/main/java/org/example/tackit/domain/entity/QnAPost.java
    • Replaced Member writer with MemberOrg writer.
    • Replaced Status status with AccountStatus accountStatus.
  • src/main/java/org/example/tackit/domain/entity/QnAReport.java
    • Replaced Member member with MemberOrg member.
  • src/main/java/org/example/tackit/domain/entity/Report.java
    • Replaced Member reporter with MemberOrg reporter.
  • src/main/java/org/example/tackit/domain/entity/TipComment.java
    • Replaced Member writer with MemberOrg writer.
    • Replaced Status status with AccountStatus accountStatus.
  • src/main/java/org/example/tackit/domain/entity/TipPost.java
    • Replaced Member writer with MemberOrg writer.
    • Removed String organization field.
    • Replaced Status status with AccountStatus accountStatus.
  • src/main/java/org/example/tackit/domain/entity/TipReport.java
    • Replaced Member member with MemberOrg reporter.
  • src/main/java/org/example/tackit/domain/entity/TipScrap.java
    • Replaced Member member with MemberOrg memberOrg.
  • src/main/java/org/example/tackit/domain/event/controller/EventController.java
    • Added new controller for event management.
  • src/main/java/org/example/tackit/domain/event/dto/EventCreateReqDto.java
    • Added new DTO for event creation.
  • src/main/java/org/example/tackit/domain/event/dto/EventDetailResDto.java
    • Added new DTO for event details.
  • src/main/java/org/example/tackit/domain/event/dto/EventSimpleResDto.java
    • Added new DTO for simple event information.
  • src/main/java/org/example/tackit/domain/event/dto/EventUpdateReqDto.java
    • Added new DTO for event updates.
  • src/main/java/org/example/tackit/domain/event/repository/EventRepository.java
    • Added new repository for Event entity.
  • src/main/java/org/example/tackit/domain/event/service/EventService.java
    • Added new service for event logic.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_comment/controller/FreeCommentController.java
    • Renamed package from Free_board to freeBoard.
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_comment/dto/req/FreeCommentCreateDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_comment/dto/req/FreeCommentUpdateDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_comment/dto/resp/FreeCommentRespDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_comment/repository/FreeCommentRepository.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_comment/service/FreeCommentService.java
    • Added new service for free comments.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/controller/FreePostController.java
    • Renamed package from Free_board to freeBoard.
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/dto/request/FreePostReqDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/dto/request/UpdateFreeReqDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/dto/response/FreePopularPostRespDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/dto/response/FreePostRespDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/dto/response/FreeScrapResponseDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/repository/FreeMemberJPARepository.java
    • Renamed package from Free_board to freeBoard.
    • Removed findByEmailAndOrganization method.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/repository/FreePostImageRepository.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/repository/FreePostJPARepository.java
    • Added new repository for FreePost entity.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/repository/FreePostReportRepository.java
    • Added new repository for FreePostReport entity.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/repository/FreeScrapJPARepository.java
    • Added new repository for FreeScrap entity.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/service/FreePostService.java
    • Added new service for free posts.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_post/service/FreePostTagService.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/controller/FreeTagController.java
    • Renamed package from Free_board to freeBoard.
    • Commented out getPostsByTag method.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/dto/response/FreeTagPostResponseDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/dto/response/FreeTagResponseDto.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/repository/FreePostTagMapRepository.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/repository/FreeTagCustomRepository.java
    • Added new repository for FreeTagCustom.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/repository/FreeTagCustomRepositoryImpl.java
    • Renamed package from Free_board to freeBoard.
    • Updated queries to use AccountStatus.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/repository/FreeTagRepository.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/freeBoard/Free_tag/service/FreeTagService.java
    • Renamed package from Free_board to freeBoard.
  • src/main/java/org/example/tackit/domain/member/component/MemberOrgValidator.java
    • Added new component MemberOrgValidator for member organization validation.
  • src/main/java/org/example/tackit/domain/member/dto/SimpleMemberProfileDto.java
    • Added new DTO SimpleMemberProfileDto for simple member profile information.
  • src/main/java/org/example/tackit/domain/member/repository/MemberOrgRepository.java
    • Added new repository for MemberOrg entity.
  • src/main/java/org/example/tackit/domain/member/repository/MemberRepository.java
    • Added new repository for Member entity, replacing the old one.
    • Updated method signatures to use AccountStatus.
  • src/main/java/org/example/tackit/domain/mypage/controller/MemberController.java
    • Commented out the entire controller.
  • src/main/java/org/example/tackit/domain/mypage/controller/MypageFreeController.java
    • Commented out most methods.
  • src/main/java/org/example/tackit/domain/mypage/controller/MypageQnAController.java
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/mypage/controller/MypageTipController.java
    • Commented out most methods.
  • src/main/java/org/example/tackit/domain/mypage/dto/response/MemberMypageResponse.java
    • Commented out the entire DTO.
  • src/main/java/org/example/tackit/domain/mypage/dto/response/QnAMyCommentResponseDto.java
    • No significant functional changes, just formatting.
  • src/main/java/org/example/tackit/domain/mypage/service/MemberScheduler.java
    • Commented out updateSeniorMembers method.
  • src/main/java/org/example/tackit/domain/mypage/service/MemberService.java
    • Commented out the entire service.
  • src/main/java/org/example/tackit/domain/mypage/service/MyPageFreeService.java
    • Commented out getScrapListByMember method.
    • Updated getMyPosts to use AccountStatus.
  • src/main/java/org/example/tackit/domain/mypage/service/MyPageQnAService.java
    • Updated methods to use MemberOrg and AccountStatus.
  • src/main/java/org/example/tackit/domain/mypage/service/MyPageTipService.java
    • Commented out getScrapListByMember method.
    • Updated getMyPosts and getMyComments to use MemberOrg and AccountStatus.
  • src/main/java/org/example/tackit/domain/mypage/service/UpdateMemberService.java
    • Commented out the entire service.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_comment/controller/NoticeCommentController.java
    • Renamed package from Notice_board to noticeBoard.
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_comment/dto/req/NoticeCommentCreateDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_comment/dto/req/NoticeCommentUpdateDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_comment/dto/resp/NoticeCommentRespDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_comment/repository/NoticeCommentRepository.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_comment/service/NoticeCommentService.java
    • Added new service for notice comments.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/controller/NoticePostController.java
    • Renamed package from Notice_board to noticeBoard.
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/dto/request/NoticePostReqDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/dto/request/UpdateNoticeReqDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/dto/response/NoticePostRespDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/dto/response/NoticeScrapRespDto.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/repository/NoticePostImageRepository.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/repository/NoticePostRepository.java
    • Renamed package from Notice_board to noticeBoard.
    • Updated findByOrganization to findByWriterId.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/repository/NoticeScrapRepository.java
    • Renamed package from Notice_board to noticeBoard.
  • src/main/java/org/example/tackit/domain/noticeBoard/Notice_post/service/NoticePostService.java
    • Added new service for notice posts.
  • src/main/java/org/example/tackit/domain/notification/controller/NotificationController.java
    • Updated getAllNotifications to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/notification/repository/NotificationRepository.java
    • Added findAllByMemberIdAndMemberOrgIdOrderByCreatedAtDesc method.
  • src/main/java/org/example/tackit/domain/notification/service/NotificationService.java
    • Updated findAllNotifications to use ProfileContext and MemberOrgRepository.
  • src/main/java/org/example/tackit/domain/organization/controller/OrganizationController.java
    • Added new controller for organization management.
  • src/main/java/org/example/tackit/domain/organization/dto/req/OrgCreateReqDto.java
    • Added new DTO for organization creation.
  • src/main/java/org/example/tackit/domain/organization/dto/req/OrgJoinReqDto.java
    • Added new DTO for organization joining.
  • src/main/java/org/example/tackit/domain/organization/dto/resp/OrgRespDto.java
    • Added new DTO for organization response.
  • src/main/java/org/example/tackit/domain/organization/repository/OrganizationRepository.java
    • Added new repository for Organization entity.
  • src/main/java/org/example/tackit/domain/organization/repository/SchoolRepository.java
    • Added new repository for School entity.
  • src/main/java/org/example/tackit/domain/organization/service/OrganizationService.java
    • Added new service for organization logic.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/controller/QnACommentController.java
    • Added new controller for QnA comments.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/dto/request/QnACommentCreateDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/dto/request/QnACommentUpdateDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/dto/response/QnACommentResponseDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/repository/QnACommentRepository.java
    • Renamed package from QnA_board to qnaBoard.
    • Updated findByWriter to use MemberOrg.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_comment/service/QnACommentService.java
    • Added new service for QnA comments.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/controller/QnAPostController.java
    • Renamed package from QnA_board to qnaBoard.
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/controller/QnAPostScrapController.java
    • Commented out the entire controller.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/dto/request/QnAPostReqDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/dto/request/UpdateQnARequestDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/dto/response/QnACheckScrapResponseDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/dto/response/QnAPopularPostRespDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/dto/response/QnAPostRespDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/dto/response/QnAScrapResponseDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/repository/QnAMemberRepository.java
    • Renamed package from QnA_board to qnaBoard.
    • Removed findByEmailAndOrganization method.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/repository/QnAPostReportRepository.java
    • Renamed package from QnA_board to qnaBoard.
    • Added existsByMemberAndQnaPost(MemberOrg, QnAPost) method.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/repository/QnAPostRepository.java
    • Added new repository for QnAPost entity.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/repository/QnAScrapRepository.java
    • Renamed package from QnA_board to qnaBoard.
    • Commented out findByMemberAndQnaPost_Status method.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/service/QnAPostService.java
    • Added new service for QnA posts.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_post/service/QnAPostTagService.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/controller/QnATagController.java
    • Renamed package from QnA_board to qnaBoard.
    • Commented out getPostsByTag method.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/dto/response/QnATagPostResponseDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/dto/response/QnATagResponseDto.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/repository/QnAPostTagMapRepository.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/repository/QnATagCustomRepository.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/repository/QnATagCustomRepositoryImpl.java
    • Renamed package from QnA_board to qnaBoard.
    • Updated queries to use AccountStatus.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/repository/QnATagRepository.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/qnaBoard/QnA_tag/service/QnATagService.java
    • Renamed package from QnA_board to qnaBoard.
  • src/main/java/org/example/tackit/domain/report/controller/ReportController.java
    • Commented out createReport method.
  • src/main/java/org/example/tackit/domain/report/dto/ReportContentDetailDto.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/report/dto/ReportListDto.java
    • Replaced Status with AccountStatus.
  • src/main/java/org/example/tackit/domain/report/service/ReportService.java
    • Commented out createReport method.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/controller/TipCommentController.java
    • Added new controller for Tip comments.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/dto/req/TipCommentCreateDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/dto/req/TipCommentUpdateDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/dto/resp/TipCommentResponseDto.java
    • Renamed package from Tip_board to tipBoard.
    • Changed id type to Long.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/repository/TipCommentRepository.java
    • Renamed package from Tip_board to tipBoard.
    • Updated findByWriter to use MemberOrg.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_comment/service/TipCommentService.java
    • Added new service for tip comments.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/controller/TipController.java
    • Renamed package from Tip_board to tipBoard.
    • Updated methods to use ProfileContext for organization ID.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/dto/request/TipPostReqDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/dto/request/TipPostUpdateDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/dto/response/TipPopularPostRespDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/dto/response/TipPostRespDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/dto/response/TipScrapRespDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/repository/TipMemberRepository.java
    • Renamed package from Tip_board to tipBoard.
    • Removed findByEmailAndOrganization method.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/repository/TipPostReportRepository.java
    • Renamed package from Tip_board to tipBoard.
    • Updated existsByMemberAndTipPost to existsByReporterAndTipPost(MemberOrg, TipPost).
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/repository/TipPostRepository.java
    • Added new repository for TipPost entity.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/repository/TipScrapRepository.java
    • Added new repository for TipScrap entity.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/service/TipPostService.java
    • Added new service for tip posts.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_post/service/TipTagService.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/controller/TipTagController.java
    • Renamed package from Tip_board to tipBoard.
    • Commented out the entire controller.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/dto/response/TipTagPostResponseDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/dto/response/TipTagResponseDto.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/repository/TipPostTagMapRepository.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/repository/TipTagCustomRepository.java
    • Added new repository for TipTagCustom.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/repository/TipTagCustomRepositoryImpl.java
    • Renamed package from Tip_board to tipBoard.
    • Updated queries to use AccountStatus.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/repository/TipTagRepository.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/domain/tipBoard/Tip_tag/service/TipTagService.java
    • Renamed package from Tip_board to tipBoard.
  • src/main/java/org/example/tackit/global/response/ApiResponse.java
    • Added new generic API response wrapper.
  • src/test/java/org/example/tackit/MemberSchedulerTest.java
    • Commented out the test class.
Activity
  • 이 Pull Request는 이슈 #186에서 시작된 캘린더 일정 생성 API 리팩토링 작업을 이어받아 진행되었습니다.
  • 멀티 프로필 시스템 도입을 위한 광범위한 코드 변경 및 새로운 엔티티, DTO, 서비스, 리졸버 등이 추가되었습니다.
  • 기존 게시판 관련 서비스 및 컨트롤러는 새로운 멀티 프로필 컨텍스트를 사용하도록 업데이트되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

광범위한 리팩토링을 통해 멀티 프로필 아키텍처로 전환한 점이 인상적입니다. 도메인 분리, MemberOrgValidatorApiResponse 도입 등 코드 품질을 높이기 위한 좋은 시도들이 보입니다.
다만, 코드베이스에 주석 처리된 코드가 많이 남아있습니다. 사용하지 않는 코드는 삭제하여 가독성을 높이는 것이 좋겠습니다. 특히 여러 파일과 기능(관리자 대시보드, 마이페이지 일부 기능 등)이 주석 처리되어 비활성화된 것으로 보이는데, 이는 리팩토링의 중요한 부수 효과이므로 팀 내에서 해당 기능들의 복구 계획을 명확히 하는 것이 필요해 보입니다.
몇 가지 중요한 개선점을 아래 리뷰 코멘트로 남겼으니 확인 부탁드립니다. 전반적으로 프로젝트 구조를 개선하는 훌륭한 작업이었습니다.

I am having trouble creating individual review comments. Click here to see my feedback.

src/main/java/org/example/tackit/domain/entity/Member.java (31-35)

high

Member 엔티티에 AccountStatus 타입의 필드가 statusaccountStatus 두 개 중복으로 존재합니다. 이는 코드 전체에서 불일치를 유발할 수 있는 중복입니다. 예를 들어, deactivate() 메소드는 accountStatus를 업데이트하지만, 다수의 Repository 메소드들은 status 필드를 조회하고 있습니다. 이를 status와 같은 단일 필드로 통합하고, 관련 로직에서 일관되게 사용하도록 수정해주세요.

    @Enumerated(EnumType.STRING)
    private AccountStatus status;

    private LocalDateTime createdAt = LocalDateTime.now();

    // private AccountStatus accountStatus;  // 탈퇴 계정을 위해

src/main/java/org/example/tackit/domain/entity/QnAPost.java (35-36)

high

QnAPost 엔티티에 private String organization; 필드가 남아있어 중복됩니다. 게시글 작성자인 writer 필드가 MemberOrg 타입을 참조하고 있고, MemberOrg는 이미 Organization 엔티티에 대한 참조를 가지고 있습니다. FreePostTipPost에서는 이 부분이 올바르게 리팩토링되었지만 QnAPost는 그렇지 않아 불일치가 발생합니다. 이 필드를 제거하고 관련 로직에서 writer.getOrganization()을 사용하도록 수정해주세요.

    private Post type;

src/main/java/org/example/tackit/domain/organization/service/OrganizationService.java (33-65)

high

createOrg 메소드에서 조직을 생성할 때, 생성자(email로 식별)가 해당 조직의 멤버로 자동 추가되지 않습니다. 이로 인해 생성자 없는 조직이 생기거나, 생성자가 별도로 joinOrg 엔드포인트를 호출해야 하는 혼란스러운 사용자 경험을 유발할 수 있습니다. 조직 생성 트랜잭션 내에서 생성자를 첫 번째 멤버이자, 활성(ACTIVE) 상태의 운영진(EXECUTIVE)으로 자동 추가하는 것을 권장합니다.

src/main/java/org/example/tackit/domain/organization/service/OrganizationService.java (93-94)

medium

orgStatus(isFirstMember ? OrgStatus.ACTIVE : OrgStatus.PENDING) 로직은 조직의 첫 멤버를 즉시 활성 상태로 만들고, 이후 멤버들은 대기 상태로 만드는 중요한 비즈니스 규칙을 담고 있습니다. 향후 유지보수를 위해 이 동작을 설명하는 코드 주석을 추가해주세요.

        .orgStatus(isFirstMember ? OrgStatus.ACTIVE : OrgStatus.PENDING) // 최초 가입자는 자동으로 ACTIVE 상태가 됩니다.

@tishakong tishakong changed the title Refactor /#186 calendar event 리팩토링 및 member 도메인 폴더 생성 Refactor #186 calendar event 리팩토링 및 member 도메인 폴더 생성 Feb 17, 2026
@tishakong tishakong changed the title Refactor #186 calendar event 리팩토링 및 member 도메인 폴더 생성 Refactor/#186 calendar event 리팩토링 및 member 도메인 폴더 생성 Feb 17, 2026
@tishakong tishakong changed the base branch from main to dev_temp February 17, 2026 11:46
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ApiResponse 확인했습니다 !
작업 이어서 진행하다가 해당 부분 관련해서 논의 필요하다면 슬랙 드리겠습니다 👍

@yeongsinkeem yeongsinkeem merged commit d5cb5b2 into dev_temp Feb 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants