Паспорт автоматизированной информационной системы управления библиотекой¶
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 APIdocs/DEPLOYMENT.md— руководство по развертываниюdocs/DEVELOPER_GUIDE.md— руководство для разработчиковdocs/USER_GUIDE.md— руководство пользователя
Версия документа: 1.0
Дата составления: 2026
Статус: Действующий