using Ban.Sdaid.Notation.Documents;
namespace Ban.Sdaid.Icd.Epics.CardInput
{
/// <summary>Эпик «Ввод информационных карт» — сбор кадров бумажной ИК в пакет.</summary>
public class EPIC_CardInput : IEpicDocument
{
public static string _refName = "эпик «Ввод информационных карт»";
public string Name => "Ввод информационных карт";
public string Description =>
@"Пользователь снимает или загружает кадры страниц бумажной информационной карты и завершает ввод одной командой; пакет уходит в очередь обработки.";
public string Version => "0.2";
public string Status => "draft";
public string[] Comments => new[]
{
"2026-08-14. Переписано по ADR-007: свободное формирование пакета вместо конвейера по плану.",
};
public static string S1_Goal = """
## Цель
Дать пользователю быстро и без ошибок перевести бумажную форму ИК в набор изображений,
пригодный для автоматической обработки. Ключевое ограничение — **поток**: архив 50 тыс.
карт, поэтому каждое лишнее действие на карте умножается на пять десятков тысяч.
Отсюда устройство ввода: никакой подготовки, никакого выбора вида карты или плана —
только съёмка страниц подряд и одна команда завершения. Всё, что можно вывести
из изображения, выводит Сервис при обработке.
""";
public static string S2_Actors = """
## Акторы
| Актор | Роль в эпике |
|---|---|
| Хранитель | снимает и загружает кадры, правит состав пакета, завершает ввод карты |
| Сервис | назначает номер пакета и ключи хранения файлов, принимает пакет в очередь |
""";
public static string S3_Scope = $"""
## Границы
**Входит:** три способа добавления изображений, накопление кадров в пакете, изменение
порядка, просмотр, пересъёмка и удаление кадра, ограничение размера пакета, завершение
ввода карты и постановка пакета в очередь.
**Не входит:** определение вида ИК и формы бланка, распределение кадров по страницам,
распознавание и проверка результатов — всё это эпик обработки пакета. Ведение форм
и состава видов ИК — администрирование.
Требования: {nameof(Ban.Sdaid.Icd.Requirements.FR_001_ImageInput)}, {nameof(Ban.Sdaid.Icd.Requirements.FR_008_FreePacketComposition)}.
""";
public static string S4_AcceptanceCriteria = """
## Критерии приёмки
1. Экран ввода не требует никакого выбора до начала съёмки: ни вида карты, ни плана,
ни идентификации.
2. Изображение добавляется камерой рабочего места (живое превью и кнопка съёмки), с диска (в том числе несколькими файлами
и перетаскиванием) и по ссылке; все три способа доступны одновременно.
3. Каждому кадру присваивается очередной номер; порядок меняется перетаскиванием,
имена файлов пересчитываются вслед за порядком.
4. Кадр можно открыть на просмотр, переснять и удалить до завершения ввода.
5. Число кадров в пакете ограничено настройкой; при попытке превысить предел кадр
не добавляется и показывается сообщение.
6. Ввод карты завершается единственным действием — «Сохранить и перейти к следующей»;
экран очищается под следующую карту, способ ввода изображений сохраняется.
7. Пакет попадает в очередь автоматически: отдельного действия постановки нет.
8. До завершения ввода пакет не имеет номера; после — номер вида `П-ГГГГММДД-NNN`
показан в списке созданных за смену.
""";
public static string S5_OpenQuestions = """
## Открытые вопросы
| № | Вопрос |
|---|---|
| OQ-CI-1 | Предел числа кадров задаётся глобально или на вид ИК: у формы на рукопись пять страниц, у графики состав ещё не известен |
| OQ-CI-2 | Нужен ли пользователю возврат к уже созданному пакету со снятой картой — например, чтобы доснять страницу, замеченную сразу после завершения |
| OQ-CI-3 | Выбор камеры при нескольких подключённых устройствах на рабочем месте |
| OQ-CI-4 | Работа камеры вне localhost требует HTTPS (secure context) — как разворачивается на стендах |
""";
public static string S99_Related = $"""
## Связанные артефакты
- {nameof(Ban.Sdaid.Icd.Requirements.FR_001_ImageInput)} — Ввод изображений информационных карт
- {nameof(Ban.Sdaid.Icd.Requirements.FR_008_FreePacketComposition)} — Свободное формирование пакета кадров
- {nameof(Ban.Sdaid.Icd.Arch.Adr.ADR_007_InputWithoutPlan)} — решение о вводе без плана
""";
}
}