sequenceDiagram
autonumber
participant K as Apache Kafka Cluster
participant Worker as camera-vision-processor (AID)
participant GW as FastAPI Gateway (backend-api)
K->>Worker: Поток бинарных кадров (Byte[]) из топика media.camera.stream.v2
activate Worker
Note over Worker: Распаковка JPEG массива<br/>Инференс модели детекции (YOLO/ViT)
alt Успешный инференс (Success)
Worker->>GW: gRPC / Event: STREAM_PREDICTION_UPDATED (verified_sku, confidence)
else Ошибка декодирования (ERR-FRAME-DECODE-FAILED)
Worker->>GW: Асинхронное бизнес-исключение: ERR-FRAME-DECODE-FAILED
end
deactivate Worker
Метод ProcessCameraStreamInference (AID)
Документация AI-воркера: Потоковый инференс компьютерного зрения для видеопотока камеры
В открытом доступе представлена демонстрационная версия метода. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Будет доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
Функциональное назначение
Русский
Асинхронный воркер слоя ИИ (camera-vision-processor) предназначен для непрерывной обработки бинарного видеопотока, поступающего от камеры мобильного клиента. Метод решает задачу классификации и детекции продуктов питания «на лету» (Real-time Object Detection), обеспечивая пользователя мгновенными подсказками по составу корзины до момента фиксации кадра.
English
The asynchronous AI layer worker (camera-vision-processor) is designed for continuous processing of the binary video stream received from the mobile client’s camera. The method solves the problem of real-time food asset classification and detection, providing the user with instantaneous UI predictive feedback before the frame is locked.
Протокол взаимодействия (Событийный контракт) / Communication Protocol (Event Contract)
- Тип метода / Method Type: Asynchronous Event Stream Consumer / gRPC Producer
- Входной топик / Input Kafka Topic:
media.camera.stream.v2 - Формат ключа / Key Format:
String(session_id) - Формат значения / Value Format:
Byte[](Raw JPEG bytes)
Спецификация входного события / Input Event Message Specification
Конфигурация заголовков сообщения (Kafka Headers)
| Ключ заголовка / Header Key | Тип данных / Type | Описание / Description | Пример / Example |
|---|---|---|---|
x-request-id |
String | Сквозной ID сессии для распределенного трейсинга / End-to-end tracing ID | stream-7a2b-9c1d-00ef |
frame_timestamp |
String (ISO) | Время захвата кадра на устройстве / Frame capture timestamp | 2026-07-01T21:10:05.123Z |
user_id |
String | Идентификатор владельца сессии / Identifier of the session owner | usr-8822-fa41 |
Диаграмма последовательности (Mermaid)
Расшифровка шагов
Русский
| Шаг | Компонент (Из) | Направление | Компонент (В) | Операция / Тело события | Бизнес-исключения |
|---|---|---|---|---|---|
| 1 | Apache Kafka Broker | --> |
camera-vision-processor | Чтение бинарного кадра Byte[] и заголовков сообщения |
|
| 2 | camera-vision-processor | --> |
camera-vision-processor | Распаковка JPEG, инференс модели детекции и классификации | ERR-FRAME-DECODE-FAILED |
| 3 | camera-vision-processor | --> |
FastAPI Gateway | Эмит gRPC/Event: событие STREAM_PREDICTION_UPDATED с verified_sku и confidence |
No business errors |
English
| Step | Component (From) | Direction | Component (To) | Operation / Event Payload | Business Exceptions |
|---|---|---|---|---|---|
| 1 | Apache Kafka Broker | --> |
camera-vision-processor | Consume binary frame Byte[] and message headers |
|
| 2 | camera-vision-processor | --> |
camera-vision-processor | Unpack JPEG, run object detection and classification inference | ERR-FRAME-DECODE-FAILED |
| 3 | camera-vision-processor | --> |
FastAPI Gateway | Emit gRPC/Event: STREAM_PREDICTION_UPDATED with verified_sku and confidence |
No business errors |
Примеры исходящих ответов / Output Payload Examples
Промежуточное событие предикта / Intermediate Prediction Frame Event (STREAM_PREDICTION_UPDATED)
Генерируется на каждом успешном шаге инференса кадра и передается обратно в шлюз для трансляции в WebSocket.
{
"event_type": "STREAM_PREDICTION_UPDATED",
"timestamp": "2026-07-01T21:10:05.180Z",
"trace_id": "stream-7a2b-9c1d-00ef",
"data": {
"detected_sku": "TOMATO",
"confidence": 0.915,
"bounding_box": {
"x_min": 120,
"y_min": 45,
"x_max": 340,
"y_max": 410
}
}
}Ответ при возникновении бизнес-исключения / Business Exception Event (ERR-FRAME-DECODE-FAILED)
Генерируется в случае невозможности декомпрессии бинарного массива кадра.
{
"error_code": "ERR-FRAME-DECODE-FAILED",
"message": "Не удалось декодировать бинарный кадр изображения / Failed to decode binary image frame.",
"details": {
"reason": "Corrupted byte stream array or unsupported image compression format.",
"timestamp": "2026-07-01T21:10:06.002Z"
}
}