Skip to content

feat(stats): 주요 통계 역대 최고 기록 제공 - #223

Merged
1Seob merged 4 commits into
developfrom
feat/stats-peak-records
Aug 13, 2026
Merged

feat(stats): 주요 통계 역대 최고 기록 제공#223
1Seob merged 4 commits into
developfrom
feat/stats-peak-records

Conversation

@1Seob

@1Seob 1Seob commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

📝 요약(Summary)

  • DAU·WAU·MAU를 포함한 13개 일간·주간·월간 지표의 역대 최고값과 달성 기간을 제공합니다.
  • 페이지마다 전체 이력을 재집계하지 않고, 애플리케이션 시작 시 초기화한 메모리 기록을 기존 차트 조회 결과로 갱신합니다.
  • 각 차트에서 최고 기록, 현재 집계 기간 여부, 기록 없음 상태를 확인할 수 있습니다.

주요 변경사항

  • 최고 기록 관리

    • PeakMetric, PeakStat, PeakStatsStore를 통해 지표와 저장 계약을 정의했습니다.
    • ConcurrentHashMap.compute로 비교와 갱신을 원자적으로 처리합니다.
    • 동률이면 최근 기간을 유지하고 0값은 기록으로 저장하지 않습니다.
  • 초기 집계

    • 애플리케이션 시작 시 단일 PostgreSQL 쿼리로 13개 지표의 역대 기록을 집계합니다.
    • KST 기준 일·주·월 경계, DAU·WAU·MAU 고유 사용자 수, 월간 리포트 V1·V2 합산을 적용했습니다.
    • 초기화 실패가 애플리케이션 기동 실패로 이어지지 않도록 격리했습니다.
  • 실행 중 갱신

    • 기존 일간·주간·월간 차트 조회 결과를 PeakStatsTracker에서 비교해 추가 전체 기간 쿼리 없이 기록을 갱신합니다.
    • 최고값, 달성 기간 라벨, 현재 기간 여부를 각 ViewModel에 제공합니다.
  • 화면 표시

    • 13개 차트 헤더에 최고 기록 배지를 추가했습니다.
    • 공통 Thymeleaf fragment와 반응형 CSS로 일관된 표시를 제공합니다.
    • 현재 기간기록 없음 상태를 구분합니다.

검증

  • .\gradlew.bat compileJava 통과
  • InMemoryPeakStatsStoreTest 8개 통과
  • PeakStatsInitializerTest 2개 통과
  • PeakStatsTrackerTest 5개 통과
  • 일간·주간·월간 통계 서비스 테스트 통과
  • PeakStatsRepositoryTest 2개 통과 (Testcontainers PostgreSQL)
  • .\gradlew.bat processResources 통과
  • StatsControllerTemplateTest 4개 통과
  • git diff --check 통과

참고 / 리스크

  • 필요 시 공유 저장소로 전환할 수 있도록 저장 계약을 인터페이스로 분리했습니다.

🔗 Related Issue

  • Closes:

💬 공유사항

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • PR 제목을 커밋 메시지 컨벤션에 맞게 작성했습니다.

1Seob added 4 commits August 13, 2026 16:59
DAU·WAU·MAU 등 13개 지표의 최고값과 달성 기간 모델 추가, PeakStatsStore 계약과 ConcurrentHashMap 기반 원자적 갱신 구현
13개 일·주·월 지표의 단일 PostgreSQL 집계와 KST 기간 경계·COMPLETED 상태·고유 사용자·V1/V2 합산 규칙 적용, ApplicationRunner 기반
메모리 적재 및 초기 집계 실패 격리
기존 일간·주간·월간 차트 집계 결과를 재사용해 메모리 최고 기록을 갱신하고, 최고값과 달성 기간을 ViewModel에 제공함
일간·주간·월간 13개 차트에 최고값과 달성 기간 배지를 추가하고, 현재 기간 및 기록 없음 상태를 공통 Thymeleaf fragment로 표시함
@1Seob
1Seob merged commit a42318b into develop Aug 13, 2026
1 check passed
@1Seob
1Seob deleted the feat/stats-peak-records branch August 13, 2026 14:14
@1Seob 1Seob mentioned this pull request Aug 13, 2026
1 task
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