Skip to content

20260226 #236 관리자 페이지 통계 대시보드 실시간 활동 로그 추가 - #250

Merged
discipline24 merged 7 commits into
mainfrom
20260226_#236_관리자_페이지_통계_대시보드_실시간_활동_로그_추가
Feb 27, 2026

Hidden character warning

The head ref may contain hidden characters: "20260226_#236_\uad00\ub9ac\uc790_\ud398\uc774\uc9c0_\ud1b5\uacc4_\ub300\uc2dc\ubcf4\ub4dc_\uc2e4\uc2dc\uac04_\ud65c\ub3d9_\ub85c\uadf8_\ucd94\uac00"
Merged

discipline24 merged 7 commits into
mainfrom
20260226_#236_관리자_페이지_통계_대시보드_실시간_활동_로그_추가

Conversation

@discipline24

@discipline24 discipline24 commented Feb 27, 2026 •

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 사용자 활동 추적 시스템 도입 (출석, 게시글, 댓글, 좋아요, 베팅, 로그인 등)
    • 실시간 활동 모니터링 기능 추가
  • 개선 사항

    • 보안 설정 및 세션 관리 개선
    • 프론트엔드 설정 단순화

회원가입, 로그인, 베팅 참여, 게시물 작성, 출석 체크인에 이벤트 추가 완료
백테스팅, 댓글, 좋아요 이벤트 추가 고려
QrStreamService에 SseService 코드 사용 고려
백테스팅, 퀀트봇에 이벤트 발생 고려
QrStreamService에 SseService 코드 사용 고려
yml 수정에 따른 securityConfig 수정
oauth2를 더이상 쓰지 않으므로 변경
targetId String -> UUID로 변경
회원가입 시 출석 type 사용 오류 수정
@discipline24
discipline24 requested a review from Kosw6 as a code owner February 27, 2026 17:42
@discipline24
discipline24 merged commit 5c824ee into main Feb 27, 2026
1 check was pending
@coderabbitai

coderabbitai Bot commented Feb 27, 2026 •

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f598835 and b442969.

📒 Files selected for processing (22)
  • .github/workflows/deploy.yml
  • backend/src/main/java/org/sejongisc/backend/activity/entity/ActivityLog.java
  • backend/src/main/java/org/sejongisc/backend/activity/entity/ActivityType.java
  • backend/src/main/java/org/sejongisc/backend/activity/event/ActivityEvent.java
  • backend/src/main/java/org/sejongisc/backend/activity/listener/ActivityEventListener.java
  • backend/src/main/java/org/sejongisc/backend/activity/repository/ActivityLogRepository.java
  • backend/src/main/java/org/sejongisc/backend/attendance/controller/AttendanceController.java
  • backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceService.java
  • backend/src/main/java/org/sejongisc/backend/attendance/service/QrTokenStreamService.java
  • backend/src/main/java/org/sejongisc/backend/betting/controller/BettingController.java
  • backend/src/main/java/org/sejongisc/backend/betting/service/BettingService.java
  • backend/src/main/java/org/sejongisc/backend/board/repository/PostRepository.java
  • backend/src/main/java/org/sejongisc/backend/board/service/PostInteractionService.java
  • backend/src/main/java/org/sejongisc/backend/board/service/PostServiceImpl.java
  • backend/src/main/java/org/sejongisc/backend/common/auth/service/AuthService.java
  • backend/src/main/java/org/sejongisc/backend/common/config/db/PrimaryDataSourceConfig.java
  • backend/src/main/java/org/sejongisc/backend/common/config/db/StockDataSourceConfig.java
  • backend/src/main/java/org/sejongisc/backend/common/config/security/SecurityConfig.java
  • backend/src/main/java/org/sejongisc/backend/common/sse/SseService.java
  • backend/src/main/java/org/sejongisc/backend/user/service/UserService.java
  • backend/src/main/resources/application-prod.yml
  • backend/src/test/java/org/sejongisc/backend/betting/service/BettingServiceTransactionalTest.java

Walkthrough

활동 이벤트 시스템을 새로 도입하여 사용자 활동을 추적합니다. 여러 도메인 서비스에서 활동 이벤트를 발행하고, 리스너가 이를 수집한 후 저장소에 기록하고 SSE를 통해 대시보드로 전송합니다. GitHub Actions 워크플로우에서 SSH 설정을 환경 변수에서 시크릿으로 이동하고 프론트엔드 URL을 단일화합니다.

Changes

