36 lines
5.1 KiB
Markdown
36 lines
5.1 KiB
Markdown
# Итоги: 006 — перенос утверждённого макета в UI и два бага
|
||||
|
|
|
|||
|
|
## Баги
|
|||
|
|
1. **Прошивка не перезагружала устройство.** `upgrade_firmware` ждал `current-firmware == upgrade-firmware`, но `current-firmware`
|
|||
|
|
меняется только после перезагрузки (на `OZ_Dacha`: `7.22.3` при `upgrade 7.24.4`, задача №12 упала по таймауту).
|
|||
|
|
Теперь триггер — новая запись журнала «Firmware upgraded successfully, please reboot for changes to take effect!»
|
|||
|
|
(журнал читается целиком и фильтруется на сервере: REST-фильтр `?message=` по точному тексту ничего не вернул).
|
|||
|
|
Если запись новее последней загрузки (по `system/clock` − `uptime`) уже есть, то повторная команда не нужна — сразу перезагрузка.
|
|||
|
|
2. **Нельзя привязать создаваемое устройство к группе.** Форма и маршрут работали, но групп в экземпляре не было (тестовые я удалил
|
|||
|
|
после проверки), а создать группу из формы было нельзя. Теперь в окне устройства в списке «Группа» есть пункт «+ Новая группа…»:
|
|||
|
|
группа создаётся и привязывается в одной транзакции (при ошибке лишней группы не остаётся). Если сценарий был другим — сообщить.
|
|||
|
|
|
|||
|
|
## Интерфейс (перенос макета)
|
|||
|
|
- Дизайн-система в `app/ui/static/style.css`: токены и размеры макета 1:1 (контролы h36 r8, метки h22 r6, панели r12), тёмная тема на тех же токенах.
|
|||
|
|
Шрифты IBM Plex Sans/Mono лежат локально (`static/fonts`, лицензия OFL) — внешний CDN не нужен.
|
|||
|
|
- Страницы: «Устройства» (заголовок со счётчиками, вкладки групп, карточка с полосой «фильтры ⇄ действия над выбранными», таблица, задачи),
|
|||
|
|
«Группы», «Резервные копии» (фильтры на `.field`, «Скачать» и «⋯» в строке), вход.
|
|||
|
|
- Окна (`<dialog>` + HTMX): добавление/изменение устройства, создание/переименование группы; ошибки — внутри окна, успех — обновление страницы.
|
|||
|
|
Запасные страницы `/devices/new`, `/devices/{id}/edit` сохранены.
|
|||
|
|
- Логика выбора строк, меню, окон и фильтров — `static/app.js` (без библиотек, кроме htmx).
|
|||
|
|
|
|||
|
|
## Проверено
|
|||
|
|
- `pytest`: 8 из 8 (добавлены: перезагрузка по записи журнала — оба сценария; добавление устройства из окна с группой и «новой группой», окна групп).
|
|||
|
|
- Реальный браузер (headless Chromium): вход → окно «Новое устройство» → «Новая группа…» → вкладка «QA группа 1» → выбор строк и панель действий,
|
|||
|
|
меню «Обновление / В группу», меню строки с подменю каналов, живой фильтр без перезагрузки и «Сбросить (N)», страницы «Группы» и «Бэкапы»;
|
|||
|
|
ошибок JS/консоли нет; тестовые данные удалены (в БД остались `MSK_Home`, `OZ_Dacha`, групп нет).
|
|||
|
|
- По скриншотам исправлены расхождения с макетом: пробел в «Выбрано: N», двойные границы карточек, «системная» за краем таблицы,
|
|||
|
|
закрытие подменю каналов, склейка «Сбросить (N)», серые «—» у offline-устройства, знак «+» в списке групп.
|
|||
|
|
|
|||
|
|
## Не проверено
|
|||
|
|
- Реальная перезагрузка по «Обновить FW» на `OZ_Dacha` — нужно подтверждение (перезагрузит роутер); логика проверена на моках и на реальном журнале (чтение).
|
|||
|
|
- Соответствие макету на других размерах окна и в тёмной теме (проверялось при 1440 px в светлой).
|
|||
|
|
|
|||
|
|
## Отличия от макета
|
|||
|
|
- Календарь в фильтре дат — нативный `<input type="date">`: формат зависит от локали браузера (в макете ISO).
|
|||
|
|
- Фильтры вкладок и списков в приложении работают; в макете они статичны.
|