You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
일별 통계(GET /api/v1/statistics/daily)의 todos는 지금 그날 계획된 투두 전부와 그날 타이머를 실행한 다른 날짜 투두를 함께 반환하고 있습니다. 화면에는 완료된 투두만 표시하기로 해서, 조회 날짜에 계획된 투두 중 완료된 항목만 반환하도록 바꿉니다. 타이머 기록이 없어도 완료된 투두라면 포함합니다.
월별 통계(GET /api/v1/statistics/summary)의 activeDayCount는 지금 투두가 계획된 날짜를 세고 있어서, 반복 일정만 있어도 미래 날짜까지 활동일로 잡힙니다. 실제로 타이머를 실행했거나 투두를 완료한 날짜만 세고, 같은 날 활동이 여러 개여도 1일로 집계합니다.
기록 시간(totalRecordMinutes)은 투두의 기록 시간이므로 완료된 투두의 기록만 집계합니다. 일별 기록 시간은 todos에 표시된 actualTimeMinutes의 합계, 월별 기록 시간은 일별 기록 시간의 합계로 계산해 화면에 보이는 숫자와 맞춥니다. 일평균(averageRecordedMinutes)은 기록 시간이 1분 이상인 날짜 수로 나눕니다.
미래 날짜 투두를 오늘 실행해서 완료하면 투두 조회에서는 원래 날짜에 완료로 표시되고 있어서, 기획과 협의해 통계도 모두 원래 계획된 날짜(인스턴스 날짜, 타이머 기록의 targetDate) 기준으로 통일하기로 했습니다. 지금 기록 시간은 타이머를 실제로 실행한 시각(endedAt/startedAt) 기준이라, 같은 화면에서 숫자가 맞도록 기록 시간도 함께 계획된 날짜 기준으로 바꿉니다.
데이터 저장 방식(타이머·투두 완료·홈 조회)과 DB 스키마는 변경하지 않고 통계 계산만 수정합니다.
Todo ✔️
일별 todos를 그날 계획된 투두 중 해당 날짜 인스턴스가 완료된 항목만 반환하도록 변경, 다른 날짜 투두를 타이머 기록으로 추가하는 분기 제거
일별 투두별 actualTimeMinutes를 (todoId, targetDate) 기준 타이머 기록 합계로 변경
일별·월별 totalRecordMinutes, averageRecordedMinutes를 targetDate 기준으로 집계
일별 totalRecordMinutes를 완료된 투두의 actualTimeMinutes 합계로, 월별 totalRecordMinutes를 일별 기록 시간의 합계로 변경 (완료되지 않은 투두의 기록 제외)
월별 averageRecordedMinutes의 분모를 기록 시간이 1분 이상인 날짜 수로 변경
월별 activeDayCount를 측정이 끝난 타이머 기록의 targetDate와 완료된 인스턴스 날짜의 중복 없는 날짜 수로 변경, 미래 날짜 투두를 미리 실행·완료한 경우도 해당 계획 날짜로 집계
targetDate가 없는 기존 타이머 기록은 startedAt의 사용자 시간대 날짜로 대체
StatisticsDailyResponse, StatisticsSummaryResponse와 통계 Docs의 Swagger 설명을 변경된 기준에 맞게 수정
Activity