Commit Graph

38 Commits

Author SHA1 Message Date
Dusan Vojacek
55deae984e HU1 studie: --pure-bess a --rt-eff flagy + výsledky čistého BESS
All checks were successful
CI and deploy / migration-check (push) Successful in 19s
CI and deploy / deploy (push) Successful in 1m5s
Zadání majitele: čistý BESS bez odběru, export povolen, varianta bez ztrát.
Výsledky (365 dní vč. zimy 25/26): arbitráž na spotu +129.4 tis. Kč/rok
(η=1.0) / +110.0 tis. (η=0.9); konzervativně (spready −30 % + deg 0.5)
+63.4 tis. Na fixní smlouvě jen ~24–35 tis. → spot je podmínka smysluplnosti
BESS. Léto ~378 Kč/den, zima ~308.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 22:11:41 +02:00
Dusan Vojacek
826c776c34 HU1: realistická studie přechodu na spot (den-po-dni solver_v2, 2 roky OTE)
scripts/harness/hu1_realistic_eval.py — realistická simulace BESS 128 kWh/36 kW
na spotu místo perfect hindsight: D−1 plán přes solve_dispatch_v2 (informační
množina = ceny zítřka z OTE D−1 13:30), SoC řetězené mezi dny, parametry
baterie/grid z DB site 5 (fn_planning_site_context). Scénáře fix/spot ×
bez/s baterií, Kč/den po měsících a sezónách, roční projekce, citlivosti
(degradace 0.15/0.5/1.0, spread compression −30 %), GAP vs 7denní hindsight.
Varianty běží paralelně (ProcessPoolExecutor). HU1 nemá telemetrii →
parametrizovaný průmyslový odběr (konstanty v hlavičce, přepsat čísly
od majitele); fixní cena = proxy BA81 (--fix-buy).

Výsledky (788 dní 2024-04-14…2026-06-12, 2 zimy): D−B (přechod na spot
s baterií) −163,6 tis. Kč/rok base, konzervativně −110,1 tis.; léto −629,
zima −254 Kč/den, nejhorší měsíc (12/2024) −41 Kč/den — stále úspora.
GAP realistic vs hindsight ≈ 0 (ceny jsou D−1 známé) → dřívější horní mez
byla nadhodnocená sezónností, ne neznalostí budoucnosti.

Doc: docs/studies/hu1-spot-realistic.md (generuje skript, opakovatelné);
README harness doplněn.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 21:56:03 +02:00
Dusan Vojacek
73a665457d 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>
2026-06-12 19:32:06 +02:00
Dusan Vojacek
4d1313a3bc CI: flyway validate ignoruje pending repeatables
Some checks failed
CI and deploy / migration-check (push) Successful in 1m5s
CI and deploy / deploy (push) Failing after 5m50s
Změněná repeatable (R__047 current_a) je proti prod DB 'pending' a validate
bez ignore patternu selhával — design gate počítal jen s checksum mismatch
verzovaných (ty hlídá ci_check_migration_immutability.sh). Ověřeno lokálně
proti prod DB: Successfully validated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 22:30:38 +02:00
Dusan Vojacek
53e9afb513 Investiční studie v2: POTENCIÁLNÍ výroba místo telemetrie (škrcení 81 %!)
Klíčová oprava (postřeh uživatele): při sell<0 lokality škrtí výrobu
(reg 340 / GEN cutoff) — telemetrie ukázala 357 kWh, predikce 1879 kWh
(96 % minut v derating). Studie nyní používají max(skutečnost, kanonický
forecast per pole) v sell<0 slotech.

Nové výsledky (horní meze): BA81 32 kWh +35/+46 Kč/den (výkon 6.25/12 kW);
KV1 25 kWh +20/+22 Kč/den (stará smlouva); HU1 fixní: 75 Kč/den bez sdílení,
149 Kč/den s EDC sdílením @1.5 Kč distribuce (sdílitelných ~49 kWh/den!);
HU1 spot: 372 Kč/den, sdílení +0. + docs/onboarding-wallbox-tc-2026-06.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:24:49 +02:00
Dusan Vojacek
d47f5f8b87 Studie investic: navýšení baterií BA81/KV1 + HU1 BESS (perfect hindsight nad reálnými daty)
battery_upgrade_study.py: oracle MILP po týdenních oknech s navazujícím SoC,
plné limity (síť, BMS, bateriová cesta střídače, AC strop hybridu, GEN 5 kW
mimo AC strop, gen-cutoff shed pole B). Výsledky viz docstring/report.

