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

Паспорт автоматизированной информационной системы управления библиотекой

1. Общие сведения

1.1. Наименование системы

Автоматизированная информационная система управления библиотекой (далее — АИС).

1.2. Тип системы

Автоматизированная информационная система (АИС) класса «Информационно-справочная система» с элементами «Система управления документооборотом».

1.3. Назначение системы

АИС предназначена для автоматизации процессов управления библиотечным фондом, учета выдачи и возврата книг, управления бронированиями, ведения учета читателей и формирования отчетности в библиотеках образовательных учреждений, государственных и муниципальных организаций.

2. Область применения

2.1. Типы учреждений

АИС может быть использована в следующих типах учреждений:

  • Библиотеки образовательных организаций (вузы, колледжи, школы)
  • Публичные библиотеки
  • Специализированные библиотеки государственных и муниципальных учреждений
  • Библиотеки научных организаций
  • Корпоративные библиотеки бюджетных организаций

2.2. Категории пользователей

Система поддерживает три категории пользователей с различными уровнями доступа:

  • Администратор — полный доступ ко всем функциям системы, включая управление пользователями, настройку системы, доступ к статистике
  • Библиотекарь — выполнение операций выдачи и возврата книг, управление бронированиями, проведение инвентаризации, управление справочниками
  • Читатель — просмотр каталога книг, бронирование доступных книг, просмотр личной информации о выдачах и бронированиях

3. Функциональные возможности

3.1. Учет библиотечного фонда

  • Ведение электронного каталога книг с возможностью поиска по названию, автору, ISBN, инвентарному номеру
  • Управление экземплярами книг с присвоением инвентарных номеров
  • Учет состояния экземпляров (новое, хорошее, удовлетворительное, требует ремонта, списано)
  • Учет местонахождения книг (полки, стеллажи)
  • Импорт книг из CSV (с заголовками: инв. номер, название, автор(ы), ISBN, год, страницы, издание, язык, издательство, жанры, полка, состояние, статус, цены, описание; справочники и книги создаются без дубликатов)
  • Управление метаданными книг: авторы, жанры, издательства, языки, год издания, количество страниц

3.2. Операции выдачи, возврата и продления

  • Выдача книг читателям с фиксацией срока возврата
  • Автоматический расчет срока возврата на основе категории читателя
  • Возврат книг с фиксацией состояния при возврате
  • Продление выдачи с учетом лимитов продлений для категории читателя
  • Массовые операции выдачи и возврата
  • История всех операций с возможностью фильтрации и экспорта
  • Уведомления о приближающихся сроках возврата

3.3. Бронирование и очередь

  • Бронирование доступных экземпляров (лимит 5 активных броней на читателя)
  • Автоматическая постановка в очередь при попытке забронировать занятый экземпляр
  • Продвижение очереди сразу после возврата или отмены брони; outbox-worker — резерв
  • Lazy-отмена просроченных броней при работе с очередью (не только по расписанию)
  • Автоматическое создание брони для первого в очереди после освобождения экземпляра
  • Отмена бронирований и выход из очереди; позиция в очереди в карточке книги и в личном кабинете
  • Срок бронирования по умолчанию 3 дня; очистка просроченных — cron или API

3.4. Управление пользователями и ролями

  • Создание и редактирование учетных записей пользователей
  • Назначение ролей (администратор, библиотекарь, читатель)
  • Управление категориями читателей с настройкой лимитов:
  • Срок выдачи (в днях)
  • Максимальное количество одновременно выданных книг
  • Лимит продлений
  • Импорт и экспорт пользователей в формате CSV
  • Интеграция с LDAP/Active Directory для аутентификации пользователей
  • Деактивация и активация учетных записей

3.5. Отчеты и статистика

  • Статистика активных выдач
  • Статистика всех выдач с трендами
  • Статистика по пользователям
  • История операций с расширенной фильтрацией
  • История списаний книг
  • Экспорт отчетов в формате CSV
  • Дашборд с ключевыми метриками для администраторов и библиотекарей

3.6. QR-коды

  • Генерация QR-кодов для экземпляров книг
  • Генерация QR-кодов для пользователей
  • Сканирование QR-кодов для быстрой идентификации книг и пользователей
  • Массовая генерация QR-кодов для полок
  • Использование QR-кодов при выдаче и возврате книг

3.7. Инвентаризация

  • Проведение инвентаризации библиотечного фонда
  • Сканирование книг с помощью QR-кодов
  • Фиксация фактического наличия книг на полках
  • Выявление книг, находящихся не на своих местах
  • Выявление недостающих книг
  • Отчеты по результатам инвентаризации

3.8. Справочники

  • Управление авторами (ФИО, годы жизни, страна, биография)
  • Управление жанрами с поддержкой иерархии
  • Управление издательствами
  • Управление полками и стеллажами
  • Управление языками изданий
  • Управление состояниями книг
  • Управление категориями пользователей

3.9. Дополнительные возможности

  • Темная и светлая тема оформления
  • Режим для слабовидящих (увеличенный шрифт, усиленный контраст)
  • Адаптивный интерфейс для мобильных устройств
  • Центр уведомлений о сроках возврата
  • Поиск и фильтрация во всех разделах системы

4. Архитектура системы

4.1. Общая схема

АИС реализована как клиент-серверное приложение с разделением на клиентскую (frontend) и серверную (backend) части, взаимодействующие через REST API.

┌─────────────────┐
│   Web Browser   │
│   (Frontend)    │
└────────┬────────┘
         │ HTTP/HTTPS
         │ REST API
┌────────▼────────┐
│  Backend Server │
│   (Node.js)     │
└────────┬────────┘
         │
    ┌────┴────┐
    │         │
┌───▼───┐ ┌──▼────┐
│PostgreSQL│ │ Redis │
│   (БД)   │ │(Кэш) │
└─────────┘ └───────┘

4.2. Клиентская часть (Frontend)

Технологический стек: - React 18.3 — библиотека для построения пользовательского интерфейса - TypeScript 5.8 — типизированный язык программирования - Vite 5.4 — инструмент сборки и dev-сервер - React Router 6.30 — маршрутизация - TanStack Query 5.83 — управление серверным состоянием и кэширование - React Hook Form 7.61 — управление формами - Zod 3.25 — валидация данных - shadcn/ui — компоненты пользовательского интерфейса на базе Radix UI - Tailwind CSS 3.4 — фреймворк для стилизации

Особенности: - Single Page Application (SPA) - Адаптивный дизайн для различных размеров экранов - Поддержка темной и светлой темы - Режим для слабовидящих

4.3. Серверная часть (Backend)

Технологический стек: - Node.js — среда выполнения JavaScript - Express 4.18 — веб-фреймворк - Sequelize 6.37 — ORM для работы с PostgreSQL - PostgreSQL — реляционная система управления базами данных - Redis 4.7 — система кэширования (опционально) - JWT — механизм аутентификации - Winston 3.15 — система логирования - Swagger — документация API

Особенности: - Stateless архитектура (без сохранения состояния сессии на сервере) - RESTful API - Транзакционная обработка данных - Асинхронная обработка операций через паттерн Outbox

4.4. Слои архитектуры

Система следует принципам многослойной архитектуры (Layered Architecture) с четким разделением ответственности:

1. Presentation Layer (Слой представления) - HTTP-маршруты (Routes) - Обработка HTTP-запросов и ответов - Валидация входных данных - Аутентификация и авторизация на уровне маршрутов

2. Application Layer (Слой приложения) - Бизнес-логика (Services) - Оркестрация операций - Валидация бизнес-правил - Координация между репозиториями

3. Data Access Layer (Слой доступа к данным) - Репозитории (Repositories) - Абстракция работы с базой данных - Реализация паттернов Repository и CQRS

4. Domain Layer (Доменный слой) - Модели данных (Models) - Определение структуры данных - Валидация на уровне модели

4.5. Используемые паттерны проектирования

Repository Pattern — абстракция доступа к данным, обеспечивающая независимость бизнес-логики от способа хранения данных.

CQRS (Command Query Responsibility Segregation) — разделение операций чтения (queries) и записи (commands) для оптимизации производительности и упрощения логики.

Service Layer Pattern — выделение бизнес-логики в отдельный слой сервисов.

Outbox Pattern — обеспечение надежной асинхронной обработки событий (например, продвижение очереди при освобождении книги) через таблицу исходящих событий.

Idempotency — обеспечение идемпотентности операций для предотвращения дублирования при повторных запросах.

Transaction Pattern — использование транзакций базы данных для обеспечения целостности данных при выполнении сложных операций.

5. Состав программных средств

