Skip to content

feat: 최근활동 생성 공통 서비스 구현 - #101

Merged
guingguing merged 4 commits into
developfrom
feature/100-activity-log-service
Aug 3, 2026
Merged

feat: 최근활동 생성 공통 서비스 구현#101
guingguing merged 4 commits into
developfrom
feature/100-activity-log-service

Conversation

@guingguing

@guingguing guingguing commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🔗 관련 이슈 (Related Issue)

Closes #100

📝 작업 내용

프로젝트 최근활동을 각 도메인에서 공통으로 생성할 수 있도록 ActivityLogService를 구현했습니다.

최근활동은 개인 알림과 달리 특정 사용자에게 전달되는 데이터가 아니라, 프로젝트 단위로 쌓이는 활동 로그입니다.
각 도메인에서는 ActivityLog 엔티티나 Repository를 직접 사용하지 않고, ActivityLogService의 활동 유형별 메서드만 호출하면 activity_log 테이블에 최근활동이 저장되도록 구성했습니다.

주요 변경 사항

  • 최근활동 타입 enum 추가
  • 최근활동 이동 대상 타입 enum 추가
  • ActivityLog 엔티티 타입 필드 정리
  • ActivityLog 생성 메서드 추가
  • ActivityLogRepository 추가
  • ActivityLogService 추가
  • 최근활동 유형별 생성 메서드 추가
  • 최근활동 문구 생성 로직을 ActivityLogService에서 관리

상세 내용

  1. 최근활동 타입 enum을 추가했습니다.

    ActivityLogType을 추가해 최근활동 유형을 명확히 구분하도록 했습니다.

    지원하는 활동 유형:

    • PROJECT_MEMBER_JOINED
    • PROJECT_STATUS_CHANGED
    • PROJECT_UPDATED
    • SCHEDULE_CREATED
    • SCHEDULE_UPDATED
    • NOTICE_CREATED
    • FILE_UPLOADED
    • VIDEO_FEEDBACK_COMMENTED
  2. 최근활동 이동 대상 타입 enum을 추가했습니다.

    최근활동 클릭 시 프론트에서 이동 대상을 구분할 수 있도록 ActivityLogTargetType을 추가했습니다.

    지원하는 대상 타입:

    • PROJECT
    • SCHEDULE
    • NOTICE
    • FILE
    • VIDEO
  3. ActivityLog 엔티티를 최근활동 타입 기준으로 정리했습니다.

    기존 ActivityLog.type이 사용자 역할 enum인 RoleName을 사용하고 있어, 최근활동 유형을 표현하기에 맞지 않았습니다.
    이를 ActivityLogType으로 변경해 activity_log.type이 실제 활동 유형을 나타내도록 정리했습니다.

  4. 최근활동 저장 Repository를 추가했습니다.

    ActivityLogRepository를 추가해 최근활동 저장을 담당하도록 했습니다.

  5. 최근활동 생성 공통 서비스를 추가했습니다.

    ActivityLogService에서 프로젝트/사용자 검증 후 activity_log에 최근활동을 저장하도록 구성했습니다.

    각 도메인에서는 아래와 같은 메서드만 호출하면 됩니다.

    • createProjectMemberJoinedLog(...)
    • createProjectStatusChangedLog(...)
    • createProjectUpdatedLog(...)
    • createScheduleCreatedLog(...)
    • createScheduleUpdatedLog(...)
    • createNoticeCreatedLog(...)
    • createFileUploadedLog(...)
    • createVideoFeedbackCommentedLog(...)
  6. 최근활동 문구 생성 책임을 ActivityLogService로 모았습니다.

    각 도메인에서 최근활동 문구를 직접 만들지 않고, 필요한 값만 전달하면 ActivityLogService 내부에서 정책서 기준 문구를 생성하도록 했습니다.

    예시:

    • {이름}님이 프로젝트에 합류했어요
    • {이름}님이 프로젝트 정보를 수정했어요
    • {이름}님이 [{일정명}] 일정을 등록했어요
    • {이름}님이 새 공지를 등록했어요
    • {이름}님이 [{파일명}] 파일을 등록했어요
    • {이름}님이 [{영상명}]에 피드백을 남겼어요

참고 사항

  • 이번 PR은 최근활동 “생성 공통 서비스” 구현 범위입니다.
  • 최근활동 조회 API는 후속 작업으로 분리합니다.
  • 실제 각 도메인 코드에 최근활동 생성 메서드를 연결하는 작업도 후속 작업으로 분리합니다.
  • 최근활동은 그룹핑하지 않고 실제 발생한 활동을 그대로 저장합니다.
  • 최근활동은 개인 알림과 달리 읽음/안읽음 상태를 관리하지 않습니다.

✅ PR 체크리스트

  • PR 제목은 커밋 컨벤션을 따랐습니다.
  • 관련 이슈를 연결했습니다.
  • 변경 사항에 대한 테스트를 진행했습니다.

