Files
ipwhitelist-app/docs/PLAN-predsdachey.md
T
naeel 0fd5b43a94 v0.5.12: доделки перед сдачей заказчику
§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: план доделок
2026-06-02 19:04:24 +03:00

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.


Порядок:

  1. §4.7 — самая простая, одна строка
  2. §5 — уведомление о нормализации
  3. §5 — клиентская валидация
  4. §4.1 — фильтр удалённых (самая объёмная)
  5. Везде: тесты, VERSION++, коммит