5.1. Клиентская часть

  • React — библиотека для построения пользовательского интерфейса
  • TypeScript — язык программирования
  • Vite — инструмент сборки
  • React Router — маршрутизация
  • TanStack Query — управление состоянием
  • React Hook Form — управление формами
  • Zod — валидация
  • shadcn/ui — компоненты UI
  • Tailwind CSS — стилизация
  • date-fns — работа с датами
  • qrcode — генерация QR-кодов
  • @zxing/library — сканирование QR-кодов

5.2. Серверная часть

  • Node.js — среда выполнения
  • Express — веб-фреймворк
  • Sequelize — ORM
  • PostgreSQL — СУБД
  • Redis — кэширование (опционально)
  • JWT (jsonwebtoken) — аутентификация
  • bcryptjs — хеширование паролей
  • Winston — логирование
  • Swagger — документация API
  • express-validator — валидация запросов
  • express-rate-limit — ограничение частоты запросов
  • helmet — защита HTTP-заголовков
  • cors — настройка CORS
  • csrf — защита от CSRF-атак
  • ldapts — интеграция с LDAP/Active Directory
  • multer — загрузка файлов
  • qrcode — генерация QR-кодов

5.3. База данных

  • PostgreSQL 14+ — реляционная СУБД для хранения всех данных системы

Основные таблицы: - users — пользователи системы - book_titles — книги (названия) - book_copies — экземпляры книг - operations — операции выдачи/возврата/списания/продления - bookings — бронирования - booking_queue — очередь на книги - outbox_events — события для асинхронной обработки - Справочные таблицы: авторы, жанры, издательства, полки, языки, состояния, категории пользователей

5.4. Вспомогательные компоненты

  • Docker — контейнеризация приложения
  • Nginx — веб-сервер и reverse proxy (для production)
  • PM2 — менеджер процессов Node.js (опционально)
  • Outbox worker — встроенная обработка очереди бронирований в процессе backend (OUTBOX_WORKER_ENABLED)
  • Cron (опционально) — очистка просроченных бронирований; резервный прогон outbox, если воркер отключён

6. Требования к техническим средствам

6.1. Сервер

Минимальные требования: - CPU: 2 ядра - RAM: 4 GB - Диск: 20 GB свободного места - Сеть: стабильное подключение к интернету

Рекомендуемые требования: - CPU: 4+ ядра - RAM: 8+ GB - Диск: 50+ GB свободного места (SSD рекомендуется) - Сеть: стабильное подключение к интернету с пропускной способностью не менее 100 Мбит/с

6.2. Система управления базами данных

  • PostgreSQL 14.x или выше
  • Рекомендуется использование отдельного сервера БД для production-окружения

6.3. Операционная система

Сервер: - Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+) - Windows Server 2019+ (для разработки и тестирования)

Клиент: - Любая операционная система с современным веб-браузером

6.4. Веб-браузеры

Система поддерживает следующие браузеры:

  • Google Chrome 90+ (рекомендуется)
  • Mozilla Firefox 88+
  • Microsoft Edge 90+
  • Safari 14+ (macOS)
  • Яндекс.Браузер 21+

Требования: - Включенный JavaScript - Поддержка современных веб-стандартов (ES6+) - Разрешение экрана: минимум 320px (мобильные устройства), рекомендуется 1920x1080 и выше

6.5. Дополнительное оборудование

  • QR-сканер (опционально) — для сканирования QR-кодов книг и пользователей
  • Веб-камера (опционально) — для использования встроенного сканера QR-кодов в браузере

7. Требования к информационной безопасности

7.1. Аутентификация и авторизация

  • Использование JWT (JSON Web Tokens) для аутентификации пользователей
  • Хеширование паролей с использованием алгоритма bcrypt
  • Поддержка интеграции с LDAP/Active Directory для централизованной аутентификации
  • Время жизни токена настраивается (по умолчанию 7 дней)
  • Автоматический выход из системы при истечении срока действия токена

7.2. Разграничение прав доступа

  • Ролевая модель доступа (RBAC — Role-Based Access Control)
  • Три уровня доступа: администратор, библиотекарь, читатель
  • Защита маршрутов на уровне frontend и backend
  • Проверка прав доступа при выполнении операций

7.3. Защита от несанкционированного доступа

  • Защита от CSRF-атак через токены CSRF
  • Защита HTTP-заголовков через библиотеку Helmet
  • Настройка CORS для ограничения источников запросов
  • Rate limiting для предотвращения злоупотреблений (100 запросов в минуту по умолчанию)
  • Валидация всех входных данных на уровне API
  • Защита от SQL-инъекций через использование ORM (Sequelize) с параметризованными запросами
  • Защита от XSS через санитизацию пользовательского ввода

