Skip to content

[Feature] 홈 요약 카운트 API 추가 #161

Description

@redjungi09

작업 내용

홈 화면 상단 요약 타일 4개에 필요한 카운트를 한 번에 내려주는 GET /me/summary 를 추가한다.

필드 의미
treatment_record_count 내 시술 기록 수
analyzed_record_count 분석이 성공한 시술 기록 수 (record 기준 distinct)
saved_style_count 저장한 후보 스타일 수
shared_record_count 살아있는 공유에 포함된 시술 기록 수 (record 기준 distinct)

shared_record_count 기준:

SELECT count(DISTINCT sr.record_id)
FROM share_records sr
JOIN shares s ON s.share_id = sr.share_id
WHERE s.user_id = :userId
  AND s.status = 'ACTIVE'
  AND s.expires_at > now();

작업 목적

이 타일을 채우는 집계 엔드포인트가 없어서 화면이 목록 API 를 조합해 숫자를 만들고 있고, 그 결과 두 칸이 잘못 나온다.

공유 카운트가 링크 수를 세고 있다. 타일 라벨은 시술 기록을 가리키는데 실제로는 shares 행 수가 표시된다. 링크 하나가 기록 여러 개를 담을 수도, 기록 없이 후보 스타일만 담을 수도 있고, 같은 기록으로 링크를 여러 번 만들 수도 있어 두 숫자는 단위가 다르다. 실사용 계정에서 시술 기록 14건에 "공유 중 16건" 이 뜨는 상태다 (기록 기준으로 세면 5건).

분석 카운트를 만들 방법이 없다. 분석 조회는 GET /treatment-records/{recordId}/analyses/latest 뿐이라 기록별 단건만 나온다. 전체를 세려면 기록 수만큼 호출해야 해서 사실상 불가능하고, 현재 0 으로 표시된다.

집계 규칙을 서버 한 곳에 두면 화면마다 정의가 갈리는 것도 막는다.

체크리스트

  • GET /me/summary 추가 (ApiResponse<T> 래퍼, 인증 필수)
  • shared_record_countstatus=ACTIVE AND expires_at > now 인 공유 기준 distinct
  • analyzed_record_count 도 record 기준 distinct (한 기록에 성공 분석이 여러 건일 수 있음)
  • 카운트 4종을 단일 요청으로 처리 (기록 수만큼 반복 조회 금지)
  • 다른 사용자의 데이터가 섞이지 않는지 검증
  • 링크 여러 개가 같은 기록을 가리킬 때 1 로 세는지 테스트
  • 폐기·만료된 공유의 기록이 빠지는지 테스트
  • 단위 테스트 + 컨트롤러 통합 테스트

참고 자료

없음

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions