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 нет — это прямое чтение файла. Служит просмотрщику кадра (лайтбокс)
и превью-миниатюрам в составе пакета.
""";
}
}