Add comprehensive analytics system with: - Analytics data layer (aggregator, metrics, trends, cache) - 6 API endpoints (overview, plants, transport, farms, sustainability, export) - 6 chart components (LineChart, BarChart, PieChart, AreaChart, Gauge, Heatmap) - 5 dashboard widgets (KPICard, TrendIndicator, DataTable, DateRangePicker, FilterPanel) - 5 dashboard pages (overview, plants, transport, farms, sustainability) - Export functionality (CSV, JSON) Dependencies added: recharts, d3, date-fns Also includes minor fixes: - Fix EnvironmentalForm spread type error - Fix AgentOrchestrator Map iteration issues - Fix next.config.js image domains undefined error - Add downlevelIteration to tsconfig
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
/**
|
|
* Farm Analytics API
|
|
* Returns vertical farm analytics data
|
|
*/
|
|
|
|
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
import { getFarmAnalytics, AnalyticsFilters, TimeRange } from '../../../lib/analytics';
|
|
|
|
export default async function handler(
|
|
req: NextApiRequest,
|
|
res: NextApiResponse
|
|
) {
|
|
if (req.method !== 'GET') {
|
|
return res.status(405).json({ error: 'Method not allowed' });
|
|
}
|
|
|
|
try {
|
|
const timeRange = (req.query.timeRange as TimeRange) || '30d';
|
|
const farmIds = req.query.farmIds
|
|
? (req.query.farmIds as string).split(',')
|
|
: undefined;
|
|
|
|
const filters: AnalyticsFilters = {
|
|
timeRange,
|
|
farmIds,
|
|
};
|
|
|
|
const farmAnalytics = await getFarmAnalytics(filters);
|
|
|
|
res.status(200).json({
|
|
success: true,
|
|
data: farmAnalytics,
|
|
meta: {
|
|
timeRange,
|
|
filters: { farmIds },
|
|
generatedAt: new Date().toISOString(),
|
|
},
|
|
});
|
|
} catch (error) {
|
|
console.error('Farm analytics error:', error);
|
|
res.status(500).json({
|
|
success: false,
|
|
error: 'Failed to fetch farm analytics',
|
|
});
|
|
}
|
|
}
|