refactor-control-monolith #4
Reference in New Issue
Block a user
Delete Branch "refactor-control-monolith"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hotovo. Shrnutí implementace podle plánu:
deye_battery_charge_discharge_amps() v backend/services/control/setpoints.py – při bat_w > 0 vždy nenulový nabíjecí proud a discharge_a = 0 (i při grid_w < 0).
write_inverter_setpoints v inverter.py to volá místo rozvetvené logiky.
Testy: backend/tests/test_control_deye_passive_pv_charge.py.
V077__planner_safety_charge_asset_battery.sql: planner_daytime_charge_target_enabled, planner_night_baseload_buffer_percent, planner_daytime_charge_price_quantile, planner_charge_commitment_penalty_czk_kwh.
fn_load_planning_slots_full: nové sloupce (noční baseload 20–06 Praha, safety_soc_target_wh, lookahead buy/sell, is_daytime_pv_surplus_slot).
fn_planning_site_context: nové klíče v JSON baterie.
fn_planning_run_commit: ukládá solver_params z p_run_meta->'solver_params'.
fn_planning_run_debug(p_run_id) v R__087_fn_planning_run_debug.sql.
PlanningSlot + _load_slots + _slot_float_nullable.
solve_dispatch: měkké safety deficity, rolling charge commitment, návrat (results, ms, solver_snapshot).
_load_previous_plan_charge_commitment_prev_w, volání z run_rolling_replan.
_save_planning_run(..., solver_snapshot=...) → run_meta["solver_params"].
Testy: backend/tests/test_planning_safety_commitment.py; všechna volání v test_planning_dispatch_milp.py rozšířena o třetí návratovou hodnotu.
docs/04-modules/control.md, docs/04-modules/planning.md, docs/03-data-model.md, docs/07-mcp-postgres-ems.md.
python3 -m pytest na zmíněné testy + test_planning_dispatch_milp.py: 25 passed.
./scripts/flyway_validate_local.sh: u tebe spadlo na neaplikovaných repeatable v lokální DB (očekávatelné bez migrate), ne na syntaxi nových souborů.
Po deployi (MCP user-postgres-ems, nástroj query)
select pr.id, pr.solver_params is not null as has_snap from ems.planning_run pr order by pr.id desc limit 5;
select ems.fn_planning_run_debug(<run_id>);
U slotů s plánem battery_setpoint_w > 0 a grid_setpoint_w < 0: v ems.modbus_command pro register = 108 hodnota > 0 po exportu.
Úkol tune-small-site-terminal-soc (migrace 0.9 na BA81/KV1) je zrušený v souladu s plánem („ne slepé 0.9“); v planning.md je doplněná poznámka, že terminal faktor nestačí sám o sobě.