using Ban.Sdaid.Notation.Documents;
namespace Ban.Sdaid.Icd.Epics.RecognitionStand.UseCases
{
/// <summary>Use-case: разметка трафарета по эталонному бланку в редакторе.</summary>
public class DesignTemplateUseCase : IUseCaseDocument, IHasStructuralLinks
{
public static string _refName = "сценарий «Разметка трафарета»";
public string Name => "Разметка трафарета по эталонному бланку";
public string Description =>
@"Аналитик открывает эталонный скан вида страницы, размечает клетки (checkbox/text) с путями и подписями вручную, опираясь на детекцию линий сетки, и выгружает трафарет в JSON.";
public string Version => "0.1";
public string Status => "draft";
public string[] Comments => new[]
{
"2026-08-24. Первичная фиксация сценария редактора трафарета.",
};
public string PrimaryActor => "Аналитик";
public SdaidLink[] Links => new[]
{
Rel.Realizes<EPIC_RecognitionStand>(),
};
public static string S1_Given = """
## Given
- Открыт редактор трафарета (`editor/template-editor.html`) через локальный прокси.
- Есть чистый эталонный скан нужного вида страницы (`page_type`).
""";
public static string S2_When = """
## When
1. Аналитик загружает эталонный скан; изображение выравнивается по вертикали (deskew).
2. Редактор детектирует линии сетки (с NMS-порогом близости) и рамку-якорь по контенту.
3. Аналитик размечает клетки: рисует прямоугольники или кликает по клетке сетки
(примагничивание к линиям), задаёт тип (checkbox/text), путь-секцию и подпись;
id клетки генерируется из подписи.
4. Аналитик выгружает трафарет в JSON (рамка-якорь, линии, клетки в долях 0..1).
""";
public static string S3_Then = """
## Then
- Получен JSON-трафарет вида страницы: `page_type`, `anchor_frame`, `lines`, `cells`.
- Клетки несут путь-секцию и подпись — самую трудоёмкую, смысловую часть разметки.
- Трафарет пригоден для применения к другим сканам того же вида (см. сценарий применения).
""";
public static string S4_Alternatives = """
## Альтернативы и ошибки
| Ситуация | Поведение |
|---|---|
| Линии бледные/рваные (низкое разрешение) | Часть направляющих не детектится; аналитик добавляет их вручную и двигает |
| Две направляющие близко, ячейка между ними | Клик приоритетно берёт ячейку, а не линию; линию можно взять вне ячеек |
| Готовый трафарет нужно поправить | Импорт JSON в редактор → правка клеток → повторный экспорт |
| Другой вариант того же бланка | Нужен отдельный трафарет: состав колонок отличается, не только координаты |
""";
public static string S5_Trace = $"""
## Трассировка
| Шаг | Инструмент |
|---|---|
| Разметка клеток, детекция линий, экспорт/импорт | `editor/template-editor.html` |
Эпик — {nameof(EPIC_RecognitionStand)}.
""";
}
}