Перейти к содержанию

Рекомендации по улучшению системы

Приоритизированный список улучшений по коду, UX, безопасности и эксплуатации.


1. Безопасность

  • Helmet (в т.ч. CSP), rate limit, CSRF, JWT, валидация env — есть.
  • В production Swagger отключён по умолчанию; включение через ENABLE_SWAGGER=true.
  • Регулярно npm audit, обновление зависимостей.

2. Эксплуатация и мониторинг

2.1 Health checks

  • Реализовано: GET /health возвращает { status: 'ok' } (для Docker healthcheck, k8s). GET /health/integrity — проверка целостности (admin).

2.2 Метрики и алерты

  • Вынести метрики в Prometheus/Grafana или облачный мониторинг; алерты на 5xx и рост latency.

2.3 Логирование backend

  • Реализовано: Winston — в production консоль в JSON (logFormat); файлы error.log, combined.log — JSON. Централизованный сбор — по желанию (Fluentd, Loki и т.д.).

3. Код и архитектура

3.1 Дублирование кода

  • Реализован хук usePagination (totalCount, pageSize) — page, totalPages, fromIndex, toIndex, pageRange, resetPage, nextPage, prevPage, goToPage. Используется на странице Operations.

3.2 Типизация API

  • Расширены типы: Booking (bookCopyId, userId, expiresAt, user_name, userName), Operation (cover_image_path, book_copy, book, book_title, inventory_number, authors, operation_status, book_authors), Profile (role, categoryId). Убраны многие (as any) в Bookings, ActiveLoans, MyLoans, Catalog, EditUserDialog, EditShelfDialog, EditPublisherDialog, LoanDialog, BatchReturnDialog, Scan. Добавлен тип Condition в BatchReturnDialog.

3.3 Swagger

  • Добавлено описание POST /log/frontend-error (тег Logging).

4. Доступность (a11y)

  • Версия для слабовидящих, DialogTitle/DialogDescription — есть.
  • У основных таблиц и формы входа добавлены aria-label и autocomplete. При желании: расширить aria/подписи для остальных экранов и таблиц.