Files
ipam_control/docs/changes/005-clickable-rows/SUMMARY.md
T
ayurishchevandClaude Sonnet 5 a846d30872 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>
2026-09-20 12:27:47 +03:00

3.4 KiB

Суммаризация: кликабельные строки во всех реестрах (изменение 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" (внутри есть ссылки и кнопки); доступ остаётся через ссылку и меню «⋯».
  • У родительского префикса нельзя открыть адреса, назначенные прямо на него, — только раскрыть ветку.
  • Таблицы «Обзора» (сводка) не менялись.