⟨/⟩ 60_Epics/RecognitionStand/UseCases/DesignTemplate/DesignTemplateUseCase.cs

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

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)}.
            """;
    }
}