Endpoint: NormalizePacket
Ручной запуск обработки (нормализации orthocover) кадров пакета: перекошенное фото → выровненное «как со сканера». Поведение — NormalizePacketHandler.
1. Транспорт
POST /api/InputPacket/{id}/frames/{order}/normalize— обработать один кадр (ручной запуск «повторить обработку» на этапе предобработки).POST /api/InputPacket/{id}/normalize— обработать все кадры пакета.
Параметры — в пути, тела запроса нет. Ответ — единая обёртка со сводкой по кадрам. Обработка синхронная (≈2–5 с/кадр); фоновой очереди пока нет.
2. Command
/// <summary>Команда обработки: `FrameOrder` задан — один кадр; null — все кадры пакета.</summary>
public class NormalizePacketCommand : BasedCommand
{
public Guid PacketId { get; init; }
/// <summary>Порядковый номер кадра; null — обработать все кадры.</summary>
public int? FrameOrder { get; init; }
}
3. Result
/// <summary>Результат обработки (обёртка + сводка по кадрам).</summary>
public class NormalizePacketResult : BasedResult
{
public NormalizedPacketPayload? Payload { get; init; }
}
4. Payload
/// <summary>Итог: сколько кадров обработано/с ошибкой и результат по каждому.</summary>
public class NormalizedPacketPayload
{
public Guid PacketId { get; init; }
public int Processed { get; init; }
public int Failed { get; init; }
public NormalizedFrameInfo[] Frames { get; init; } = new NormalizedFrameInfo[0];
}
5. FrameInfo
/// <summary>Результат обработки одного кадра.</summary>
public class NormalizedFrameInfo
{
public int Order { get; init; }
public string Role { get; init; } = "";
/// <summary>Получена обработанная картинка (у barcode-типа — нет).</summary>
public bool HasImage { get; init; }
/// <summary>Флаг качества/режима (напр. low_quality); null — нет.</summary>
public string? Flag { get; init; }
/// <summary>Текст ошибки по кадру (сервис недоступен и т.п.); null — успех.</summary>
public string? Error { get; init; }
}
Структурные связи
Использует
- Handler Handler: NormalizePacket
Используется
- Экран Очередь обработки
- Handler Handler: NormalizePacket