⟨/⟩ 45_Api/Endpoints/InputPackets/GetFrameContent.cs

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

using System;
using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd;
using Ban.Sdaid.Icd.Domain.Capture;
using Ban.Sdaid.Icd.Arch.Adr;

namespace Ban.Sdaid.Icd.Api.Endpoints.InputPackets.GetFrameContent
{
    /// <summary>Документ-обёртка над endpoint выдачи содержимого кадра (изображения).</summary>
    public class DOC_GetFrameContent : IApiContractDocument, IFolder<ApiFolder>, IHasStructuralLinks
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<InputPacketSpec>(),
            Rel.Uses<ADR_002_PacketIdentityAndFileKeys>(),
        };

        public static string _refName = "Endpoint GetFrameContent";

        public string Name => "Endpoint: GetFrameContent";

        public string Description =>
            @"Бинарное содержимое кадра пакета (изображение) для просмотра на странице «Обработка очереди». Отдаётся напрямую из файлового хранилища — отдельного CQRS-handler нет.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public static string Transport = """
            ## Транспорт

            `GET /api/InputPacket/{id}/frames/{order}/content` — `id` пакета и `order` кадра в пути.
            Ответ — бинарный поток изображения (`Content-Type` по расширению ключа хранения), а не обёртка.
            `404`, если пакет, кадр или файл не найден.

            Параметр `variant=normalized` отдаёт **обработанную** (нормализованную) версию кадра — для
            переключения «оригинал ↔ обработанное» (ADR-SRV-005); без параметра — оригинал. Нет обработанной
            версии → `404`.
            """;

        public static string Behavior = $"""
            ## Поведение

            Находит кадр пакета по `order`, открывает файл по ключу хранения
            ({SdaidAnchors.RefTo<ADR_002_PacketIdentityAndFileKeys>()}) в файловом хранилище и отдаёт поток.
            Прикладной логики и CQRS-handler нет — это прямое чтение файла. Служит просмотрщику кадра (лайтбокс)
            и превью-миниатюрам в составе пакета.
            """;
    }
}