doc - plan explain
This commit is contained in:
33
.cursor/rules/plan-explain-bundle.mdc
Normal file
33
.cursor/rules/plan-explain-bundle.mdc
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
description: Jak z DB vytáhnout snapshot plánu (vysvětlení „proč je plán takový“) bez zbytečných tokenů
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# Vysvětlení plánu z databáze (tokenová efektivita)
|
||||
|
||||
Když uživatel ptá na **důvod tvaru plánu** (např. nejbližších **6 hodin**, nabíjení/vybíjení, export, EV, TČ, ceny), **nejprve** si stáhni jeden balík z DB — **nevymýšlej dotazy znovu od nuly**.
|
||||
|
||||
## 1) Primární zdroj (doporučeno)
|
||||
|
||||
```sql
|
||||
SELECT ems.fn_plan_explain_bundle(<site_id>, 6);
|
||||
```
|
||||
|
||||
- Druhý argument = počet hodin od **začátku aktuálního 15min slotu** (UTC, stejně jako `planning_engine._current_slot_start`).
|
||||
- Vrací **jeden JSONB**: aktivní `planning_run`, `planning_interval` jen v okně, `site_operating_mode`, `asset_battery`, `site_grid_connection`, `asset_heat_pump`, otevřené `ev_session`, poslední řádky `forecast_correction_log`, překrývající se `site_override`, metadata + krátký `ai_readme` s odkazy na kód.
|
||||
|
||||
Pokud `error = no_active_plan`, v odpovědi uveď že aktivní plán v DB není (404 i u API `/plan/current`).
|
||||
|
||||
## 2) Co z JSONu číst při odpovědi
|
||||
|
||||
- **Proč baterie / síť**: `intervals_next_window` → `battery_setpoint_w`, `grid_setpoint_w`, `effective_buy_price` / `effective_sell_price`, `is_predicted_price`, vstupy `load_baseline_w`, `pv_*_forecast_*_w`, výstup `pv_a_curtailed_w`.
|
||||
- **Provozní rámec**: `operating_mode.mode_code` (AUTO vs CHARGE_CHEAP vs …) — LP constraints v `solve_dispatch()`.
|
||||
- **Limity**: `site_grid_connection`, `asset_battery` (`min_soc_percent`, `reserve_soc_percent`, `usable_capacity_wh`, degradace).
|
||||
- **EV deadline**: `ev_sessions_open` + sloupce `target_deadline` / `target_soc_pct` v kontextu intervalů (`ev1_setpoint_w`, `ev2_setpoint_w`).
|
||||
- **Rolling vs daily**: `active_planning_run.run_type`, `triggered_by`, `forecast_correction_factor`, `replan_from`, `soc_at_replan_wh`.
|
||||
- **Váhy LP podle vzdálenosti od začátku horizontu**: u každého intervalu je `hours_from_plan_horizon_start`; mapování 0–36h / 36–72h / 72–96h je v `ai_readme` a v `CLAUDE.md`.
|
||||
|
||||
## 3) Volitelně (UI stejné jako dashboard)
|
||||
|
||||
REST `GET /api/v1/sites/{site_id}/plan/current` vrací širší horizont než 6 h; pro **vysvětlování** preferuj `fn_plan_explain_bundle`, aby výstup byl úzký a jednorázový.
|
||||
Reference in New Issue
Block a user