feat: implement analytics endpoints (task 28)

- Created analytics service with summary, trends, comparison, and aggregated data methods
- Implemented 5 analytics endpoints: summary, trends, comparison, aggregated, and CSV export
- Added time series data with day/week/month interval support
- Implemented period-over-period comparison metrics with percentage changes
- Added CSV export functionality using json2csv
- Updated frontend analytics service to unwrap API responses
- Fixed chart components to work with new data structure (reportCount, eventCount, litterCollected)
- Updated TypeScript types to match backend API structure
- All endpoints tested and verified working

Requirements satisfied: 5.1, 5.2, 5.3, 5.4, 5.5
This commit is contained in:
2025-11-17 00:13:07 +00:00
parent ea08bf4289
commit d91a13da60
16 changed files with 1051 additions and 78 deletions

View File

@@ -149,12 +149,14 @@ export interface AnalyticsSummary {
totalReports: number;
totalEvents: number;
totalUsers: number;
totalLitterCollected?: number; // in kilograms
periodComparison?: {
reports: number; // percentage change
events: number;
users: number;
};
totalLitterCollected: number; // in kilograms
reportsByType: Record<string, number>;
reportsByQuantity: Record<string, number>;
verifiedReports: number;
cleanedReports: number;
activeUsers: number;
upcomingEvents: number;
completedEvents: number;
}
export interface DateRange {
@@ -164,20 +166,19 @@ export interface DateRange {
export interface TimeSeriesDataPoint {
date: string;
reports: number;
events?: number;
reportCount: number;
eventCount: number;
litterCollected: number;
}
export interface LitterTypeDistribution {
type: LitterType;
type: string;
count: number;
percentage: number;
}
export interface QuantityAggregation {
quantity: QuantityLevel;
level: string;
count: number;
percentage: number;
}
// External environmental data types