diff --git a/layer-admin/src/main/java/org/layer/admin/retrospect/controller/dto/RetrospectOverviewResponse.java b/layer-admin/src/main/java/org/layer/admin/retrospect/controller/dto/RetrospectOverviewResponse.java index 4a78020b..8decfa36 100644 --- a/layer-admin/src/main/java/org/layer/admin/retrospect/controller/dto/RetrospectOverviewResponse.java +++ b/layer-admin/src/main/java/org/layer/admin/retrospect/controller/dto/RetrospectOverviewResponse.java @@ -4,6 +4,7 @@ public record RetrospectOverviewResponse( long createdRetrospectCount, long completedRetrospectCount, double averageCompletionRate, - double averageRetrospectLength + double averageRetrospectLength, + double averageWritingTimeMinutes ) { } diff --git a/layer-admin/src/main/java/org/layer/admin/retrospect/repository/AdminRetrospectAnswerRepository.java b/layer-admin/src/main/java/org/layer/admin/retrospect/repository/AdminRetrospectAnswerRepository.java index 35b65d41..8aa6300f 100644 --- a/layer-admin/src/main/java/org/layer/admin/retrospect/repository/AdminRetrospectAnswerRepository.java +++ b/layer-admin/src/main/java/org/layer/admin/retrospect/repository/AdminRetrospectAnswerRepository.java @@ -59,6 +59,9 @@ SELECT COALESCE(AVG(LENGTH(a.answerContent)), 0) List findAllByEventTimeBetweenAndAnswerEndTimeIsNotNull( LocalDateTime startTime, LocalDateTime endTime); + List findAllByAnswerEndTimeBetweenAndAnswerStartTimeIsNotNullAndAnswerEndTimeIsNotNull( + LocalDateTime startTime, LocalDateTime endTime); + void deleteByMemberIdAndSpaceIdAndRetrospectId( Long memberId, Long spaceId, Long retrospectId ); diff --git a/layer-admin/src/main/java/org/layer/admin/retrospect/service/AdminRetrospectService.java b/layer-admin/src/main/java/org/layer/admin/retrospect/service/AdminRetrospectService.java index a4d8871d..f1f6f0f8 100644 --- a/layer-admin/src/main/java/org/layer/admin/retrospect/service/AdminRetrospectService.java +++ b/layer-admin/src/main/java/org/layer/admin/retrospect/service/AdminRetrospectService.java @@ -76,12 +76,20 @@ public RetrospectOverviewResponse getRetrospectOverview(LocalDateTime startDate, double averageRetrospectLength = adminRetrospectAnswerRepository.findAverageRetrospectLengthBetween( startDate, endDate); + List completedAnswerHistories = + adminRetrospectAnswerRepository.findAllByAnswerEndTimeBetweenAndAnswerStartTimeIsNotNullAndAnswerEndTimeIsNotNull( + startDate, endDate); + double averageWritingTimeMinutes = completedAnswerHistories.stream() + .mapToLong(AdminRetrospectAnswerHistory::getAnswerTime) + .average() + .orElse(0.0); return new RetrospectOverviewResponse( createdRetrospectCount, completedRetrospectCount, averageCompletionRate, - averageRetrospectLength + averageRetrospectLength, + averageWritingTimeMinutes ); }