46c8057155
Markiert im 31d-Diagramm die Tage rot, an denen das E-Auto geladen wurde: Leistung (Feld 'leistung', W) lag laenger als LADEN_MIN_HOURS (Default 2h) ununterbrochen ueber LADEN_THRESHOLD_KW (Default 11 kW). - Erkennung serverseitig per Flux stateDuration auf den Sekundendaten (24h Vorlauf fuer ueber Mitternacht laufende Ladungen an der Monatsgrenze) - /api/laden?month=YYYY-MM, Ergebnis gecacht (abgeschlossene Monate dauerhaft, laufender Monat 5 min) -> ~15s nur beim ersten Aufruf - Markierung wird asynchron nachgeladen, Balken erscheinen sofort - Schwelle/Dauer per Env (LADEN_THRESHOLD_KW, LADEN_MIN_HOURS) einstellbar - BarChart: optionales highlight-Set faerbt passende Balken Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
29 lines
990 B
TypeScript
29 lines
990 B
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { fetchLadetage, LADEN_THRESHOLD_KW, LADEN_MIN_HOURS } from '@/lib/laden';
|
|
|
|
// GET /api/laden?month=YYYY-MM
|
|
// Liefert die Tage (Tages-Anfangs-Zeitstempel ms), an denen das E-Auto geladen wurde.
|
|
export async function GET(request: NextRequest) {
|
|
const month = request.nextUrl.searchParams.get('month');
|
|
if (!month || !/^\d{4}-\d{2}$/.test(month)) {
|
|
return NextResponse.json(
|
|
{ success: false, error: 'Parameter month=YYYY-MM erforderlich.' },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
|
|
try {
|
|
const days = await fetchLadetage(month);
|
|
return NextResponse.json(
|
|
{ success: true, days, thresholdKw: LADEN_THRESHOLD_KW, minHours: LADEN_MIN_HOURS },
|
|
{ headers: { 'Cache-Control': 'no-store' } }
|
|
);
|
|
} catch (error) {
|
|
console.error('Laden detection error:', error);
|
|
return NextResponse.json(
|
|
{ success: false, error: 'Fehler bei der Lade-Erkennung.' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|