Skip to content

feat(stats): 통계 기간 선택과 유형 리포트 차트 확장 - #226

Merged
1Seob merged 6 commits into
developfrom
feat/stats-period-type-reports
Aug 20, 2026
Merged

feat(stats): 통계 기간 선택과 유형 리포트 차트 확장#226
1Seob merged 6 commits into
developfrom
feat/stats-period-type-reports

Conversation

@1Seob

@1Seob 1Seob commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

📝 요약(Summary)

  • 일·주·월 통계에서 원하는 기간을 선택하고 해당 기간의 주요 지표를 확인할 수 있도록 확장했습니다.
  • 유형 리포트의 관심사별 최근 생성 추이와 활성·누적 통계를 독립된 차트로 제공합니다.

주요 변경사항

  • 일·주·월 통계 조회

    • date, week, month query parameter 기반 기간 선택을 지원합니다.
    • 파라미터가 없으면 KST 현재 기간을 사용하고, 잘못된 형식과 미래 기간은 400 응답으로 차단합니다.
    • 선택 기간을 마지막 지점으로 일간 7일, 주간 5주, 월간 5개월의 시계열을 제공합니다.
    • 선택 기간의 가입자 수, 할당 질문 수, 리포트 생성 수, DAU·WAU·MAU를 요약합니다.
  • 유형 리포트 통계

    • 최근 7일 동안 생성된 COMPLETED 유형 리포트를 관심사별 다중 선 차트로 표시합니다.
    • soft delete되지 않은 활성 COMPLETED 리포트와 재생성 이력을 포함한 전체 누적 생성 수를 별도 막대 차트로 분리합니다.
    • 데이터가 없는 날짜·관심사 조합을 0으로 보정하고 관심사별 표시 순서와 색상을 고정합니다.
    • RELATIONSHIP의 한국어 표시명을 의도한 표현인 관계로 통일합니다.
  • UI

    • 일·주·월 페이지 하단에 기간 선택기와 현재 기간 복귀 링크를 배치합니다.
    • 공통 Thymeleaf fragment와 반응형 CSS로 기간 요약 UI를 통일합니다.
    • 유형 통계 페이지에 최근 추이·활성·누적 통계를 각각 독립된 차트 카드로 구성합니다.
  • 영속성 및 성능

    • type_reports의 완료 이력 날짜·관심사 집계를 위한 PostgreSQL 부분 인덱스를 추가합니다.
    • 선택일의 공유 중인 일간 리포트와 유형 리포트의 활성·누적 집계 조건을 PostgreSQL 통합 테스트로 검증합니다.

검증

  • .\gradlew.bat compileJava 통과
  • 변경된 stats 테스트 8개 클래스, 16개 테스트 통과
  • StatsPeriodResolverTest, 일·주·월·유형 서비스 테스트 통과
  • StatsControllerTemplateTest 통과
  • DailyStatsRepositoryTest, TypeStatsRepositoryTest 통과
  • 실패한 PeakStatsRepositoryTest, TypeStatsRepositoryTest를 단독 재실행해 모두 통과
  • git diff --check 통과

🔗 Related Issue

  • Closes:

💬 공유사항

✅ PR Checklist

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

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

