11 lines
1.7 KiB
Markdown
11 lines
1.7 KiB
Markdown
# Итог: экран адресов — ресурсоёмкие ветки (изменение 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 с десятками тысяч адресов; экран адресов в браузере.
|