Cohort / File(s) Summary
Activity Event System
backend/src/main/java/org/sejongisc/backend/activity/entity/ActivityLog.java, backend/src/main/java/org/sejongisc/backend/activity/entity/ActivityType.java, backend/src/main/java/org/sejongisc/backend/activity/event/ActivityEvent.java, backend/src/main/java/org/sejongisc/backend/activity/listener/ActivityEventListener.java, backend/src/main/java/org/sejongisc/backend/activity/repository/ActivityLogRepository.java
활동 추적을 위한 새로운 JPA 엔티티(ActivityLog), 열거형(ActivityType), 이벤트 레코드(ActivityEvent), 비동기 리스너(ActivityEventListener), 저장소(ActivityLogRepository) 추가. 일일 방문자 수 및 게시판별 활동 통계 쿼리 포함.
SSE Infrastructure
backend/src/main/java/org/sejongisc/backend/common/sse/SseService.java
채널별 서버 전송 이벤트 관리를 위한 SseService 추가. 구독 관리, 이벤트 전송, 구독자 추적 기능 제공.
Event Publishing in Services
backend/src/main/java/org/sejongisc/backend/attendance/controller/AttendanceController.java, backend/src/main/java/org/sejongisc/backend/attendance/service/AttendanceService.java, backend/src/main/java/org/sejongisc/backend/betting/controller/BettingController.java, backend/src/main/java/org/sejongisc/backend/betting/service/BettingService.java, backend/src/main/java/org/sejongisc/backend/board/service/PostServiceImpl.java, backend/src/main/java/org/sejongisc/backend/board/service/PostInteractionService.java, backend/src/main/java/org/sejongisc/backend/common/auth/service/AuthService.java, backend/src/main/java/org/sejongisc/backend/user/service/UserService.java
여러 서비스에서 ActivityEvent 발행 추가: 출석 체크인, 베팅 참여, 게시글 작성, 댓글 및 좋아요, 로그인, 회원가입. 각 컨트롤러/서비스에서 사용자 이름 전달 및 이벤트 발행 로직 통합.
Configuration & URL Consolidation
backend/src/main/resources/application-prod.yml, backend/src/main/java/org/sejongisc/backend/attendance/service/QrTokenStreamService.java, backend/src/main/java/org/sejongisc/backend/common/config/security/SecurityConfig.java
개발/프로덕션 프론트엔드 URL을 단일 frontend-url 속성으로 통합. QrTokenStreamService에서 다중 프로필 로직 제거. 세션 정책을 IF_REQUIRED에서 STATELESS로 변경.
GitHub Actions Workflow
.github/workflows/deploy.yml
SSH 관련 설정(호스트, 사용자, 키, 포트)을 공개 환경 변수에서 시크릿으로 이동. 레지스트리 참조를 동적으로 변경. 프론트엔드 URL 처리 단순화. 배포 경로 및 인증 방식 업데이트.
Code Cleanup
backend/src/main/java/org/sejongisc/backend/common/config/db/PrimaryDataSourceConfig.java, backend/src/main/java/org/sejongisc/backend/common/config/db/StockDataSourceConfig.java, backend/src/main/java/org/sejongisc/backend/board/repository/PostRepository.java
주석 정리(이모지 제거), 새로운 PostRepository 메서드 findByIdWithBoard 추가로 게시글과 게시판을 한 번의 쿼리로 조회.
Test Updates
backend/src/test/java/org/sejongisc/backend/betting/service/BettingServiceTransactionalTest.java
특정 어설션 비활성화(주석 처리).

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant Controller
    participant Service
    participant EventPublisher
    participant Listener
    participant Repository
    participant SseService
    
    User->>Controller: 활동 수행 (출석/베팅/게시글 등)
    Controller->>Service: 서비스 메서드 호출<br/>(userId, username, request)
    Service->>Service: 비즈니스 로직 처리<br/>(데이터 저장 등)
    Service->>EventPublisher: ActivityEvent 발행<br/>(type, userId, username, ...)
    EventPublisher->>Listener: 트랜잭션 후<br/>ActivityEvent 전달
    Listener->>Repository: ActivityLog 저장
    Repository->>Repository: 활동 로그 기록
    Listener->>SseService: 대시보드 채널로<br/>이벤트 전송
    SseService->>User: SSE를 통해<br/>실시간 알림 전송
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • Kosw6

Poem

🐰 활동의 발자국을 남기고,
이벤트는 흐르고,
SSE가 울리고,
대시보드는 깨어나네!
시크릿은 안전히,
코드는 우아하게! 🎉

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 20260226_#236_관리자_페이지_통계_대시보드_실시간_활동_로그_추가

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 and usage tips.

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.

1 participant