feat(planner): EV anti-fragmentace + 3f power floor (Fix B)

3f floor (phases>=3 → 6A×fáze×230 ≈4140W, ruší 1f trickle) + block-start penalta
(asset_ev_charger.planner_ev_start_penalty_czk V108, default 0=no-op). Golden gate
zelená (363 passed). Postaveno paralelním worktree agentem, zvalidováno sériově.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-14 22:55:17 +02:00
parent fd7012e23d
commit a32839bf67
6 changed files with 134 additions and 10 deletions

View File

@@ -141,6 +141,13 @@ async def _load_site_context(site_id: int, db):
SimpleNamespace(
max_charge_power_w=int(v["max_charge_power_w"]),
min_power_w=int(v.get("min_power_w") or 0),
# phases / planner_ev_start_penalty_czk: parametry wallboxu pro
# anti-fragmentaci EV v solver_v2 (Fix B). Default phases=3 (typický
# 3f wallbox), start penalta 0 = no-op (golden-safe).
phases=int(v.get("phases") or 3),
planner_ev_start_penalty_czk=float(
v.get("planner_ev_start_penalty_czk") or 0.0
),
battery_capacity_kwh=float(v["battery_capacity_kwh"]),
default_target_soc_pct=float(v["default_target_soc_pct"]),
)
@@ -150,6 +157,8 @@ async def _load_site_context(site_id: int, db):
SimpleNamespace(
max_charge_power_w=0,
min_power_w=0,
phases=3,
planner_ev_start_penalty_czk=0.0,
battery_capacity_kwh=1.0,
default_target_soc_pct=80.0,
)