ADR-012. Незавершённая карта живёт в пакете ввода

ADR Версия: 0.1 accepted

Где хранится работа над картой, которую не удалось закончить: в карте со статусом «черновик» или в пакете ввода.

⟨/⟩ Исходник

1. Контекст

Часть обязательных полей может быть не заполнена на самом бумажном бланке. Заказчик просит не терять работу: сохранить проверенное, дособрать недостающие сведения и вернуться, чтобы дозаполнить. Выгружать такую карту в АБИС нельзя.

Значения полей уже хранятся в пакете ввода — вместе с уверенностью распознавания, кадром-источником и областью на нём; у пакета есть состояния и очередь, через которую к нему возвращаются. Информационная карта — результат проверки, состояния не имеет.

2. Решение

Незавершённая работа остаётся в пакете ввода. Проверка завершается либо созданием карты, в которой заполнены все обязательные поля, либо ничем: пакет остаётся в состоянии «Проверка» за оператором вместе с внесёнными значениями.

Карта состояния не имеет. Она создаётся только полной, и другой не бывает. «Черновик» — слово для описания ситуации, а не сущность модели и не элемент интерфейса.

3. Обоснование

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

Полнота карты становится инвариантом вместо проверки. Запрет «не выгружать неполную карту» — правило, которое нужно всюду помнить и можно забыть: допустить существование объекта, а потом везде оговаривать, что с ним нельзя. Когда неполной карты не существует, запрещать нечего.

Реестр карт остаётся реестром готовых карт, и ни выгрузке, ни поиску, ни отчётности не приходится различать два сорта записей.

4. Следствия

5. Отвергнутые варианты

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

Связанные артефакты

Термины