feat(harness): extract_fixtures --keep-ev — zmrazit EV sessions do fixture
Default zůstává vynulování otevřených EV sessions (historické okno bez session); --keep-ev je zmrazí pro EV scénáře (deadline, měkký cíl, min. výkon wallboxu). meta.keep_ev ve fixture dokumentuje způsob pořízení. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -154,10 +154,12 @@ async def extract(args: argparse.Namespace) -> Path:
|
||||
|
||||
# Determinismus replay:
|
||||
# - SoC/TUV fixujeme do contextu (přepis aktuálních hodnot historickými / extrakčními),
|
||||
# - otevřené EV sessions z doby extrakce nepatří k historickému oknu → vynulovat,
|
||||
# - otevřené EV sessions z doby extrakce nepatří k historickému oknu → default
|
||||
# vynulovat; --keep-ev je zmrazí do fixture (EV scénáře: deadline, měkký cíl),
|
||||
# - operating_mode fixně AUTO (plný solver, srovnatelnost napříč fixtures).
|
||||
ctx["soc_wh"] = soc_wh
|
||||
ctx["ev_sessions"] = []
|
||||
if not args.keep_ev:
|
||||
ctx["ev_sessions"] = []
|
||||
ctx["operating_mode"] = "AUTO"
|
||||
|
||||
fixture = {
|
||||
@@ -172,12 +174,18 @@ async def extract(args: argparse.Namespace) -> Path:
|
||||
"soc_wh": round(soc_wh, 1),
|
||||
"soc_source": soc_source,
|
||||
"tag": args.tag,
|
||||
"keep_ev": bool(args.keep_ev),
|
||||
"extracted_at": datetime.now(tz=PRAGUE).isoformat(),
|
||||
"dsn_host": dsn.split("@")[-1].split("/")[0] if "@" in dsn else "?",
|
||||
"note": (
|
||||
"Vstupy plánovače zmrazené k okamžiku extrakce (context = aktuální konfigurace, "
|
||||
"sloty = fn_load_planning_slots_full nad historickými cenami/forecasty). "
|
||||
"EV sessions vynulovány, operating_mode=AUTO."
|
||||
+ (
|
||||
"EV sessions zmrazeny (--keep-ev)"
|
||||
if args.keep_ev
|
||||
else "EV sessions vynulovány"
|
||||
)
|
||||
+ ", operating_mode=AUTO."
|
||||
),
|
||||
},
|
||||
"context_json": ctx,
|
||||
@@ -209,6 +217,11 @@ def main() -> None:
|
||||
p.add_argument("--day", required=True, help="Pražský den YYYY-MM-DD (začátek okna 00:00)")
|
||||
p.add_argument("--hours", type=int, default=36, help="Délka okna v hodinách (default 36)")
|
||||
p.add_argument("--tag", required=True, help="Krátký popis scénáře (neg_sell_deep, normal, …)")
|
||||
p.add_argument(
|
||||
"--keep-ev",
|
||||
action="store_true",
|
||||
help="Zachovat otevřené EV sessions v contextu (default: vynulovat — historické okno)",
|
||||
)
|
||||
p.add_argument("--dsn", default=None, help="postgresql:// DSN (jinak EMS_DB_DSN / DB_* env)")
|
||||
p.add_argument("--out-dir", default=str(DEFAULT_OUT_DIR), help="Cílový adresář fixtures")
|
||||
args = p.parse_args()
|
||||
|
||||
Reference in New Issue
Block a user