⟨/⟩ 55_Backend/Handlers/InputPackets/GetInputQueueHandler.cs

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

using System;
using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd;
using Ban.Sdaid.Icd.Api.Endpoints.InputPackets.GetInputQueue;
using Ban.Sdaid.Icd.Domain.Capture;

namespace Ban.Sdaid.Icd.Backend.Handlers.InputPackets
{
    /// <summary>Handler выдачи очереди пакетов обработки.</summary>
    public class GetInputQueueHandler : IHandlerDocument, IFolder<BackendFolder>, IHasStructuralLinks
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Ban.Sdaid.Icd.Domain.BC_Icd>(),
            Rel.Uses<InputPacketSpec>(),
            Rel.Uses<DOC_GetInputQueue>(),
        };

        public static string _refName = "Handler GetInputQueue";

        public string Name => "Handler: GetInputQueue";

        public string Description =>
            @"Что произойдёт при вызове endpoint GetInputQueue: собрать список пакетов очереди с составом, исключив мягко удалённые.";

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

        public static string Purpose = $"""
            ## Назначение

            Канонический сценарий обработки {SdaidAnchors.RefTo<DOC_GetInputQueue>()}
            (`{nameof(GetInputQueueQuery)}`). Отдаёт странице «Обработка очереди» список пакетов
            ({SdaidAnchors.RefTo<InputPacketSpec>()}) с их составом — кадрами и идентификаторами.
            """;

        public static string Scenario = $"""
            ## Сценарий вызова

            1. Прочитать пакеты из БД, **исключив мягко удалённые** (`{nameof(InputPacket.Deleted)}` = true),
               с кадрами и идентификаторами; отсортировать от новых к старым по `{nameof(InputPacket.QueuedAt)}`.
            2. Смаппить в `{nameof(QueuePacketItem)}`: русские подписи ролей (если роль уже определена; на вводе
               не задаётся — тогда null) и видов идентификаторов.
            3. Вернуть `{nameof(GetInputQueueResult)}` с `{nameof(InputQueuePayload)}`.

            Операция только читает — записи и ветвлений по правам в ней нет.
            """;
    }
}