fix v1.7.4: PDF upload via HTTP endpoint instead of WebSocket — root cause was WS message-size limit dropping the connection on real (>2-3MB) PDFs (which also closed the dialog via reconnect). New POST /api/houseplan/upload (HomeAssistantView, multipart, auth); verified 3MB(182ms)+10MB(446ms). Legible errors (_errText), no more [object Object]

This commit is contained in:
JB
2026-07-04 16:10:26 +03:00
parent dea0faf268
commit 96d3a182c6
11 changed files with 163 additions and 43 deletions
+4 -1
View File
@@ -128,4 +128,7 @@ name?, icon?, model?, link?, description?, pdfs:[{name,url}]}`. Гибрид: а
| `houseplan/config/get` | — | `{config, rev}` |
| `houseplan/config/set` | `config`, `expected_rev?` | `{ok, rev}` / err `conflict`; событие `houseplan_config_updated` |
| `houseplan/plan/set` | `space_id`, `ext` (svg/png/jpg/webp), `data` (b64, ≤8МБ) | `{ok, url}` |
| `houseplan/file/set` | `marker_id`, `filename`, `data` (b64, ≤25МБ) | `{ok, url, name}` |
| `houseplan/file/set` | `marker_id`, `filename`, `data` (b64) | `{ok,url,name}` (legacy, лимит WS) |
**Загрузка файлов — HTTP** (не WS, у него лимит размера сообщения): `POST /api/houseplan/upload`
(multipart: marker_id + file), HomeAssistantView, requires_auth. Отдача — `/houseplan_files/files/`.
+13
View File
@@ -1,5 +1,18 @@
# Changelog
## v1.7.4 — 2026-07-04 (PDF по HTTP вместо WebSocket)
- КОРНЕВАЯ ПРИЧИНА невозможности загрузить PDF: файл слался как base64 одним WebSocket-сообщением,
а у WS есть лимит размера — реальный мануал (>2–3 МБ) превышал его, соединение рвалось
(«Connection lost»), из-за чего и падала загрузка, и закрывался диалог (обрыв WS → переподключение
→ ре-рендер). Подтверждено тестом: 1 МБ по WS ок, 3 МБ → Connection lost.
- Файлы-инструкции теперь грузятся через HTTP-эндпоинт `POST /api/houseplan/upload` (multipart,
HomeAssistantView, requires_auth, admin_only-проверка) — как медиа в самом HA. Проверено:
3 МБ (182мс) и 10 МБ (446мс) загружаются на ура.
- Читаемые ошибки везде (`_errText`): больше никаких «[object Object]»; понятные тексты для
too_large / bad_ext / unauthorized.
- WS-команда houseplan/file/set оставлена для совместимости, но фронт использует HTTP.
## v1.7.3 — 2026-07-04 (фиксы диалога устройства)
- PDF-инструкции не загружались: ручной base64 (`btoa(String.fromCharCode(...subarray))`) падал
на реальных файлах (RangeError при спреде больших массивов), а при закрытии диалога во время