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)} — Свободное формирование пакета кадров (заместило планы)
""";
}
}