7.4. Логирование действий

  • Логирование всех операций с книгами (выдача, возврат, списание, продление)
  • Логирование действий администраторов (создание/изменение пользователей, настройки системы)
  • Логирование попыток входа в систему
  • Логирование ошибок и исключительных ситуаций
  • Хранение логов в файлах с ротацией
  • Уровни логирования: debug, info, warn, error

7.5. Меры по обеспечению целостности данных

  • Использование транзакций базы данных для атомарности операций
  • Ограничения целостности на уровне БД (foreign keys, unique constraints)
  • Валидация данных на уровне приложения и базы данных
  • Идемпотентность критических операций для предотвращения дублирования
  • Регулярное резервное копирование базы данных

7.6. Конфиденциальность данных

  • Шифрование паролей пользователей
  • Возможность использования HTTPS для шифрования трафика
  • Ограничение доступа к персональным данным пользователей в соответствии с ролью
  • Возможность настройки политики хранения данных

8. Масштабируемость и надежность

8.1. Stateless Backend

Серверная часть реализована как stateless-приложение, не сохраняющее состояние сессии на сервере. Это позволяет:

  • Горизонтальное масштабирование через запуск нескольких экземпляров сервера
  • Использование балансировщиков нагрузки
  • Отказоустойчивость при выходе из строя одного из экземпляров

8.2. Транзакционность

  • Все операции изменения данных выполняются в транзакциях базы данных
  • Обеспечение ACID-свойств (Atomicity, Consistency, Isolation, Durability)
  • Откат изменений при возникновении ошибок

8.3. Асинхронная обработка

  • Использование паттерна Outbox для асинхронной обработки событий
  • Обработка очередей на книги через фоновые задачи
  • Очистка просроченных бронирований через cron-задачи
  • Возможность масштабирования обработки через запуск нескольких воркеров

8.4. Идемпотентность операций

  • Критические операции (выдача, возврат, списание) реализованы как идемпотентные
  • Повторный запрос с теми же параметрами не приводит к дублированию операции
  • Использование уникальных идентификаторов для предотвращения дублирования

8.5. Кэширование

  • Опциональное использование Redis для кэширования часто запрашиваемых данных
  • Кэширование справочной информации (авторы, жанры, издательства)
  • Настраиваемое время жизни кэша

8.6. Мониторинг и диагностика

  • Health check endpoint для проверки работоспособности системы
  • Логирование производительности запросов
  • Возможность интеграции с системами мониторинга (Prometheus, Grafana)

9. Эксплуатация и сопровождение

9.1. Развертывание

Система может быть развернута следующими способами:

  • Локальное развертывание — установка на сервере заказчика
  • Docker-контейнеры — развертывание через Docker Compose
  • Облачное развертывание — развертывание в облачной инфраструктуре

Подробные инструкции по развертыванию приведены в документе docs/DEPLOYMENT.md.

9.2. Резервное копирование

  • Создание, скачивание и восстановление дампов БД через Администрирование → Система (BACKUP_ENABLED=true)
  • Каталог бэкапов на сервере (в Docker: том ./backups/app/backups)
  • Дополнительно: cron с pg_dump и копирование каталога uploads (обложки)
  • Регулярная проверка восстановления из резервной копии

9.3. Обновления

  • Версионирование системы
  • Миграции базы данных для обновления схемы
  • Инструкции по обновлению системы
  • Откат к предыдущей версии при необходимости

9.4. Мониторинг

  • Мониторинг доступности системы
  • Мониторинг производительности базы данных
  • Мониторинг использования ресурсов сервера
  • Алертинг при критических ошибках

9.5. Сопровождение

  • Техническая поддержка и консультации
  • Исправление ошибок
  • Доработки по техническому заданию заказчика
  • Обучение персонала

Подробная информация о коммерческом использовании и сопровождении приведена в документе docs/COMMERCIAL.md.

10. Контакты и дополнительная информация

Дополнительная техническая документация:

  • docs/architecture.md — подробное описание архитектуры системы
  • docs/API.md — документация по REST API
  • docs/DEPLOYMENT.md — руководство по развертыванию
  • docs/DEVELOPER_GUIDE.md — руководство для разработчиков
  • docs/USER_GUIDE.md — руководство пользователя

Версия документа: 1.0
Дата составления: 2026
Статус: Действующий