Skip to content

#421 [Feat] 유저 일별 활동 트래킹(DAU/MAU 기반) 인프라 구축 - #422

Merged
si-zero merged 5 commits into
devfrom
feat/#421
Aug 30, 2026
Merged

#421 [Feat] 유저 일별 활동 트래킹(DAU/MAU 기반) 인프라 구축#422
si-zero merged 5 commits into
devfrom
feat/#421

Conversation

@si-zero

@si-zero si-zero commented Aug 30, 2026

Copy link
Copy Markdown
Member

#️⃣ 연관된 이슈

📝 작업 내용

✨ Feat

내용 파일
DAU/MAU 집계용 UserDailyActivity 엔티티/저장소 추가 (UPSERT 쿼리 포함) UserDailyActivity.java, UserDailyActivityRepository.java
JwtFilter에서 인증 요청마다 active 기록 JwtFilter.java, SecurityConfig.java
로그인 성공 시점에 logged_in 기록 AuthService.java

📌 공유 사항

  1. user_daily_activities 테이블은 유저-날짜 조합당 row 1개(UNIQUE(user_id, activity_date))로, logged_in/active 두 불리언 플래그만 관리합니다. 신규 테이블이라 ddl-auto: update로 자동 생성됩니다.
  2. active는 인증된 API를 하나라도 호출하면 그날 true가 되고(JwtFilter에서 기록), logged_in은 소셜/로컬 로그인 성공 시점에만 true가 됩니다(AuthService.issueTokensAndBuildResponse, refresh()는 제외).
  3. 동시 요청에도 안전하도록 Postgres INSERT ... ON CONFLICT ... DO UPDATE(UPSERT)로 구현했습니다.
  4. 활동 기록은 대시보드 집계용 부가 기능이라, JwtFilter에서 기록 실패 시 예외를 삼키고 로그만 남겨 인증 흐름 자체는 절대 막지 않도록 했습니다.
  5. 이 PR엔 아직 조회 API가 없습니다 — 이어지는 이슈에서 GET /api/v1/admin/dashboard/* API들이 이 테이블을 사용합니다.

✅ 체크리스트

  • Reviewer에 팀원들을 선택했나요?
  • Assignees에 본인을 선택했나요?
  • 컨벤션에 맞는 Type을 선택했나요?
  • Development에 이슈를 연동했나요?
  • Merge 하려는 브랜치가 올바르게 설정되어 있나요?
  • 컨벤션을 지키고 있나요?
  • 로컬에서 실행했을 때 에러가 발생하지 않나요?
  • 팀원들에게 PR 링크 공유를 했나요?

📸 스크린샷

./gradlew test 전체 통과. JwtFilterTest 신규 추가(활동 기록 성공/실패 시 요청 흐름 유지), OAuthServiceTest에 로그인 시 markLoggedIn 호출 검증 추가.

💬 리뷰 요구사항

  1. JwtFilter가 매 인증 요청마다 UPSERT 쿼리를 하나 더 던지는 구조인데, 트래픽이 많아지면 부담이 될 수 있어 나중에 인메모리 캐시로 당일 재기록을 스킵하는 최적화가 필요할지 미리 의견 부탁드립니다.

@si-zero si-zero self-assigned this Aug 30, 2026
@si-zero si-zero added the ✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다. label Aug 30, 2026
@si-zero si-zero linked an issue Aug 30, 2026 that may be closed by this pull request
4 tasks
@si-zero
si-zero merged commit 7aaa1f4 into dev Aug 30, 2026
1 check passed
@si-zero
si-zero deleted the feat/#421 branch August 30, 2026 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feat (기능 추가) 새로운 기능을 추가할 때 사용합니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: 유저 일별 활동 트래킹(DAU/MAU 기반) 인프라 구축

1 participant