테스트

  • ./gradlew test

Summary by CodeRabbit

  • 새 기능
    • 프로젝트에서 발생하는 주요 활동을 유형별로 기록할 수 있습니다.
    • 멤버 참여, 프로젝트 변경, 일정·공지 등록, 파일 업로드, 영상 피드백 댓글 활동을 지원합니다.
    • 활동 대상 정보를 함께 확인할 수 있어 변경 내역을 추적하기 쉬워졌습니다.
    • 잘못된 입력이나 존재하지 않는 프로젝트·사용자에 대해 명확한 오류가 제공됩니다.

@guingguing
guingguing requested a review from chazy-d August 3, 2026 05:25
@guingguing guingguing self-assigned this Aug 3, 2026
@guingguing guingguing added the feature 새로운 기능 추가 label Aug 3, 2026
@guingguing guingguing linked an issue Aug 3, 2026 that may be closed by this pull request
6 tasks
@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: aac2d802-fd9d-413e-a66c-7fcc4dab3f06

📥 Commits

Reviewing files that changed from the base of the PR and between 4b471bf and 9c7b0f1.

📒 Files selected for processing (5)
  • src/main/java/com/slatto/domain/notification/entity/ActivityLog.java
  • src/main/java/com/slatto/domain/notification/enums/ActivityLogTargetType.java
  • src/main/java/com/slatto/domain/notification/enums/ActivityLogType.java
  • src/main/java/com/slatto/domain/notification/repository/ActivityLogRepository.java
  • src/main/java/com/slatto/domain/notification/service/ActivityLogService.java

📝 Walkthrough

Walkthrough

프로젝트 단위 활동 로그를 위한 타입과 대상 enum, JPA 저장소, ActivityLogService를 추가했습니다. 서비스는 프로젝트 참여, 상태 변경, 수정, 일정·공지·파일·영상 활동 로그를 생성하고 검증 및 저장을 수행합니다.

Changes

활동 로그 생성

Layer / File(s) Summary
활동 로그 계약과 저장소
src/main/java/com/slatto/domain/notification/enums/*, src/main/java/com/slatto/domain/notification/entity/ActivityLog.java, src/main/java/com/slatto/domain/notification/repository/ActivityLogRepository.java
ActivityLog.typeActivityLogType으로 변경했습니다. 활동 유형과 대상 유형 enum을 추가했습니다. 사용자 행위자 기반 create 팩토리 메서드와 저장소를 추가했습니다.
서비스 구성과 공통 로그 저장
src/main/java/com/slatto/domain/notification/service/ActivityLogService.java
트랜잭션 서비스와 공통 프로젝트·사용자 조회 및 입력 검증 로직을 추가했습니다. 프로젝트 참여, 상태 변경, 프로젝트 수정 로그를 저장합니다.
활동별 로그와 메시지 생성
src/main/java/com/slatto/domain/notification/service/ActivityLogService.java
일정, 공지, 파일, 영상 피드백 댓글 로그 생성 메서드를 추가했습니다. 활동별 대상 정보와 표시 메시지를 생성합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: chazy-d, kohseoyoung, young0206

Sequence Diagram(s)

sequenceDiagram
  participant DomainCaller
  participant ActivityLogService
  participant ProjectRepository
  participant UserRepository
  participant ActivityLogRepository
  DomainCaller->>ActivityLogService: createScheduleCreatedLog(...)
  ActivityLogService->>ProjectRepository: 활성 프로젝트 조회
  ActivityLogService->>UserRepository: 활성 사용자 조회
  ActivityLogService->>ActivityLogRepository: ActivityLog 생성 및 저장
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목이 최근활동 생성 공통 서비스 구현이라는 주요 변경 사항을 명확하고 간결하게 설명합니다.
Description check ✅ Passed 관련 이슈, 작업 내용, 주요 변경 사항, 후속 범위, 체크리스트와 테스트 결과를 충실히 포함합니다.
Linked Issues check ✅ Passed 변경 사항이 직접 연결된 이슈 [#100]의 enum, 엔티티, Repository, 서비스와 활동별 생성 메서드 요구사항을 충족합니다.
Out of Scope Changes check ✅ Passed 모든 변경 사항이 [#100]의 최근활동 생성 공통 서비스 범위에 포함되며 관련 없는 변경은 확인되지 않습니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

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.

@chazy-d chazy-d left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

수고하셨습니다! 최근 활동 타입과 문구 생성을 공통 서비스로 모아둔 방향 따라서 이어서 작업 진행하도록 하겠습니다!!

최근 활동 로그 수집 작업 -> 최근 활동 표시 화면

작업 순서로 진행하도록 하겠습니다~

@guingguing
guingguing merged commit 7362ae2 into develop Aug 3, 2026
2 checks passed
@guingguing
guingguing deleted the feature/100-activity-log-service branch August 5, 2026 17:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 새로운 기능 추가

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FEAT: 최근활동 생성 공통 서비스 구현

2 participants