# Discord EV interakce — návrh (fáze A nasazena, fáze B čeká na bot token)

## Fáze A — notifikace po příjezdu (HOTOVO, `dev`)

Píchneš auto → detekce (~60 s) → Tesla SoC → replan → **Discord zpráva**
(webhook `discord_webhook_daily_url`):

```
🔌 Tesla Model Y připojeno
Baterie auta: 55 % → cíl 100 % (~34 kWh)
Deadline: po 15.06. 06:30
Plán nabíjení: 11:30–13:45; 02:15–04:30 — 34.2 kWh, ø 1.85 Kč/kWh
```

Implementace: `_notify_ev_arrival_plan` v `telemetry_collector.py` (sloty
`ev*_setpoint_w > 0` z aktivního plánu shlukované do oken).

## Fáze B — zpětná vazba tlačítkem — ✅ IMPLEMENTOVÁNO (2026-06-12)

**Architektura: Discord BOT přes gateway** — spojení jde Z backendu VEN
(websocket), žádný veřejný endpoint do EMS (na rozdíl od interactions
webhooku). Knihovna `discord.py`, token v `/opt/ems-deploy/.env`.

Zpráva z fáze A dostane tlačítka:
`[Odjezd za 2 h] [za 4 h] [Ráno (typicky)] [Do plna hned] [Nenabíjet]`

Callback tlačítka:
1. `fn_ev_session_apply_patch(site, session, {"target_deadline": now+2h, …})`
   („Do plna hned" navíc `target_soc_pct=100`; „Nenabíjet" `target_soc_pct=soc`),
2. okamžitý `run_rolling_replan` + `export_setpoints` (vzor ev_arrival),
3. bot **edituje původní zprávu** novým plánem (žádný spam).

Bezpečnost: bot reaguje jen na whitelisted user ID (majitel), akce omezené
na patch session + replan (žádné režimy/registry). Tlačítka expirují
s koncem session.

**Implementace:** `services/discord_bot.py` (lifespan task; discord.py
gateway), `services/ev_notify.py` (sdílený souhrn plánu; bot-first, webhook
fallback). custom_id `ev:<site>:<charger>:<akce>` — tlačítka přežijí restart.
Env: `DISCORD_BOT_TOKEN`, `DISCORD_EV_CHANNEL_ID`, `DISCORD_ALLOWED_USER_IDS`
(čárkami; prázdné = bot vypnut, jede fáze A webhook). Akce: h2/h4 (deadline
teď+N), morning (další default_deadline_hour vozidla, Prague), full (100 % +
deadline za 1 h → max tempo), stop (target = SoC při připojení). Po akci:
patch session → okamžitý replan + export → bot zedituje zprávu novým plánem.
Testy: tests/test_discord_bot.py (parse, patch akcí).

## Výhled (fáze C)
Stejný bot = kanál pro ranní triáž s dotazy („proč jsi v 19:00 nabíjel?" →
delta-triage skill) a rychlé akce (bazén, režimy) — viz noční roadmapa.
