From 156741f1ad615dca94d16f763376a289fabbde57 Mon Sep 17 00:00:00 2001 From: Trey t Date: Tue, 16 Dec 2025 17:05:52 -0600 Subject: [PATCH] Remove summary from list API responses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary statistics are now calculated client-side from kanban data. This removes the summary field from MyResidencesResponse and KanbanBoardResponse. Mutation endpoints still return summary via WithSummaryResponse for immediate cache updates. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- internal/dto/responses/residence.go | 2 +- internal/dto/responses/task.go | 2 +- internal/services/residence_service.go | 12 ++---------- internal/services/task_service.go | 8 ++------ 4 files changed, 6 insertions(+), 18 deletions(-) diff --git a/internal/dto/responses/residence.go b/internal/dto/responses/residence.go index 6e6611b..ac16a40 100644 --- a/internal/dto/responses/residence.go +++ b/internal/dto/responses/residence.go @@ -64,9 +64,9 @@ type TotalSummary struct { } // MyResidencesResponse represents the response for my-residences endpoint +// NOTE: Summary statistics are calculated client-side from kanban data type MyResidencesResponse struct { Residences []ResidenceResponse `json:"residences"` - Summary TotalSummary `json:"summary"` } // ResidenceWithSummaryResponse wraps ResidenceResponse with TotalSummary for CRUD operations diff --git a/internal/dto/responses/task.go b/internal/dto/responses/task.go index 89b4c1b..83d7d40 100644 --- a/internal/dto/responses/task.go +++ b/internal/dto/responses/task.go @@ -114,11 +114,11 @@ type KanbanColumnResponse struct { } // KanbanBoardResponse represents the kanban board +// NOTE: Summary statistics are calculated client-side from kanban data type KanbanBoardResponse struct { Columns []KanbanColumnResponse `json:"columns"` DaysThreshold int `json:"days_threshold"` ResidenceID string `json:"residence_id"` - Summary *TotalSummary `json:"summary,omitempty"` } // Note: TaskCompletionListResponse pagination removed - returns arrays directly diff --git a/internal/services/residence_service.go b/internal/services/residence_service.go index 5312860..6d917fc 100644 --- a/internal/services/residence_service.go +++ b/internal/services/residence_service.go @@ -88,9 +88,8 @@ func (s *ResidenceService) ListResidences(userID uint) ([]responses.ResidenceRes // This is the "my-residences" endpoint that returns richer data. // The `now` parameter should be the start of day in the user's timezone for accurate overdue detection. // -// NOTE: Summary statistics (TotalTasks, TotalOverdue, etc.) are now calculated client-side -// from kanban data for performance. Only TotalResidences and per-residence OverdueCount -// are returned from the server. +// NOTE: Summary statistics (TotalTasks, TotalOverdue, etc.) are calculated client-side +// from kanban data for performance. Only per-residence OverdueCount is returned from the server. func (s *ResidenceService) GetMyResidences(userID uint, now time.Time) (*responses.MyResidencesResponse, error) { residences, err := s.residenceRepo.FindByUser(userID) if err != nil { @@ -99,12 +98,6 @@ func (s *ResidenceService) GetMyResidences(userID uint, now time.Time) (*respons residenceResponses := responses.NewResidenceListResponse(residences) - // Summary statistics (TotalTasks, TotalOverdue, etc.) are calculated client-side - // from kanban data. We only populate TotalResidences here. - summary := responses.TotalSummary{ - TotalResidences: len(residences), - } - // Get per-residence overdue counts for residence card badges if s.taskRepo != nil && len(residences) > 0 { residenceIDs := make([]uint, len(residences)) @@ -124,7 +117,6 @@ func (s *ResidenceService) GetMyResidences(userID uint, now time.Time) (*respons return &responses.MyResidencesResponse{ Residences: residenceResponses, - Summary: summary, }, nil } diff --git a/internal/services/task_service.go b/internal/services/task_service.go index 723161b..cc79151 100644 --- a/internal/services/task_service.go +++ b/internal/services/task_service.go @@ -116,9 +116,7 @@ func (s *TaskService) ListTasks(userID uint, now time.Time) (*responses.KanbanBo } resp := responses.NewKanbanBoardResponseForAll(board) - // Include summary for dashboard stats - summary := s.getSummaryForUser(userID) - resp.Summary = &summary + // NOTE: Summary statistics are calculated client-side from kanban data return &resp, nil } @@ -145,9 +143,7 @@ func (s *TaskService) GetTasksByResidence(residenceID, userID uint, daysThreshol } resp := responses.NewKanbanBoardResponse(board, residenceID) - // Include summary for dashboard stats - summary := s.getSummaryForUser(userID) - resp.Summary = &summary + // NOTE: Summary statistics are calculated client-side from kanban data return &resp, nil }