tliu93
d35ac7d752
M6-T07: add metering billing engine + period job + summary + recompute
- app/services/energy_cost.py: register_at (register values at a UTC boundary),
compute_period (register deltas x active-version strategy, snapshot price +
contract_version_id, immutable unless overwrite), compute_closed_periods
(bounded lookback), recompute_range (explicit overwrite), summarize
(sum net + standing fees month/30 - heffingskorting year/365).
- Missing tibber price -> skip; missing reading -> degraded (zeroed amounts,
null version), consistently on both create and recompute paths.
- main.py: 1-minute energy-cost job (existing jobs/MQTT untouched). Tests added.
2026-06-23 22:26:56 +02:00
..
2026-06-21 21:20:28 +02:00
2026-06-21 22:27:07 +02:00
2026-06-23 20:43:46 +02:00
2026-06-13 15:20:50 +02:00
2026-06-23 21:19:25 +02:00
2026-06-22 20:11:54 +02:00
2026-06-22 14:17:59 +02:00
2026-06-12 23:33:08 +02:00
2026-06-21 22:08:55 +02:00
2026-06-21 22:08:55 +02:00
2026-06-13 15:20:50 +02:00
2026-06-21 21:38:22 +02:00
2026-06-12 16:57:54 +02:00
2026-06-13 15:20:50 +02:00
2026-06-23 21:52:57 +02:00
2026-06-23 22:26:56 +02:00
2026-06-23 20:33:35 +02:00
2026-06-23 20:33:35 +02:00
2026-06-22 20:11:54 +02:00
2026-06-12 16:50:05 +02:00
2026-04-20 11:48:48 +02:00
2026-06-12 16:50:05 +02:00
2026-06-21 21:20:28 +02:00
2026-06-12 19:11:13 +02:00
2026-06-22 13:03:50 +02:00
2026-06-22 13:03:50 +02:00
2026-06-22 20:45:47 +02:00
2026-06-22 13:24:11 +02:00
2026-06-22 13:03:50 +02:00
2026-06-22 15:06:30 +02:00
2026-06-23 21:52:57 +02:00
2026-06-12 16:50:05 +02:00
2026-06-23 20:58:34 +02:00
2026-06-23 20:58:34 +02:00
2026-06-13 15:20:50 +02:00
2026-06-13 15:20:50 +02:00
2026-06-13 15:20:50 +02:00
2026-06-23 21:35:29 +02:00
2026-06-23 21:35:29 +02:00
2026-06-13 15:20:50 +02:00
2026-06-22 12:45:50 +02:00