Files
ipam_control/docs/changes/042-free-ranges/SUMMARY.md
T
ayurishchevandClaude Opus 5.5 d1a2efd683 Задача 042: свёртка свободных адресов в раскрывающиеся диапазоны
В списке адресов префикса подряд идущие свободные адреса сворачиваются в строку
«начало – конец · Свободно: N» (параметр group_free, группировка на сервере — пагинация
по строкам после свёртки); раскрытие — существующим status=free&offset=free_offset
порциями по 500. Без group_free ответ API прежний.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:40:22 +03:00

2.7 KiB
Raw Blame History

Итог: свёртка свободных адресов в раскрывающиеся диапазоны (изменение 042)

План: PLAN.md. В списке адресов префикса подряд идущие свободные адреса сворачиваются в строку-диапазон «начало – конец · Свободно: N»; клик раскрывает её в отдельные адреса, повторный — сворачивает. Одиночный свободный адрес — обычная строка.

Что сделано

Файл Изменение
app/api/v1/prefixes.py list_addresses(group_free=False): в смешанном режиме (без фильтра и поиска, подсеть ≤ FREE_LISTING_LIMIT) серии свободных ≥ 2 сворачиваются одним проходом по отсортированному списку в строку free_range. total и пагинация — по строкам после свёртки. Без group_free ответ прежний
app/schemas.py AddressOut.range_end, range_count, free_offset
web/app.js Список запрашивается с group_free. Строка диапазона: шеврон как в дереве префиксов, бейдж «Свободно: N», без чекбокса и действий. Раскрытие — существующий status=free&offset=free_offset, порциями по 500 со строкой «ещё N — показать». Состояние в S.freeOpen/S.freeLoaded, сброс при смене фильтра, поиска или префикса. Подсказка адреса в «Назначить адрес» учитывает free_range
tests/test_api.py В test_tree_utilization_and_next_free: free_range с корректными границами и free_offset; раскрытие даёт ровно адреса диапазона; без group_free ответ не изменился
README.md Свёртка свободных адресов; строка 042

Проверки

  • pytest -q — 17 passed.
  • На стенде (временная организация, удалена):
    • 10.242.0.0/24 с 3 назначенными — 5 строк вместо 254;
    • fd00:242::/120 с 3 назначенными — 5 строк вместо 256;
    • раскрытие каждого диапазона через status=free&offset&limit совпадает по первому и последнему адресу и количеству.
  • UI — проверка пользователя.