Files
ipam_control/docs/changes/014-addresses-listing-performance/SUMMARY.md
T

11 lines
1.7 KiB
Markdown
Raw Normal View History

# Итог: экран адресов — ресурсоёмкие ветки (изменение 014)
## Что сделано
- `app/services.py`: `free_page(net, occupied, offset, limit)` — страница свободных адресов арифметикой по промежуткам (без перебора; IPv4 ≤ /30 без адреса сети и broadcast).
- `list_addresses` переписан: `status=free` → `free_page`, `total = summary.free`; фильтры `status`/`q` и подсети > /20 без фильтров — пагинация и `count` в SQL (раньше загружались все адреса и нарезались в Python); малые подсети без фильтров — смешанный список, как раньше (ограничен размером подсети).
`offset` ≤ 10 000 000 (изменение 013). Ответ API и поведение UI не менялись.
- `README.md`: раздел «Модель данных».
## Проверка
Проверка: стенд `ipam_control_006` пересобран, миграции применены до 0008 (`alembic check` — расхождений нет); ручная проверка (скрипт во временной папке, в репозиторий не добавлялся); автотесты по условию этапа не писались. IPv6 /48, `status=free&offset=9000000` → 200 за ~0,02 с; `offset` выше предела → 422; первые свободные адреса, смешанный список /25 (126 строк) корректны.
Не проверено: замер на /16 с десятками тысяч адресов; экран адресов в браузере.