Статус устройства (Активен / Выключен / На обслуживании), назначается вручную на экране устройств: колонка «Статус», выбор в диалоге, смена — в журнал. Миграция 0016, существующие устройства — «Активен». В списке адресов префикса колонки «Тип устройства», «Устройство», «Статус устройства» (join без N+1). pytest не прогнан: учётная запись admin из .env отключена на стенде. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Итог: статус устройства и сведения об устройстве в списке адресов (изменение 039)
План: PLAN.md. У устройства появился статус «Активен» / «Выключен» / «На обслуживании», назначаемый вручную на экране устройств.
В списке адресов префикса — колонки «Тип устройства», «Устройство», «Статус устройства».
Что сделано
| Файл | Изменение |
|---|---|
app/models.py, alembic/versions/0016_device_status.py |
DeviceStatus (active/off/maintenance), devices.status NOT NULL, server_default 'active' — существующие устройства стали «Активен» |
app/schemas.py |
DeviceIn.status (по умолчанию active), DeviceUpdate.status, DeviceOut.status; AddressOut.device_type_name, device_status |
app/api/v1/refs.py |
status в ответах об устройствах; смена статуса — в журнал через apply_update (device.updated, diff.status) |
app/api/v1/prefixes.py |
list_addresses: имя, тип и статус устройства одним outerjoin на страницу; одиночные ответы (создание/правка/автоназначение адреса) — хелпер _device_info, один запрос, раньше device_name там не отдавался |
web/app.js |
DEVICE_STATUS (бейджи green / нейтральный / amber); «Устройства»: колонка «Статус», выбор статуса в диалоге; «Адреса»: три колонки, «—» у свободных и непривязанных адресов |
tests/test_api.py |
test_device_status_on_address: устройство maintenance → поля в списке адресов; PATCH status=off |
README.md |
Модель данных (устройства), «Интерфейс», миграции 0001–0016, строка 039 |
Проверки
- Миграция 0016 применена,
alembic checkчисто, откат до 0015 и повторный upgrade — без ошибок; 3 существующих устройства —active. - Статус в API — строка (
"maintenance"), не представление enum (проверено сериализациейAddressOut). node --check,py_compile,import app.main— чисто; стенд пересобран (--force-recreate), healthy, отдаёт новыйapp.js.- Новых литеральных цветов в
app.jsнет (бейджи — существующие классы, тёмная тема не затронута).
Не проверено
pytestне прогнан, в том числе новыйtest_device_status_on_address: учётная записьadminиз.env(фикстураclient) отключена пользователемtstarkчерез UI (13:58). Решение о её включении или других учётных данных для тестов — за пользователем.- UI — ручная проверка пользователя.