1Seob added 6 commits August 20, 2026 11:32
soft delete된 COMPLETED 이력을 누적·일별 통계에 포함하고 최근 7일의 빈 날짜·관심사를 0으로 보정함
date·week·month 쿼리 파라미터를 ISO 형식으로 해석하고 미래 기간을 차단함. 선택 기간을 끝점으로 일간 7일·주간 5주·월간 5개월 시계열과 요약값을 구성하고 실제
현재 기간을 기준으로 최고 기록 상태를 유지함
일·주·월 통계 페이지 하단에 기간 선택 폼과 현재 기간 복귀 링크를 추가함
현재 활성 COMPLETED 리포트와 재생성 이력을 포함한 전체 누적 생성 수를 별도 집계·ViewModel·차트로 분리함
@1Seob
1Seob merged commit 02d9ab5 into develop Aug 20, 2026
1 check passed
@1Seob
1Seob deleted the feat/stats-period-type-reports branch August 20, 2026 05:28
1Seob added a commit that referenced this pull request Aug 22, 2026
* feat(ai): Ask Chat 예시 질문 10분 로테이션 적용 (#225)

* feat: Ask Chat 예시 질문 결정적 로테이션 추가

사용자 ID와 10분 시간 슬롯을 기준으로 예시 질문을 순환 선택하고 동일 슬롯 안정성 및 경계 동작을 단위 테스트로 검증함

* feat: Ask Chat 홈에 질문 로테이션 적용

AskChatSessionService의 요청별 랜덤 선택을 사용자별 10분 결정적 로테이션으로 교체함

* feat(stats): 통계 기간 선택과 유형 리포트 차트 확장 (#226)

* feat(stats): 유형 리포트 관심사별 일간 집계 추가

soft delete된 COMPLETED 이력을 누적·일별 통계에 포함하고 최근 7일의 빈 날짜·관심사를 0으로 보정함

* feat(stats): 유형 리포트 관심사별 추이 차트 추가

* feat(stats): 통계 조회 기준 기간 선택 지원

date·week·month 쿼리 파라미터를 ISO 형식으로 해석하고 미래 기간을 차단함. 선택 기간을 끝점으로 일간 7일·주간 5주·월간 5개월 시계열과 요약값을 구성하고 실제
현재 기간을 기준으로 최고 기록 상태를 유지함

* feat(stats): 통계 기간 선택 UI와 요약 카드 추가

일·주·월 통계 페이지 하단에 기간 선택 폼과 현재 기간 복귀 링크를 추가함

* feat(stats): 유형 리포트 활성·누적 통계 분리

현재 활성 COMPLETED 리포트와 재생성 이력을 포함한 전체 누적 생성 수를 별도 집계·ViewModel·차트로 분리함

* fix(infra): 테스트 DB 커넥션 풀 연결 한도 초과 수정

* fix(infra): 개발 배포 Secret 파일 전송 방식 적용 (#227)

대용량 Secret을 개별 Base64 파일로 생성해 SCP로 전달하도록 변경함. 원격 복원·권한 제한·임시 파일 정리와 Secret 검증 후 기존 프로세스 종료 순서를 적용함

* fix(report): 유형 리포트 persona 마크업 노출 방지 (#228)

persona 문자열의 비지원 <marks> 태그를 생성·리라이트·저장 단계에서 검증하고, 기존 레거시 데이터는 조회 응답에서 일반 텍스트로 복원함

* feat(admin): 관리자 페이지에 로그 탭과 필터 화면 추가 (#229)

* feat(admin): 로그 조회 공통 기반과 사용자 필터 추가

관리자 로그 조회에 사용할 페이지 응답 DTO와 닉네임·이메일 검색 조건 정규화 및 최신순 정렬 규칙을 추가함. report_generation_logs, crystal_logs,
ask_chat_wallet_logs의 전체 최신순 조회를 지원하도록 created_at·id 복합 인덱스를 Flyway migration으로 추가함

* feat(admin): 리포트 생성 로그 조회 API 추가

report_generation_logs를 사용자 닉네임·이메일로 검색하고 최신순 페이지네이션으로 조회하는 관리자 API를 추가함

* feat(admin): 크리스탈 로그 조회 API 추가

crystal_logs를 사용자 닉네임·이메일로 검색하고 최신순 페이지네이션으로 조회하는 관리자 API를 추가함

* feat(admin): Ask Chat 대화권 로그 조회 API 추가

ask_chat_wallet_logs를 사용자 닉네임·이메일로 검색하고 최신순 페이지네이션으로 조회하는 관리자 API를 추가함

* feat(admin): 관리자 로그 탭과 필터 화면 추가

/admin/tabs/logs에 주요 로그 하위 탭과 닉네임·이메일 필터, 페이지네이션을 연결하고 Ask Chat Wallet 표는 sessionId만 표시하도록 단순화함
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