Задача 039: статус устройства и сведения об устройстве в списке адресов
Статус устройства (Активен / Выключен / На обслуживании), назначается вручную на экране устройств: колонка «Статус», выбор в диалоге, смена — в журнал. Миграция 0016, существующие устройства — «Активен». В списке адресов префикса колонки «Тип устройства», «Устройство», «Статус устройства» (join без N+1). pytest не прогнан: учётная запись admin из .env отключена на стенде. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
aeb89dbded
commit
7d998066f5
10 files changed
+199
-19
No files matched your search
@@ -0,0 +1,26 @@
|
||||
# Итог: статус устройства и сведения об устройстве в списке адресов (изменение 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 — ручная проверка пользователя.
|
||||
Reference in new issue
Block a user