§4.7: агрегация CIDR в публичном /export (aggregateCIDRs) §5: клиентская JS-валидация (запрещённые диапазоны + нормализация) §4.1: фильтр «показать удалённые» для admin (API + UI) §5: уведомление о нормализации (уже работало, проверено) Файлы: - server.js: +aggregateCIDRs в /export - views/index.ejs: JS-валидация + чек-бокс удалённых - src/api/routes/entries.js: ?includeDeleted=true (admin only) - ui/routes/entries.js: проброс includeDeleted - docs/PLAN-predsdachey.md: план доделок
2.3 KiB
План доделок перед сдачей заказчику
2026-06-02
1. §4.7 — Агрегация CIDR в публичном /export
Проблема: публичный /export отдаёт сырой список, без агрегации.
ТЗ: «подсети суммаризируются (агрегируются в минимальный набор CIDR)».
Решение: добавить aggregateCIDRs() в обработчик server.js.
Файлы: server.js — одна строка.
2. §4.1 — Фильтр «показать удалённые» для admin
Проблема: админ не может посмотреть soft-deleted записи.
Решение:
- API: поддержать
?includeDeleted=trueвGET /api/v1/entries - UI: добавить чек-бокс «показать удалённые» на странице admin
Файлы: src/api/routes/entries.js, views/index.ejs.
3. §5 — Клиентская JS-валидация
Проблема: только HTML5 pattern, нет проверки приватных диапазонов и нормализации на клиенте.
Решение: добавить JS-функцию validateClientIP() в EJS-шаблон:
- Проверка приватных/запрещённых диапазонов (показывать ошибку сразу)
- Предпросмотр нормализации («будет сохранено как X.X.X.0/24»)
Файлы: views/index.ejs.
4. §5 — Уведомление о нормализации в UI
Проблема: API возвращает wasNormalized, но UI может не показывать.
Решение: проверить ui/routes/entries.js — передаёт ли wasNormalized в шаблон.
Если нет — добавить. В шаблоне показать жёлтый alert.
Файлы: ui/routes/entries.js, views/index.ejs.
Порядок:
- §4.7 — самая простая, одна строка
- §5 — уведомление о нормализации
- §5 — клиентская валидация
- §4.1 — фильтр удалённых (самая объёмная)
- Везде: тесты, VERSION++, коммит