katlog.orgжурнал разработки Демо-каталогДемо
РШ005
Решение2 мин чтения

Дополнительные поля: гибкость без поломок

Набор полей записи повторял наш экспорт из Aleph. Но время меняется: завтра понадобятся DOI, ссылка на электронную версию, провенанс. Как дать библиотекарю создавать поля самому и не дать случайно всё сломать.

Любая библиотечная система рано или поздно сталкивается с полем, которого в ней нет. Обычно это означает заявку разработчикам и ожидание. Мы захотели, чтобы библиотекарь мог добавить поле сам — через настройки, без программиста.

Что можно задать

  • Ключ — внутреннее имя латиницей, например doi. После создания не меняется.
  • Название и подсказку на трёх языках.
  • Тип: текст, число, дата, ссылка, выбор из списка.
  • Для каких типов документов показывать поле.
  • Видимость: всем читателям или только библиотекарю.
  • Поиск, фильтр, обязательность, тег RIS для выгрузки в Zotero.
Katlog: Настройки → Поля записи — список полей и форма создания поля (например DOI)
Новое поле создаётся без программиста.

Пять предохранителей

  1. Поле с данными не удаляетсяЕго можно только отправить в архив: оно пропадает из форм, но значения сохраняются. Удалить можно лишь пустое поле, с подтверждением вводом ключа.
  2. Тип меняется только безопасноЕсли хоть одно значение не подходит под новый тип, система покажет число таких записей и не даст сменить.
  3. Внутреннее остаётся внутриПоля «только для библиотекаря» — цена, поставщик — вырезаются на сервере. Их нет ни в карточке, ни в выгрузке, по ним не ищет публичный поиск.
  4. Сервер проверяет значенияСсылки только http и https, даты — настоящие даты, списки — только заданные варианты.
  5. Всё в журналеСоздание, архив и смена типа поля записываются: кто и когда.
Почему «вырезать на сервере», а не «скрыть в интерфейсе»Скрытое на странице всё равно приходит в браузер, и любопытный увидит его в инструментах разработчика. Вырезанное на сервере в браузер просто не попадает. Эту проверку мы сделали лично в коде, а не поверили отчёту.

Связь с импортом и качеством данных

При загрузке файла нераспознанные столбцы можно тут же сопоставить с дополнительными полями или создать новое поле. А незаполненные обязательные поля попадают в «Качество данных» отдельной группой. Гибкость не превращается в беспорядок.