hu1_bess_study.py: čistý BESS 128 kWh / 36 kW / AC 40 kW; fixní (BA81) vs
spot (site 5) ceny; EDC sdílecí kanál z BA81 neg-sell přebytku s citlivostí
na distribuci. Klíčové: spot nákup ~7× výnosnější než fixní; EDC sdílení
přidává málo (fixní) až nic (spot — neg buy levnější než distribuce).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:07:04 +02:00
Dusan Vojacek
c9409b0666 CI: flyway validate funguje i v container módu runneru
All checks were successful
CI and deploy / migration-check (push) Successful in 34s
CI and deploy / deploy (push) Successful in 1m2s
Root cause rozbitého CI: docker CLI v jobu mluví s hostovským daemonem,
takže -v bind mounty checkoutu ukazovaly na neexistující hostovské cesty
→ flyway dostal prázdné adresáře (applied migration not resolved locally).
Fix: docker create + docker cp (streamuje od klienta) + start/wait/logs.
Cíl /sql, ne /flyway/sql — image tam deklaruje VOLUME, který by kopii zastínil.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 15:58:00 +02:00
Dusan Vojacek
90a85b2727 Fáze 3.2: solver_v2 — čisté ekonomické jádro plánovače
services/planning/solver_v2.py: MILP s objective = reálné peníze (cash +
degradace − terminal SoC value z DB faktoru). Tvrdá pravidla: bilance, SoC
dynamika, breaker (tvrdý), curtail jen A, GEN cutoff binárka, neg-buy/neg-sell
export bloky, export z baterie ⇒ arb floor (p.19), zákaz současného imp+exp,
EV deadline (placený slack 50 Kč/kWh místo infeasibility), TUV look-ahead,
provozní režimy. SQL masky allow_* vědomě ignorovány (heuristika, ne fyzika).

solver_v2_eval.py: v2 vs v1 na golden fixtures (SoC-fér):
  v2 lepší na VŠECH 5 řešitelných (+231.5 Kč ≈ +22 %), extreme_neg_buy den
  v1=INFEASIBLE → v2 OK (−674.5 Kč). Časy 0.4–10 s (2× na time limitu — TODO).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:19:32 +02:00
Dusan Vojacek
ec13c2ad6e Fáze 2/3: rozšířený penalty audit + prototyp čistého jádra
Penalty audit (6 fixtures vč. evening_push a extreme_neg_buy):
- stejných 16/26 penalt mrtvých i na rozšířeném pokrytí
  (vč. EVENING_PUSH_Z_EXPORT_BONUS=2500 na evening-push dni)
- žádná penalta nezpůsobuje Infeasible 2026-05-01 (strukturální problém)
- Σpenalty 7978 Kč vs cashflow −614 Kč

clean_core_prototype.py: čistý ekonomický MILP (bez heuristických penalt) na
IDENTICKÝCH vstupech fixtures vs golden snapshoty současného plánovače:
- lepší na všech 5 řešitelných fixtures, celkem +266 Kč (+25 %) za horizonty
- extrémní den 2026-05-01: current INFEASIBLE → clean OK (−713 Kč zisk)
- férové: současné plány mají hp/ev setpointy 0, čistý dispatch srovnání

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:02:17 +02:00
Dusan Vojacek
9a2229641d Fáze 2.1: 4 zastaralé testy → expectedFailure; +2 fixtures vč. Infeasible reproduceru
Analýza (agent + ručně): všechny 4 failující testy vynucují heuristické chování
před retry-chain v5; současné chování je ekonomicky správné nebo jde o korektní
fallback. Scénáře zachovány s @unittest.expectedFailure + zdůvodněním —
přepsat na ekonomické asserty ve Fázi 3. Suite: 120 passed, 4 xfailed.

