Skip to content

feat: 최근활동 기록 기반 정비 - #103

Merged
chazy-d merged 7 commits into
developfrom
feature/recent-activity-foundation
Aug 4, 2026
Merged

feat: 최근활동 기록 기반 정비#103
chazy-d merged 7 commits into
developfrom
feature/recent-activity-foundation

Conversation

@chazy-d

@chazy-d chazy-d commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

🔗 관련 이슈 (Related Issue)

📝 작업 내용

최근활동 로그가 회원과 게스트 행위자를 같은 모델로 기록할 수 있도록 정비했습니다.
이후 프로젝트, 일정, 파일, 피드백 도메인에서 공통 서비스를 호출해 활동을 남길 수 있는 기반을 마련했기에 다음 pr에서 각도메인에 연결 및 테스트를 진행할 것 같습니다.

주요 검토 파일

최근활동 모델 및 생성 흐름

  • src/main/java/com/slatto/domain/notification/model/ActivityActor.java - 회원, 게스트, 시스템 행위자 모델 추가
  • src/main/java/com/slatto/domain/notification/service/ActivityMessageFactory.java - 활동 유형별 표시 문구 생성 분리
  • src/main/java/com/slatto/domain/notification/service/ActivityLogService.java - 공통 활동 로그 저장 흐름 및 게스트 피드백 기록 추가
  • src/main/java/com/slatto/domain/feedback/service/FeedbackService.java - 게스트 피드백 등록 시 최근활동 생성 연결

검증 코드

  • src/test/java/com/slatto/domain/notification/model/ActivityActorTest.java - 행위자 타입과 ID 조합 검증
  • src/test/java/com/slatto/domain/notification/service/ActivityMessageFactoryTest.java - 활동 문구 생성 검증
  • src/test/java/com/slatto/domain/notification/service/ActivityLogServiceIntegrationTest.java - 회원 파일 활동과 게스트 피드백 활동 저장 검증

1. 회원과 게스트 행위자 기록 통합

ActivityActor 모델을 통해 회원, 게스트, 시스템 이벤트의 행위자 정보를 한 방식으로 전달합니다.

  • 회원 활동: actorUserId만 저장
  • 게스트 활동: actorGuestId만 저장
  • 시스템 활동: 사용자/게스트 ID 없이 저장
  • 타입과 ID 조합이 맞지 않으면 생성 시점에 예외 처리

2. 최근활동 문구 생성 분리

도메인 서비스가 화면 표시 문구를 직접 조합하지 않도록 ActivityMessageFactory로 분리했습니다.

  • 참여자 합류
  • 프로젝트 진행 단계 변경 및 정보 수정
  • 일정 등록 및 수정
  • 공지 등록
  • 파일 등록
  • 영상 피드백 등록

후속 도메인 연결 시에는 활동 타입과 필요한 값만 전달하면 같은 형식의 문구를 생성할 수 있게 분리했다고 보면 될 것 같습니다.

3. 게스트 피드백 최근활동 기록

공유 링크를 통해 작성된 게스트 피드백도 CLIENT_REVIEWER 행위자로 기록되도록 연결했습니다.

프로젝트 파일, 영상 CRUD, 최근활동 조회 API는 이 작업 범위에 포함하지 않았습니다.

4. 테스트 및 검증

단위 테스트

  • 회원/게스트 행위자 생성 시 올바른 ID만 저장되는지 검증
  • 행위자 타입과 ID 조합이 잘못된 경우 차단되는지 검증
  • 활동 유형별 표준 문구가 일관되게 생성되는지 검증

통합 테스트

  • 회원이 파일을 등록했을 때 activity_log에 사용자 행위자, 대상 파일, 문구가 저장되는지 검증
  • 게스트가 영상 피드백을 등록했을 때 게스트 행위자와 영상 대상 정보가 저장되는지 검증

아직 실제 도메인에서 연결하는 흐름을 테스트한것은 아니기에 테스트 내용이 많지 않습니다.

./gradlew compileJava
./gradlew test

두 명령 모두 통과했습니다.


✅ PR 체크리스트

  • 최근활동 기반 모델과 공통 생성 흐름을 추가했습니다.
  • 게스트 피드백 활동 기록을 연결했습니다.
  • 단위 테스트와 통합 테스트를 추가했습니다.
  • ./gradlew compileJava./gradlew test를 통과했습니다.

Summary by CodeRabbit

  • 새 기능

    • 활동 로그에서 회원, 게스트, 시스템 행위자 정보를 구분해 표시합니다.
    • 게스트의 영상 피드백 댓글 활동도 로그로 기록됩니다.
    • 프로젝트, 일정, 공지, 파일, 영상 피드백 관련 활동 메시지가 일관된 형식으로 제공됩니다.
  • 버그 수정

    • 행위자 유형에 맞지 않는 식별자 입력을 검증합니다.

@chazy-d chazy-d self-assigned this Aug 4, 2026
@chazy-d chazy-d added feature 새로운 기능 추가 refactor 기능 변경 없는 코드 개선 labels Aug 4, 2026
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

