From 6743224cc5fdb047dcac17c9d469edbd203181d0 Mon Sep 17 00:00:00 2001 From: Dusan Vojacek Date: Fri, 1 May 2026 10:04:43 +0200 Subject: [PATCH] ifx timeout u replannu --- docs/04-modules/control.md | 8 ++++++++ frontend/nginx.conf | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/docs/04-modules/control.md b/docs/04-modules/control.md index f5f2ff9..7e427f9 100644 --- a/docs/04-modules/control.md +++ b/docs/04-modules/control.md @@ -38,6 +38,14 @@ Rozhodovací logika je v EMS, ne v Loxone. | On-demand | po vytvoření nového plánu | Okamžitý export pokud plán překrývá aktuální čas | | On-demand | po vytvoření override | Okamžitá aplikace přepisu | +### Ruční přepočet plánu a HTTP 504 + +`POST …/sites/{site_id}/plan/run` (`backend/app/routers/plan.py`) po uložení běhu volá **`export_setpoints`** (zápisy Deye / EV / TČ / Loxone). To může trvat dlouho než samotný solver (řád sekund). + +Kontejner **frontend** (nginx před SPA) měl v `location /api/` výchozí **`proxy_read_timeout` 60 s** → uživatel viděl **504 Gateway Timeout**, zatímco backend mohl stačit plán zapsat. V repu jsou na `/api/` nastavené delší **`proxy_*_timeout` (180 s)** (`frontend/nginx.conf`). Pokud EMS servíruješ přes vlastní reverzní proxy (např. Caddy na hostu), nastav tam rovněž dostatečné čekání na upstream. + +Ověření: logy backendu kolem pokusu **nebo** `select id,status,created_at from ems.planning_run where site_id=? order by created_at desc limit 3` — nový řádek může vzniknout i přes 504 v prohlížeči. + --- ## Logika exportu diff --git a/frontend/nginx.conf b/frontend/nginx.conf index e230499..34b9f09 100644 --- a/frontend/nginx.conf +++ b/frontend/nginx.conf @@ -32,6 +32,11 @@ server { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; + # Výchozí nginx read_timeout = 60s → 504 při POST /plan/run (solver + export_setpoints / Modbus). + # Axios u náročných volání = 120s; rezerva pro více zápisů na bráně / Loxone. + proxy_connect_timeout 15s; + proxy_send_timeout 180s; + proxy_read_timeout 180s; } location /rest/ {