Nové golden fixtures home-01: 2026-05-01 extreme_neg_buy (buy −13.26;
ZACHYCENO: solver Infeasible po celém relax řetězci — zmrazeno jako golden
failure snapshot), 2026-05-25 evening_push. Golden replay i penalty audit
umí solver_error výsledky (penalta měnící feasibility se zviditelní).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 13:56:12 +02:00
Dusan Vojacek
0dc2e1df96 Fáze 2.2: penalty audit — 16 z 26 penalt mrtvých na golden fixtures
scripts/harness/penalty_audit.py: vynulování každé ekonomické konstanty →
replay 4 golden fixtures → Δcashflow / Δpenalty / změněné sloty.

Výsledek (penalty_audit_baseline_2026-06-11.txt):
- 16/26 penalt bez jakéhokoli vlivu na 4 reprezentativních scénářích
- aktivní penalty silně interagují (odstranění jedné zvedne binding jiných
  o stovky Kč — POS_SELL_PRE_NEG +481, PRE_NEG_BUY_SOC_CEILING −1480)
- Σpenalty 2140 Kč vs cashflow −440 Kč na baseline

CLAUDE.md: doplněna struktura services/planning/ a harness do tabulky adresářů.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 13:39:55 +02:00
Dusan Vojacek
484f1f85fc Fáze 0: ekonomický regresní harness plánovače
- scripts/harness/extract_fixtures.py: extrakce vstupů solveru
  (fn_planning_site_context + fn_load_planning_slots_full) do JSON fixtures
- backend/tests/test_golden_replay.py: golden gate — replay fixtures přes
  solve_dispatch_two_pass, bit-perfektní diff proti snapshotům (GOLDEN_UPDATE=1
  pro vědomou regeneraci); 4 scénáře: home-01 neg-sell extrém / normal, BA81, KV1
- scripts/harness/economics_report.py: actual (audit_interval) vs oracle MILP
  (perfect hindsight, čistá ekonomika bez heuristických penalt), SoC-adjusted

