- Carbon overview: fallback to compute from energy_data × emission_factors
when carbon_emissions table is empty
- Energy history: parse start_time/end_time as datetime (was raw string → 500)
- Dashboard generation: dedup by station prefix to prevent inflated totals
(93K → 14.8K kWh)
- Realtime window: already at 20min to cover 15min collector interval
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>