Endpoint: SubmitInputPacket
Постановка собранного пакета ввода в очередь: произвольный набор кадров одной ИК, без плана. Поведение — SubmitInputPacketHandler.
1. Транспорт
POST /api/InputPacket, multipart/form-data:
- часть
payload— JSON метаданных пакета (формаSubmitInputPacketCommandниже); - части
files— бинарное содержимое кадров; кадр ссылается на свой файл поFileIndex.
Кадр-ссылка (Source = Url) содержимого не несёт — сервер скачивает изображение по Url сам.
2. Endpoint
/// <summary>Endpoint постановки пакета в очередь.</summary>
public class SubmitInputPacketEndpoint
{
public SubmitInputPacketCommand? Input { get; set; }
public SubmitInputPacketResult? Output { get; set; }
}
3. Command (часть payload)
/// <summary>Метаданные сдаваемого пакета (JSON-часть multipart).</summary>
public class SubmitInputPacketCommand : BasedCommand
{
/// <summary>Кадры пакета (минимум один — пакет не может быть пустым). Роль на вводе не задаётся.</summary>
public SubmitFrameItem[] Frames { get; init; } = new SubmitFrameItem[0];
}
4. FrameItem
/// <summary>Описание одного кадра: метаданные + привязка к содержимому (файл или URL).</summary>
public class SubmitFrameItem
{
/// <summary>Способ получения: камера, диск, ссылка.</summary>
[Relation]
public ImageSource Source { get; init; }
/// <summary>Порядок кадра в пакете.</summary>
public int Order { get; init; }
/// <summary>Исходное имя файла (для диска/ссылки).</summary>
public string? OriginalFileName { get; init; }
/// <summary>Момент получения кадра.</summary>
public DateTime CapturedAt { get; init; }
/// <summary>Индекс файла в части `files` (для источников камера/диск).</summary>
public int? FileIndex { get; init; }
/// <summary>URL изображения (для источника «ссылка»); сервер скачивает содержимое.</summary>
public string? Url { get; init; }
}
5. Result
/// <summary>Результат постановки в очередь.</summary>
public class SubmitInputPacketResult : BasedResult
{
/// <summary>Сведения о сданном пакете; null при ошибке.</summary>
public SubmittedPacketPayload? Payload { get; init; }
}
6. Payload
/// <summary>Сданный пакет — номер, время и состав (для списка «сдано за смену»).</summary>
public class SubmittedPacketPayload
{
public Guid Id { get; init; }
/// <summary>Присвоенный сервером номер вида П-ГГГГММДД-NNN.</summary>
public string Number { get; init; } = "";
public DateTime QueuedAt { get; init; }
public int FramesCount { get; init; }
}
Структурные связи
Использует
- Handler Handler: SubmitInputPacket
Используется
- Handler Handler: SubmitInputPacket