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

Сценарий использования · Ассоциативная библиотека и медиатека

Приложение, которое знает, какой экземпляр находится вне библиотеки и сколько времени он там уже

В библиотеке при общественной организации один и тот же вопрос задают по сто раз в неделю: «У вас есть это?». Чтобы ответить на него, нужно знать, сколько экземпляров имеется в наличии, какие из них находятся на руках у читателей и какие должны были уже вернуться. Опишите свою работу на русском языке — и получите приложение, которое отслеживает именно эти три вещи.

Создать это приложение

Описание уже готово — бесплатная регистрация, и оно ждёт вас в редакторе.

Просрочка нигде не зафиксирована

Большинство небольших библиотек ведут учёт выдач в тетради или папке: одна строка на каждую выдачу — дата, имя читателя. В момент записи всё абсолютно точно. Проблема возникает позже: выдача — это не статичный факт, а изменяющееся состояние. Никто не возвращается к этой строке в день, когда книга должна была быть возвращена. Просрочка существует, но нигде не зафиксирована.

На практике список просроченных книг появляется только тогда, когда кто-то вручную его воссоздаёт — перечитывая недели записей по одной строке с календарём в руках. На такую работу никто не может потратить время, поэтому она выполняется лишь один-два раза в год — когда какое-то издание внезапно исчезает из фонда.

Приложение ничего не перечитывает: оно сравнивает дату возврата с текущей датой, и экран с просроченными выдачами заполняется автоматически. Это не эффектная функция — просто расчёт, который тетрадь выполнить не в состоянии.

Издание и экземпляр — это не одно и то же

Это различие определяет структуру приложения, и именно его почти всегда упускают из виду при создании таблиц для библиотеки: издание — это справочная единица (название, автор, ISBN, категория), а экземпляр — физический объект со своей шифром, состоянием и собственной историей. У библиотеки часто бывает три экземпляра одного и того же романа: два выданы, один стоит на полке.

Пока оба понятия объединены в одной строке, невозможно одновременно выдать два экземпляра, указать, что один из них повреждён, или точно сказать, доступно ли издание на самом деле. Разделив их, мы снова делаем все вопросы простыми: выдача оформляется на конкретный экземпляр, бронирование — на издание, а доступность выводится из обоих данных.

Вы описываете эту структуру своими словами, а план, который вам показывают до начала разработки, демонстрирует, как она была понята. Если в нём эти понятия спутаны — вы исправляете это сразу, а не после завершения работы.

  • Издания: название, автор, ISBN, категория, год издания
  • Экземпляры: инвентарный шифр, состояние, дата поступления, связанное издание
  • Выдачи: экземпляр, член библиотеки, дата выдачи, предполагаемая дата возврата, фактическая дата возврата
  • Члены библиотеки: контактные данные, дата вступления, членский взнос
  • Дежурства: временные слоты, волонтёры на смене

Как создаётся приложение

Вы описываете, как работает ваша библиотека, на русском языке и своими терминами — «шифр», «член библиотеки», «дежурство», «выборочный просмотр фонда». Перед началом разработки вам предоставляется подробный план: какие сущности будут использоваться, какие поля они содержат, какие экраны и показатели предусмотрены. Вы корректируете его до тех пор, пока он полностью не отражает вашу реальную организацию; ни строчки кода не пишется до вашего одобрения.

Готовое приложение представляет собой стандартный проект на Next.js и Prisma. Его можно скачать в виде архива ZIP или загрузить на GitHub: код принадлежит вам, и любой разработчик сможет продолжить работу над ним. Существует три уровня генерации (Sketch, Craft, Masterpiece) — в зависимости от того, хотите ли вы быстро проверить идею или получить готовое, продуманное решение.

Чем приложение НЕ является

Эта страница описывает инструмент внутреннего учёта. Некоторые вполне ожидаемые функции библиотеки выходят за рамки возможностей продукта — лучше узнать об этом заранее, чем после начала работы:

Ни одно из этих ограничений не является принципиальным с точки зрения кода — проект экспортируемый, и разработчик может его расширить, но ни одна из этих функций не предоставляется «из коробки».

  • Каталог не заполняется автоматически по ISBN: внешние библиографические базы не используются, название и автор вводятся вручную. Поле ISBN присутствует и используется как идентификатор и критерий поиска, но не служит ключом для импорта. Поле ISBN служит идентификатором и критерием поиска, но не ключом для импорта.
  • Сканеры штрих-кодов и RFID-метки не поддерживаются: оформление выдачи и возврата происходит через интерфейс приложения.
  • Автоматические напоминания по электронной почте или SMS не отправляются: информация о просроченных выдачах отображается внутри приложения, а связь с членом библиотеки остаётся прерогативой человека.
  • Публичного каталога и личного кабинета читателя нет: члену библиотеки с правами «только чтение» открывается весь интерфейс приложения, а не только его собственные выдачи.
  • Режим офлайн отсутствует: при отсутствии интернет-соединения вести учёт во время дежурства невозможно.
  • Права доступа глобальные (администратор, пользователь, только чтение) — нет разделения по разделам или филиалам.

Что вы получаете — и когда угодно

Введённые вами данные остаются вашими и могут быть экспортированы со страницы «Настройки» в формате JSON или CSV — по одному набору данных за раз. Каталог в формате CSV открывается в табличном редакторе, его можно сортировать, печатать для инвентаризации и прикреплять к годовому отчёту или заявке на грант.

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

Сущности

  • Издания
  • Экземпляры
  • Члены библиотеки
  • Выдачи
  • Бронирования
  • Дежурства

Представления

  • Панель управления
  • Каталог
  • Текущие выдачи
  • Просроченные возвраты
  • Члены библиотеки
  • Дежурства

Показатели

  • Текущие выдачи
  • Выдачи с просроченным возвратом
  • Выдачи, зарегистрированные за период
  • Члены библиотеки с актуальным членским взносом

Часто задаваемые вопросы

Заполняется ли каталог автоматически по ISBN?

Нет. Внешние библиографические базы не используются: название, автор и категория вводятся вручную. Поле ISBN присутствует и используется как идентификатор и критерий поиска, но не инициирует импорт. Код экспортируемый и стандартизированный, поэтому разработчик может подключить внешний каталог — но эта функция не входит в поставку.

Можно ли сканировать книги при выдаче и возврате?

Нет, приложение не поддерживает сканеры штрих-кодов и RFID-метки: оформление выдачи производится через интерфейс — выбором экземпляра и члена библиотеки.

Происходит ли автоматическая отправка напоминаний членам библиотеки с просроченными выдачами?

Нет, приложение не отправляет ни электронные письма, ни SMS. Оно отображает список выдач с просроченным возвратом, указывая члена библиотеки и соответствующий экземпляр; само напоминание остаётся вашей обязанностью.

Может ли член библиотеки посмотреть свои собственные выдачи?

Нет — отдельного личного кабинета не предусмотрено. Приложение многопользовательское с тремя глобальными ролями — администратор, пользователь и только чтение. Аккаунт с правами «только чтение» даёт доступ ко всему интерфейсу, а не только к своим выдачам. Отдельного публичного портала нет.

Что произойдёт, если мы захотим позже перейти на другое решение?

Проект основан на стандартных технологиях Next.js и Prisma, его можно экспортировать в ZIP-архив или загрузить на GitHub. Данные экспортируются в форматах JSON и CSV. Нет проприетарных форматов и закрытых диалектов, которые мог бы прочитать только поставщик: переход на другое решение не требует чьего-либо разрешения.

Похожие сценарии

Опишите свою библиотеку и увидьте план до начала разработки