Baseline home-01 2026-05-12..06-09: GAP 2185 Kč / 29 dní (~27 %).
Známý stav: 4/124 testů test_planning_dispatch_milp.py failuje už na main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 10:48:13 +02:00
Dusan Vojacek
37df01d43c dalsi fix
Some checks failed
CI and deploy / migration-check (push) Failing after 15s
CI and deploy / deploy (push) Has been skipped
2026-06-06 23:12:08 +02:00
Dusan Vojacek
2a963c9793 Branch 1: failed run journal + bisect Infeasible + granulární relaxace (bez vypnutí evening push)
Some checks failed
CI and deploy / migration-check (push) Failing after 14s
CI and deploy / deploy (push) Has been skipped
2026-06-06 22:23:59 +02:00
Dusan Vojacek
8494ea26de nerezta PV A pri prodeji z baterie
Some checks failed
CI and deploy / migration-check (push) Failing after 28s
CI and deploy / deploy (push) Has been skipped
2026-05-26 07:34:52 +02:00
Dusan Vojacek
b8e47e2623 n
Some checks failed
CI and deploy / migration-check (push) Failing after 14s
CI and deploy / deploy (push) Has been skipped
2026-05-25 03:00:51 +02:00
Dusan Vojacek
4beb8cf99f uz sem zaoufalej
Some checks failed
CI and deploy / migration-check (push) Failing after 11s
CI and deploy / deploy (push) Has been skipped
2026-05-25 02:13:41 +02:00
Dusan Vojacek
d89d8b1e3a fix cyklovani
Some checks failed
CI and deploy / migration-check (push) Failing after 26s
CI and deploy / deploy (push) Has been skipped
2026-05-15 17:47:20 +02:00
Dusan Vojacek
30f16a14c2 fix toolu
Some checks failed
CI and deploy / migration-check (push) Failing after 12s
CI and deploy / deploy (push) Has been skipped
2026-05-12 22:41:35 +02:00
Dusan Vojacek
851ec2b637 uprava toolu pro battery sizing
Some checks failed
CI and deploy / migration-check (push) Failing after 22s
CI and deploy / deploy (push) Has been skipped
2026-05-12 21:49:32 +02:00
Dusan Vojacek
5ca5eab1d8 sync reference days
Some checks failed
CI and deploy / migration-check (push) Failing after 14s
CI and deploy / deploy (push) Has been skipped
2026-05-02 14:05:09 +02:00
Dusan Vojacek
343f2f9847 rebuild consumpton baselaline
Some checks failed
CI and deploy / migration-check (push) Failing after 10s
CI and deploy / deploy (push) Has been skipped
2026-05-02 13:56:35 +02:00
Dusan Vojacek
568b584748 kalibrace per pole
Some checks failed
CI and deploy / migration-check (push) Failing after 9s
CI and deploy / deploy (push) Has been skipped
2026-04-22 22:17:28 +02:00
Dusan Vojacek
3cd8e44d37 2vzorky pro korekci predikce
Some checks failed
CI and deploy / migration-check (push) Failing after 11s
CI and deploy / deploy (push) Has been skipped
2026-04-22 21:34:44 +02:00
Dusan Vojacek
d8221e3169 prekopani SELL
Some checks failed
CI and deploy / migration-check (push) Failing after 15s
CI and deploy / deploy (push) Has been skipped
2026-04-19 22:48:51 +02:00
Dusan Vojacek
906eeb1609 flyway check
All checks were successful
CI and deploy / migration-check (push) Successful in 3s
CI and deploy / deploy (push) Successful in 14s
2026-04-19 14:11:57 +02:00
Dusan Vojacek
fd06811753 tune microcycling
All checks were successful
deploy / deploy (push) Successful in 25s
test / smoke-test (push) Successful in 6s
2026-04-13 00:49:36 +02:00
Dusan Vojacek
3b33594354 fix enf load
All checks were successful
test / smoke-test (push) Successful in 3s
deploy / deploy (push) Successful in 14s
2026-04-12 22:31:18 +02:00
Dusan Vojacek
3da738e7e9 battery simulator
All checks were successful
deploy / deploy (push) Successful in 13s
test / smoke-test (push) Successful in 3s
2026-04-12 22:24:32 +02:00
Dusan Vojacek
9ff7c96c22 fix backfill
All checks were successful
deploy / deploy (push) Successful in 20s
test / smoke-test (push) Successful in 5s
2026-04-12 21:38:57 +02:00
Dusan Vojacek
0e5227eb5b OTE backkfill
All checks were successful
deploy / deploy (push) Successful in 24s
test / smoke-test (push) Successful in 6s
2026-04-12 21:32:27 +02:00
Dusan Vojacek
920d9ff40c fix pv vyroby (unsinged)
All checks were successful
deploy / deploy (push) Successful in 35s
test / smoke-test (push) Successful in 7s
2026-04-10 20:30:03 +02:00
Dusan Vojacek
2f7d3c2770 upgrade na pg18
Some checks failed
deploy / deploy (push) Failing after 0s
test / smoke-test (push) Has been cancelled
2026-04-05 10:45:39 +02:00
Dusan Vojacek
dd47a22d61 tune timescale import db
Some checks failed
deploy / deploy (push) Failing after 14s
test / smoke-test (push) Has been cancelled
2026-04-05 10:29:30 +02:00
Dusan Vojacek
38e5af5373 dalsi fixly
Some checks failed
deploy / deploy (push) Failing after 9s
test / smoke-test (push) Has been cancelled
2026-04-05 03:10:01 +02:00
Dusan Vojacek
b46388ac0b import DB z druhe instance
Some checks failed
test / smoke-test (push) Successful in 5s
deploy / deploy (push) Has been cancelled
2026-04-04 23:21:33 +02:00
Dusan Vojacek
9f4126946d second version 2026-04-03 14:23:16 +02:00
Dusan Vojacek
2cc5ccfda7 x 2026-03-20 14:29:43 +01:00