feat: 최근활동 생성 공통 서비스 구현 - #101
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthrough프로젝트 단위 활동 로그를 위한 타입과 대상 enum, JPA 저장소, Changes활동 로그 생성
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: Sequence Diagram(s)sequenceDiagram
participant DomainCaller
participant ActivityLogService
participant ProjectRepository
participant UserRepository
participant ActivityLogRepository
DomainCaller->>ActivityLogService: createScheduleCreatedLog(...)
ActivityLogService->>ProjectRepository: 활성 프로젝트 조회
ActivityLogService->>UserRepository: 활성 사용자 조회
ActivityLogService->>ActivityLogRepository: ActivityLog 생성 및 저장
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
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. Comment |
chazy-d
left a comment
There was a problem hiding this comment.
수고하셨습니다! 최근 활동 타입과 문구 생성을 공통 서비스로 모아둔 방향 따라서 이어서 작업 진행하도록 하겠습니다!!
최근 활동 로그 수집 작업 -> 최근 활동 표시 화면
작업 순서로 진행하도록 하겠습니다~
🔗 관련 이슈 (Related Issue)
Closes #100
📝 작업 내용
프로젝트 최근활동을 각 도메인에서 공통으로 생성할 수 있도록
ActivityLogService를 구현했습니다.최근활동은 개인 알림과 달리 특정 사용자에게 전달되는 데이터가 아니라, 프로젝트 단위로 쌓이는 활동 로그입니다.
각 도메인에서는
ActivityLog엔티티나 Repository를 직접 사용하지 않고,ActivityLogService의 활동 유형별 메서드만 호출하면activity_log테이블에 최근활동이 저장되도록 구성했습니다.주요 변경 사항
ActivityLog엔티티 타입 필드 정리ActivityLog생성 메서드 추가ActivityLogRepository추가ActivityLogService추가ActivityLogService에서 관리상세 내용
최근활동 타입 enum을 추가했습니다.
ActivityLogType을 추가해 최근활동 유형을 명확히 구분하도록 했습니다.지원하는 활동 유형:
PROJECT_MEMBER_JOINEDPROJECT_STATUS_CHANGEDPROJECT_UPDATEDSCHEDULE_CREATEDSCHEDULE_UPDATEDNOTICE_CREATEDFILE_UPLOADEDVIDEO_FEEDBACK_COMMENTED최근활동 이동 대상 타입 enum을 추가했습니다.
최근활동 클릭 시 프론트에서 이동 대상을 구분할 수 있도록
ActivityLogTargetType을 추가했습니다.지원하는 대상 타입:
PROJECTSCHEDULENOTICEFILEVIDEOActivityLog엔티티를 최근활동 타입 기준으로 정리했습니다.기존
ActivityLog.type이 사용자 역할 enum인RoleName을 사용하고 있어, 최근활동 유형을 표현하기에 맞지 않았습니다.이를
ActivityLogType으로 변경해activity_log.type이 실제 활동 유형을 나타내도록 정리했습니다.최근활동 저장 Repository를 추가했습니다.
ActivityLogRepository를 추가해 최근활동 저장을 담당하도록 했습니다.최근활동 생성 공통 서비스를 추가했습니다.
ActivityLogService에서 프로젝트/사용자 검증 후activity_log에 최근활동을 저장하도록 구성했습니다.각 도메인에서는 아래와 같은 메서드만 호출하면 됩니다.
createProjectMemberJoinedLog(...)createProjectStatusChangedLog(...)createProjectUpdatedLog(...)createScheduleCreatedLog(...)createScheduleUpdatedLog(...)createNoticeCreatedLog(...)createFileUploadedLog(...)createVideoFeedbackCommentedLog(...)최근활동 문구 생성 책임을
ActivityLogService로 모았습니다.각 도메인에서 최근활동 문구를 직접 만들지 않고, 필요한 값만 전달하면
ActivityLogService내부에서 정책서 기준 문구를 생성하도록 했습니다.예시:
{이름}님이 프로젝트에 합류했어요{이름}님이 프로젝트 정보를 수정했어요{이름}님이 [{일정명}] 일정을 등록했어요{이름}님이 새 공지를 등록했어요{이름}님이 [{파일명}] 파일을 등록했어요{이름}님이 [{영상명}]에 피드백을 남겼어요참고 사항
✅ PR 체크리스트
테스트
./gradlew testSummary by CodeRabbit