IPAM Manager: API, UI-админка, журнал аудита

Backend (FastAPI, SQLAlchemy 2, Alembic, PostgreSQL 16):
- организации, VRF, префиксы (дерево, использование, автоназначение),
  адреса, операторы связи, устройства и типы устройств; JWT, роли admin/viewer;
- VRF принадлежит организации (составной FK), смена VRF у префикса
  переносит поддерево, имя VRF уникально в организации;
- журнал аудита: поиск и фильтры, ротация (срок/количество), очистка
  по паролю с блокировкой, IP клиента и метаданные запроса
  (X-Forwarded-For только от TRUSTED_PROXIES).

UI (web/, без сборки): экраны и диалоги по макетам «IPAM Manager»,
кликабельные строки реестров, локальные шрифты IBM Plex,
собственные выпадающие списки.

Окружение: docker-compose (postgres + app), миграции Alembic 0001-0004,
scripts/gen_env.py, scripts/seed_demo.py, 11 автотестов (pytest).
Документация: README.md и docs/changes/001-005 (планы и итоги).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
ayurishchevandClaude Sonnet 5 committed 2026-09-20 12:27:47 +03:00
commit a846d30872
64 files changed
+4194

No files matched your search

@@ -0,0 +1,23 @@
# Суммаризация: кликабельные строки во всех реестрах (изменение 005)
## Сделано
Изменён только UI (`web/app.js`); backend и БД не менялись.
- Строки получают `clickable` + `data-row`/`data-action`, как в журнале: «Префиксы» — лист → открыть адреса, родитель → свернуть/развернуть ветку;
«Организации» → префиксы организации; «Операторы» / «Устройства» → окно редактирования; «Адреса» — занятый → редактирование, свободный → «Назначить адрес» с подставленным IP.
Шеврону добавлен `aria-expanded`.
- В едином глобальном обработчике клика действие строки не выполняется, если клик по ссылке, кнопке, полю формы или всплывающему меню, при Ctrl/Cmd/Shift/Alt,
при выделенном тексте; если открыто меню — клик по строке только закрывает его. Вложенные `data-action` (шеврон, «⋯», пункты меню) по-прежнему приоритетнее строки.
- Вёрстка, размеры и цвета не менялись (стили `.tr.clickable`/`.hoverable` уже существовали).
## Проверка
- Сценарий в браузере по `http://192.168.5.9:8088` (15 проверок, все пройдены, ошибок JS нет): клик по строке каждого реестра; родитель сворачивается/разворачивается;
шеврон срабатывает один раз; клик по «⋯» и пунктам меню не запускает действие строки; при открытом меню клик по строке лишь закрывает его; Shift-клик и выделение текста игнорируются;
Ctrl+клик по ссылке открывает новую вкладку, текущая не навигирует; ссылка организации в «Операторах» работает без открытия диалога.
- 11 автотестов backend — зелёные. Новых pytest-тестов не добавлено (изменение интерфейсное; правило проекта — минимум тестов).
- Повторная сверка со скриншотами макетов не выполнялась: в БД, изменённой при ручном тестировании (удалены часть префиксов демо-данных), нужные для неё объекты отсутствуют;
разметка строк изменилась только атрибутами.
## Ограничения
- Клавиатура: строки не делаем `role="button"` (внутри есть ссылки и кнопки); доступ остаётся через ссылку и меню «⋯».
- У родительского префикса нельзя открыть адреса, назначенные прямо на него, — только раскрыть ветку.
- Таблицы «Обзора» (сводка) не менялись.