localgreenchain/pages/api/agents/transport-tracker/savings.ts
Claude b7332c4c15
Deploy TransportTrackerAgent with REST API endpoints
Add comprehensive API deployment for the TransportTrackerAgent (Agent 2):

- GET/POST /api/agents/transport-tracker - Agent status and control (start/stop/run/pause/resume)
- GET /api/agents/transport-tracker/analytics - Network stats and user-specific analytics
- GET /api/agents/transport-tracker/patterns - Detected inefficiency patterns with filtering
- GET /api/agents/transport-tracker/savings - Carbon savings vs conventional logistics

Features:
- Real-time agent status and metrics monitoring
- User transport analysis with efficiency ratings
- Pattern detection for high-carbon events and cold chain breaks
- Carbon savings calculator with environmental equivalents
2025-11-23 00:24:25 +00:00

89 lines
3.4 KiB
TypeScript

/**
* API Route: TransportTrackerAgent Savings Calculator
* GET /api/agents/transport-tracker/savings - Calculate carbon savings vs conventional logistics
*/
import type { NextApiRequest, NextApiResponse } from 'next';
import { getTransportTrackerAgent } from '../../../../lib/agents/TransportTrackerAgent';
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
if (req.method !== 'GET') {
return res.status(405).json({ success: false, error: 'Method not allowed' });
}
try {
const agent = getTransportTrackerAgent();
const savings = agent.calculateSavingsVsConventional();
const networkStats = agent.getNetworkStats();
if (!networkStats || networkStats.totalEvents === 0) {
return res.status(200).json({
success: true,
data: {
message: 'No transport data available for savings calculation.',
savings: null
}
});
}
// Calculate additional context metrics
const context = {
// Equivalent miles driven by average car (0.404 kg CO2 per mile)
equivalentCarMiles: Math.round(savings.savedKg / 0.404),
// Equivalent trees needed to absorb this CO2 (21 kg per tree per year)
equivalentTreeYears: Math.round((savings.savedKg / 21) * 10) / 10,
// Equivalent gallons of gasoline (8.887 kg CO2 per gallon)
equivalentGallonsSaved: Math.round((savings.savedKg / 8.887) * 10) / 10,
// Equivalent smartphone charges (0.0085 kg CO2 per charge)
equivalentPhoneCharges: Math.round(savings.savedKg / 0.0085)
};
// Generate insights based on performance
const insights: string[] = [];
if (savings.savedPercentage >= 90) {
insights.push('Exceptional performance! Your local supply chain is operating at near-optimal carbon efficiency.');
} else if (savings.savedPercentage >= 70) {
insights.push('Great job! Your local sourcing strategy is significantly reducing carbon emissions.');
} else if (savings.savedPercentage >= 50) {
insights.push('Good progress. There are still opportunities to further reduce your carbon footprint.');
} else if (savings.savedPercentage > 0) {
insights.push('Your local network is making a positive impact. Consider expanding local sourcing to improve further.');
}
if (networkStats.greenTransportPercentage >= 50) {
insights.push(`${networkStats.greenTransportPercentage}% of your transport uses green methods - excellent sustainability focus!`);
}
res.status(200).json({
success: true,
data: {
savings: {
localGreenCarbonKg: savings.localGreenCarbon,
conventionalCarbonKg: savings.conventionalCarbon,
savedKg: savings.savedKg,
savedPercentage: savings.savedPercentage
},
context,
insights,
methodology: {
description: 'Savings calculated by comparing LocalGreenChain transport to conventional supply chain assumptions.',
assumptions: [
'Conventional: Average 1,500 miles transport per item at 0.2 kg CO2/mile',
'LocalGreenChain: Actual tracked distances and transport methods',
'Green methods include: walking, bicycle, electric vehicles, rail'
]
}
}
});
} catch (error: any) {
console.error('Error calculating transport savings:', error);
res.status(500).json({ success: false, error: error.message || 'Internal server error' });
}
}