⟨/⟩ 40_Arch/ADR/ADR_010_FreeFramePacketWithoutPlan.cs

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

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

namespace Ban.Sdaid.Icd.Arch.Adr
{
    /// <summary>Решение: пакет формируется свободно (произвольный набор кадров без плана); вид ИК и роли кадров определяются при обработке.</summary>
    public class ADR_010_FreeFramePacketWithoutPlan : IAdrDocument
    {
        public string Name => "ADR-010. Свободное формирование пакета без плана ввода (замещено)";

        public string Description =>
            @"Отказ от планов съёмки: оператор снимает произвольное число кадров, вид ИК и роли определяются при обработке.";

        public string Version => "1.0";
        public string Status => "superseded";
        public string[] Comments => new[]
        {
            "2026-08-14. Принято взамен ADR-001 (план ввода по виду ИК).",
            "2026-08-18. Перенумеровано с ADR-006 (номер занят решением о структуре данных карты) и замещено ADR-007: та же идея отказа от плана, но привязка кадра — страница формы, а не роль изображения.",
        };

        public Type? Supersedes => typeof(ADR_001_InputPlanDrivenByCardKind);

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

            Ввод по плану (ADR-001) навязывал оператору заранее заданную последовательность: выбрать план по виду
            ИК, снимать кадры в предписанных видах, вводить идентификаторы. На потоке это трение: оператор должен
            заранее знать вид документа и держать в голове регламент, а соседние карты в архиве — разных видов.

            При этом определение вида ИК и извлечение полей всё равно выполняются автоматически при обработке
            (FR-003 — «определяет вид ИК по макету формы и составу полей»). Значит, требовать эти сведения от
            оператора на вводе — дублирование работы, которую сделает система.
            """;

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

            **Пакет формируется свободно.** Оператор снимает произвольное число кадров без ограничений и без плана —
            набор кадров и есть пакет. Порядок кадров — порядок съёмки (можно переставлять и удалять).

            **Роли кадров на вводе не задаются.** Вид (роль) каждого кадра определяет система при обработке; до этого
            роль не назначена. Ключ хранения — по порядковому номеру, без роли (ADR-002).

            **Идентификаторы на вводе не вводятся.** Шифр, инвентарный номер и прочее извлекаются при обработке
            (позже — отдельным сервисом извлечения полей); ручной ввод на форме съёмки убран.

            **План ввода как сущность удаляется** — из домена, контракта и справочника. Форма ввода не выбирает план.
            """;

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

            Планы имели смысл, если бы оператор задавал контекст, недоступный системе. Но вид ИК система определяет
            сама по изображению, а идентификаторы — извлекает. Единственное, что действительно нужно от оператора, —
            **качественные кадры документа**; всё остальное лучше получить автоматически, чем вводить руками на потоке.

            Отказ упрощает и интерфейс (нет плана, степпера, форм идентификаторов), и контракт (пакет = кадры), и
            домен (уходят `InputPlan`/`InputOperation`).
            """;

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

            - Форма ввода — свободная съёмка: область захвата (камера/диск/ссылка) и накопитель кадров.
            - Роль кадра становится **результатом обработки**, а не вводом оператора; привязка распознанных значений
              к виду кадра сохраняется (ADR-005) — вид присваивает система.
            - Справочник планов ввода и endpoint его выдачи не нужны.
            - «Материалы вне плана» как понятие исчезают: все кадры равнозначны.
            - Определение вида ИК и извлечение атрибутов (в т.ч. идентификаторов) — ответственность этапа обработки
              (FR-003), вне процесса формирования пакета.
            """;

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

            - {nameof(Ban.Sdaid.Icd.Requirements.FR_008_FreePacketComposition)} — свободное формирование пакета кадров.
            - {nameof(Ban.Sdaid.Icd.Requirements.FR_003_AttributeExtraction)} — определение вида ИК и извлечение атрибутов при обработке.
            - {nameof(Ban.Sdaid.Icd.Arch.Adr.ADR_002_PacketIdentityAndFileKeys)} — ключ хранения без роли.
            - {nameof(Ban.Sdaid.Icd.Arch.Adr.ADR_005_FieldValueSourceBinding)} — привязка значения к виду кадра (вид присваивает система).
            """;
    }
}