⟨/⟩ 40_Arch/ADR/ADR_001_InputPlanDrivenByCardKind.cs

93 строк · в начало

using System;
using Ban.Sdaid.Notation.Documents;

namespace Ban.Sdaid.Icd.Arch.Adr
{
    /// <summary>Решение: состав операций ввода задаётся планом, план зависит от вида ИК и выбирается оператором на форме ввода.</summary>
    public class ADR_001_InputPlanDrivenByCardKind : IAdrDocument
    {
        public static string _refName = "ADR-001 «План ввода определяется видом ИК»";

        public string Name => "ADR-001. План ввода определяется видом ИК и выбирается на форме";

        public string Description =>
            @"Как определяется последовательность действий оператора при вводе ИК и где выбирается план.";

        public string Version => "0.1";
        public string Status => "superseded";
        public string[] Comments => new[]
        {
            "2026-08-14. Заменён ADR-007: отказ от планов съёмки — свободное формирование пакета кадров, вид ИК определяется при обработке.",
        };
        public Type? Supersedes => null;

        public static string S1_Context = """
            ## Контекст

            Формы информационных карт различаются по видам документов: у ИК книги-издания две стороны, у ИК рукописи
            больше листов. Жёстко зашитая последовательность ввода обслужила бы
            только один вид.

            В проекте-доноре (сервис обогащения фонда) аналогичный «план съёмки» является **настройкой библиотеки**,
            которая живёт в профиле пользователя и меняется редко.
            """;

        public static string S2_Decision = """
            ## Решение

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

            **Выбор плана — на форме ввода**, а не в профиле. Выбор запоминается до следующего изменения оператором;
            смена плана немедленно перестраивает конвейер операций.

            Промежуточная кнопка «Сформировать план» не вводится: при потоке в тысячи карт лишнее нажатие на каждой
            карте не окупается, а план и так запоминается.
            """;

        public static string S3_Rationale = """
            ## Обоснование

            Отличие от донора сознательное. Там вид обрабатываемого объекта в пределах рабочего места постоянен, здесь
            же оператор разбирает архив, в котором соседние карты могут относиться к разным видам документов. Прятать
            такой выбор в профиль означало бы заставлять оператора ходить в настройки посреди потока.
            """;

        public static string S35_StepGranularity = """
            ## Гранулярность шагов плана

            **Шаг плана соответствует физическому действию оператора, а не полю данных.**

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

            Обратное решение — шаг на каждое поле — обходится в четыре подтверждения и четыре перехода
            между экранами на каждой карте; на архиве в 50 тыс. карт это десятки часов. Хуже того, два поля
            из четырёх предзаполнены (место хранения из профиля, дата текущая), и отдельные шаги для них
            дают оператору работу без содержания.

            Исключение сохраняется для ввода со **сканера**: там нужен единственный элемент в фокусе, потому
            что сканер печатает в активное поле и завершает ввод, и соседние поля мешают. Такой шаг
            выделяется отдельно.
            """;

        public static string S4_Consequences = """
            ## Следствия

            - Справочник планов ввода становится объектом администрирования, связанным со справочником видов ИК.
            - Состав операций плана влияет на то, какие поля ожидаются при распознавании, — план является контекстом
              для обработки, а не только сценарием интерфейса.
            - План остаётся регламентом, но не запретом: материалы вне плана разрешены (см. «Планы ввода информационных карт»).
            """;

        public static string S99_Related = $"""
            ## Связанные артефакты

            - {nameof(Ban.Sdaid.Icd.Requirements.FR_008_FreePacketComposition)} — Свободное формирование пакета кадров (заместило планы)
            """;
    }
}