활동 로그가 ActivityActorActivityLogTargetType을 사용하도록 변경되었습니다. 메시지 생성은 ActivityMessageFactory로 분리되었습니다. ActivityLogService는 회원과 게스트의 활동 로그를 저장하며, 관련 단위 및 통합 테스트가 추가되었습니다.

Changes

활동 로그 행위자 및 메시지 처리

Layer / File(s) Summary
행위자 및 활동 로그 계약
src/main/java/com/slatto/domain/notification/model/ActivityActor.java, src/main/java/com/slatto/domain/notification/entity/ActivityLog.java
ActivityActor가 회원, 게스트, 시스템 행위자의 식별자와 표시 이름을 검증합니다. ActivityLog.create(...)ActivityActorActivityLogTargetType을 받습니다.
메시지 생성 및 로그 저장 흐름
src/main/java/com/slatto/domain/notification/service/ActivityMessageFactory.java, src/main/java/com/slatto/domain/notification/service/ActivityLogService.java
활동별 메시지 생성을 ActivityMessageFactory로 위임합니다. ActivityLogServiceActivityActor.user(...)ActivityActor.clientReviewer(...)를 사용합니다. 게스트 영상 피드백 로그 생성 메서드와 게스트 null 검증을 추가합니다.
행위자 및 서비스 통합 검증
src/test/java/com/slatto/domain/notification/model/ActivityActorTest.java, src/test/java/com/slatto/domain/notification/service/ActivityMessageFactoryTest.java, src/test/java/com/slatto/domain/notification/service/ActivityLogServiceIntegrationTest.java
행위자 식별자 규칙, 8개 메시지 생성 결과, 회원 파일 활동 및 게스트 영상 피드백 로그 저장 결과를 검증합니다.

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

Possibly related issues

Possibly related PRs

  • SLAT-TO/SLAT-TO-BE#101ActivityLogActivityLogService의 기존 타입화 흐름을 확장합니다.
  • SLAT-TO/SLAT-TO-BE#87 — 알림 도메인의 타입화된 대상 타입과 중앙 생성 서비스 변경과 연결됩니다.

Suggested reviewers: kohseoyoung, young0206, sangwon02

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.13% 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 Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/main/java/com/slatto/domain/notification/service/ActivityLogService.java (1)

205-228: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

게스트 피드백 등록 경로에서 createGuestVideoFeedbackCommentedLog를 호출하세요.

FeedbackService.createFeedback가 게스트 피드백을 저장하지만, 운영 코드에는 createGuestVideoFeedbackCommentedLog 호출이 없습니다. 성공 트랜잭션 안에서 저장된 피드백의 영상 제목과 검증된 Guest, 영상 ID를 사용한 로그 생성을 추가하세요. 실제 피드백 등록 유스케이스 테스트도 추가해 이 경로가 최근활동 레코드를 저장하도록 검증하세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/com/slatto/domain/notification/service/ActivityLogService.java`
around lines 205 - 228, 게스트 피드백 저장 성공 경로인 FeedbackService.createFeedback에
createGuestVideoFeedbackCommentedLog 호출을 추가하세요. 저장된 피드백에서 영상 제목을 가져오고, 검증된
Guest와 영상 ID를 전달해 동일한 성공 트랜잭션 안에서 최근활동 로그를 생성하도록 연결하세요. 실제 게스트 피드백 등록 유스케이스 테스트를
추가해 해당 로그 레코드가 저장되는지 검증하세요.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In
`@src/main/java/com/slatto/domain/notification/service/ActivityLogService.java`:
- Around line 205-228: 게스트 피드백 저장 성공 경로인 FeedbackService.createFeedback에
createGuestVideoFeedbackCommentedLog 호출을 추가하세요. 저장된 피드백에서 영상 제목을 가져오고, 검증된
Guest와 영상 ID를 전달해 동일한 성공 트랜잭션 안에서 최근활동 로그를 생성하도록 연결하세요. 실제 게스트 피드백 등록 유스케이스 테스트를
추가해 해당 로그 레코드가 저장되는지 검증하세요.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5b212e44-ea92-4b36-9b54-2b3e56117d4e

📥 Commits

Reviewing files that changed from the base of the PR and between 7362ae2 and 507ae7f.

📒 Files selected for processing (7)
  • src/main/java/com/slatto/domain/notification/entity/ActivityLog.java
  • src/main/java/com/slatto/domain/notification/model/ActivityActor.java
  • src/main/java/com/slatto/domain/notification/service/ActivityLogService.java
  • src/main/java/com/slatto/domain/notification/service/ActivityMessageFactory.java
  • src/test/java/com/slatto/domain/notification/model/ActivityActorTest.java
  • src/test/java/com/slatto/domain/notification/service/ActivityLogServiceIntegrationTest.java
  • src/test/java/com/slatto/domain/notification/service/ActivityMessageFactoryTest.java

@chazy-d
chazy-d merged commit b92bc06 into develop Aug 4, 2026
2 checks passed
@guingguing
guingguing deleted the feature/recent-activity-foundation branch August 11, 2026 10:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 새로운 기능 추가 refactor 기능 변경 없는 코드 개선

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants