Информационная карта
Итог оцифровки одной бумажной формы: документы карты со значениями атрибутов, типизированное ядро для поиска, связь с пакетом-первоисточником и отметка о выгрузке в АБИС.
1. Назначение
Итог оцифровки одной бумажной формы. Создаётся командой пользователя по итогам проверки и попадает в реестр информационных карт.
2. Почему карта — отдельная сущность, а не просто документ
Содержимое карты хранится в документах карты, но карта ими не исчерпывается. У неё есть то, чего у документа как такового быть не может:
- связь с пакетом-первоисточником;
- дата карты: когда экземпляр передан в обработку;
- факт выгрузки в АБИС;
- собственный жизненный цикл: карта возникает командой пользователя по итогам проверки.
Карта при этом не является документом дерева: она стоит над ним и содержит документы, а не наследует их устройство. Собственных атрибутов у неё нет — всё, что пишется на бланке, живёт в документах карты.
Загнать это в атрибуты нельзя: «выгружена ли карта» не может быть строкой в общем хранилище значений наравне с заглавием и годом издания.
3. Ядро
Шифр, инвентарный номер, заглавие, автор, год вынесены в типизированные свойства. Дата в ядро не входит: это собственный реквизит карты, а не проекция значения. Критерий отбора функциональный: в ядро идёт то, по чему Сервис работает сам — ищет карту, строит реестр, отбирает выборку, формирует выгрузку.
Структурный критерий «общее для всех бланков» здесь не работает: у ИК издания одно поле «Заглавие», а у ИК рукописи их три — унифицированное, полное и перевод.
Ядро — проекция, а не второй источник истины. Источник истины — значения атрибутов документов карты; свойства ядра заполняются из них и пересчитываются при правке значений. Какой атрибут даёт какое свойство ядра, задаёт атрибут вида документа.
Чем это оплачено: ядро можно рассинхронизировать со значениями, и ошибка будет тихой — реестр покажет одно, карта будет содержать другое.
4. Инварианты
- Карта создаётся только по пакету, у которого заполнены обязательные поля состава.
- Один пакет порождает одну карту.
- Карта не бывает без документов: собственных атрибутов у неё нет, и всё, что на бланке, живёт в документах. Карта без них пуста.
- Карта не ссылается на экземпляр фонда: привязка карты к экземпляру в состав Сервиса не входит. Документ опознаётся на стороне АБИС по шифру и инвентарному номеру, которые в карте есть всегда — они обязательны.
- У одного документа фонда может быть несколько карт — по числу событий обработки; различает их дата карты.
- Свойства ядра совпадают со значениями атрибутов, из которых выведены.
- Вид карты совпадает с видом документа, по которому собран пакет-первоисточник.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
Id | Guid | Идентификатор карты. |
Date | DateOnly | Дата карты: когда экземпляр передан в обработку. |
SourcePacketId | Guid | Пакет ввода, из которого создана карта. |
Shelf | String | Ядро: шифр хранения. |
InventoryNumber | String | Ядро: инвентарный номер. |
Title | String | Ядро: заглавие документа. |
Author | String | Ядро: автор. |
Year | Nullable<Int32> | Ядро: год издания. |
CreatedAt | DateTime | Момент создания карты. |
CreatedByUserId | Guid | Пользователь, создавший карту. |
ExportedAt | Nullable<DateTime> | Момент последней выгрузки в АБИС; null — не выгружалась. |
Kind | DocumentKind | Вид документа, по которому заполнена карта. |
Documents | IReadOnlyList<CardDocument> | Документы карты: содержимое, заполненное по видам. |
Структурные связи
Используется
- Документ Разбор образца выгрузки в АБИС
- Запрос на изменение Выгрузка в АБИС без отбора выборки
- Запрос на изменение CR 2026-08-25. Обязательные поля информационной карты