Refactor/#186 calendar event 리팩토링 및 member 도메인 폴더 생성#192
Refactor/#186 calendar event 리팩토링 및 member 도메인 폴더 생성#192yeongsinkeem merged 3 commits intodev_tempfrom
Conversation
- 기존 토큰에서 member_id를 받아 memberOrg가 존재하는지 확인하는 형태에서, MemberOrgId를 헤더에서 추출해 해당 id로 MemberOrg를 반환하는 방식으로 수정했습니다. - ApiResponse 객체를 만들어 controller에서 공통 형태로 response 반환을 할 수 있도록 했습니다. 현재는 성공했을 경우에 대한 반환 처리만 되어 있어 추후 exception 관련해서도 처리를 해야합니다. - 기존의 Event 폴더 밑에 있던 EventParticipantDto를 member 폴더 밑의 SimpleMemberProfileDto로 변경했습니다. 투표 등 타 도메인에서도 동일한 DTO를 사용하기에 중복 제거를 위해 변경했습니다. - 기존에 EventService에 있던 validateExecutive 등 활동 회원 멤버/운영진 여부 체크 메서드를 MemberOrgValidator 파일로 분리했습니다. 투표 혹은 게시글에서도 해당 기능을 공통적으로 활용해 권한 체크할 예정입니다.
Summary of ChangesHello @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를 리팩토링하여 사용자 경험과 시스템의 확장성을 크게 향상시킵니다. 조직별 사용자 프로필 관리를 위한 Highlights
Changelog
Activity
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this comment.
Code Review
광범위한 리팩토링을 통해 멀티 프로필 아키텍처로 전환한 점이 인상적입니다. 도메인 분리, MemberOrgValidator 및 ApiResponse 도입 등 코드 품질을 높이기 위한 좋은 시도들이 보입니다.
다만, 코드베이스에 주석 처리된 코드가 많이 남아있습니다. 사용하지 않는 코드는 삭제하여 가독성을 높이는 것이 좋겠습니다. 특히 여러 파일과 기능(관리자 대시보드, 마이페이지 일부 기능 등)이 주석 처리되어 비활성화된 것으로 보이는데, 이는 리팩토링의 중요한 부수 효과이므로 팀 내에서 해당 기능들의 복구 계획을 명확히 하는 것이 필요해 보입니다.
몇 가지 중요한 개선점을 아래 리뷰 코멘트로 남겼으니 확인 부탁드립니다. 전반적으로 프로젝트 구조를 개선하는 훌륭한 작업이었습니다.
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)
Member 엔티티에 AccountStatus 타입의 필드가 status와 accountStatus 두 개 중복으로 존재합니다. 이는 코드 전체에서 불일치를 유발할 수 있는 중복입니다. 예를 들어, 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)
QnAPost 엔티티에 private String organization; 필드가 남아있어 중복됩니다. 게시글 작성자인 writer 필드가 MemberOrg 타입을 참조하고 있고, MemberOrg는 이미 Organization 엔티티에 대한 참조를 가지고 있습니다. FreePost와 TipPost에서는 이 부분이 올바르게 리팩토링되었지만 QnAPost는 그렇지 않아 불일치가 발생합니다. 이 필드를 제거하고 관련 로직에서 writer.getOrganization()을 사용하도록 수정해주세요.
private Post type;
src/main/java/org/example/tackit/domain/organization/service/OrganizationService.java (33-65)
createOrg 메소드에서 조직을 생성할 때, 생성자(email로 식별)가 해당 조직의 멤버로 자동 추가되지 않습니다. 이로 인해 생성자 없는 조직이 생기거나, 생성자가 별도로 joinOrg 엔드포인트를 호출해야 하는 혼란스러운 사용자 경험을 유발할 수 있습니다. 조직 생성 트랜잭션 내에서 생성자를 첫 번째 멤버이자, 활성(ACTIVE) 상태의 운영진(EXECUTIVE)으로 자동 추가하는 것을 권장합니다.
src/main/java/org/example/tackit/domain/organization/service/OrganizationService.java (93-94)
orgStatus(isFirstMember ? OrgStatus.ACTIVE : OrgStatus.PENDING) 로직은 조직의 첫 멤버를 즉시 활성 상태로 만들고, 이후 멤버들은 대기 상태로 만드는 중요한 비즈니스 규칙을 담고 있습니다. 향후 유지보수를 위해 이 동작을 설명하는 코드 주석을 추가해주세요.
.orgStatus(isFirstMember ? OrgStatus.ACTIVE : OrgStatus.PENDING) // 최초 가입자는 자동으로 ACTIVE 상태가 됩니다.
There was a problem hiding this comment.
ApiResponse 확인했습니다 !
작업 이어서 진행하다가 해당 부분 관련해서 논의 필요하다면 슬랙 드리겠습니다 👍
이슈 번호
작업 내용