ERRORS: Мониторинг и сквозной контроль (End-to-End) системных состояний

Часть 1: Спецификация доменных ошибок (IAD, MDM, INVENTORY)

Published

July 13, 2026

WarningОграничение публичной документации

В открытом доступе представлена демонстрационная версия метода. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.

  • Полная спецификация метода: Будет доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).

1. Домен Идентификации и Доступа: Identity & Access Domain (IAD)

Специализированные коды auth-service для контроля сессий, Dual Token ротации и прав мультитендентных групп.

Login & Register (IAD)

Исходный триггер (Бэкенд / СУБД / Клиент) gRPC / HTTP Статус Каноничный код (canonical_code) Реакция интерфейса (ui_reaction) JSON для логов и метрик (Бэкенд аналитика / ELK / Prometheus) JSON для маппинга из error_directory (Ответ для Фронтенда)
DioException: send timeout
IAD_CLIENT_SEND_TIMEOUT Показать локальный Alert-toast: «Превышено время ожидания отправки. Проверьте сеть». {
"level": "WARN",
"metric_name": "client_network_errors_total",
"labels": {
"type": "send_timeout",
"stage": "gateway_entry"
}
}
{
"canonical_code": "IAD_CLIENT_SEND_TIMEOUT",
"localized_text": "Не удалось отправить запрос. Проверьте интернет-соединение.",
"http_status": "0 Client Timeout"
}
HTTP 400 Bad Request: validation fail INVALID_ARGUMENT (3)
400 Bad Request
IAD_AUTH_BAD_REQUEST_FORMAT Подсветить поле Email красным цветом и вывески ошибку контракта. {
"level": "WARN",
"metric_name": "client_contract_violations",
"labels": {
"validator": "nginx_gateway",
"field": "email_format"
}
}
{
"canonical_code": "IAD_AUTH_BAD_REQUEST_FORMAT",
"localized_text": "Некорректный формат адреса электронной почты или параметров.",
"http_status": "400 Bad Request"
}
Nginx: Rate Limit exceeded RESOURCE_EXHAUSTED (8)
429 Too Many Requests
IAD_AUTH_RATE_LIMIT_EXCEEDED Заблокировать форму ввода на 60 секунд, показать таймер обратного отсчета. {
"level": "WARN",
"metric_name": "rate_limit_blocks_total",
"labels": {
"subsystem": "nginx_limit_req",
"zone": "auth_endpoints"
}
}
{
"canonical_code": "IAD_AUTH_RATE_LIMIT_EXCEEDED",
"localized_text": "Слишком много запросов. Пожалуйста, подождите перед следующей попыткой.",
"http_status": "429 Too Many Requests"
}
Nginx Proxy: upstream unavailable UNAVAILABLE (14)
502 Bad Gateway
IAD_INFRA_GATEWAY_DOWN Перенаправить пользователя на полноэкранную заглушку: «Сервер на техническом обслуживании». {
"level": "ERROR",
"metric_name": "nginx_upstream_failures_total",
"labels": {
"target": "backend_api_container",
"status": "502"
}
}
{
"canonical_code": "IAD_INFRA_GATEWAY_DOWN",
"localized_text": "Сервис временно недоступен. Инженеры уже в курсе.",
"http_status": "502 Bad Gateway"
}
FastAPI Gateway: downstream timeout DEADLINE_EXCEEDED (4)
504 Gateway Timeout
IAD_INFRA_GATEWAY_TIMEOUT Показать Alert-toast: «Сервер не ответил вовремя. Попробуйте еще раз». {
"level": "ERROR",
"metric_name": "gateway_downstream_timeouts_total",
"labels": {
"service": "auth_service_grpc"
}
}
{
"canonical_code": "IAD_INFRA_GATEWAY_TIMEOUT",
"localized_text": "Время ожидания ответа от сервера истекло. Повторите попытку.",
"http_status": "504 Gateway Timeout"
}
Pydantic: space_creation_mode fail INVALID_ARGUMENT (3)
422 Unprocessable Entity
IAD_CONTRACT_INVALID_SPACE_MODE Вывести системную ошибку, заблокировать кнопку отправки формы регистрации. {
"level": "WARN",
"metric_name": "client_contract_violations",
"labels": {
"validator": "pydantic",
"field": "space_creation_mode"
}
}
{
"canonical_code": "IAD_CONTRACT_INVALID_SPACE_MODE",
"localized_text": "Передан некорректный или неподдерживаемый режим инициализации пространства.",
"http_status": "422 Unprocessable Entity"
}
PostgreSQL: users_email_key violation ALREADY_EXISTS (6)
409 Conflict
IAD_AUTH_EMAIL_DUPLICATE Подсветить поле ввода Email красным цветом, заблокировать сабмит. {
"level": "ERROR",
"metric_name": "registration_failed_total",
"labels": {
"reason": "email_taken",
"domain": "auth"
}
}
{
"canonical_code": "IAD_AUTH_EMAIL_DUPLICATE",
"localized_text": "Данный Email уже зарегистрирован в системе.",
"http_status": "409 Conflict"
}
Bcrypt: password validation mismatch UNAUTHENTICATED (16)
401 Unauthorized
IAD_AUTH_INVALID_PASSWORD Показать Alert-toast «Неверные учетные данные», полностью очистить поле ввода пароля. {
"level": "WARN",
"metric_name": "login_failed_total",
"labels": {
"reason": "bad_password",
"security_level": "low"
}
}
{
"canonical_code": "IAD_AUTH_INVALID_PASSWORD",
"localized_text": "Неверный логин или пароль.",
"http_status": "401 Unauthorized"
}
PostgreSQL: ConnectionPoolTimeout UNAVAILABLE (14)
503 Service Unavailable
IAD_INFRA_DB_TIMEOUT Показать системный Full-screen overlay технического обслуживания («База данных перегружена»). {
"level": "ERROR",
"metric_name": "infra_db_pool_starvation_total",
"labels": {<br/> "pool": "auth_db",<br/> "severity": "high"<br/> }
}
{
"canonical_code": "IAD_INFRA_DB_TIMEOUT",
"localized_text": "Сервер базы данных временно перегружен. Попробуйте зайти позже.",
"http_status": "503 Service Unavailable"
}
CryptoException: KeySigningError INTERNAL (13)
500 Internal Server Error
IAD_CRYPTO_SIGNING_ERROR Показать системный модальный алерт: «Внутренняя ошибка генерации сессии. Обратитесь в поддержку». {
"level": "CRITICAL",
"metric_name": "crypto_key_faults_total",
"labels": {
"operation": "jwt_sign",
"algorithm": "RS256"
}
}
{
"canonical_code": "IAD_CRYPTO_SIGNING_ERROR",
"localized_text": "Критическая ошибка сервера при подписи сессии безопасности.",
"http_status": "500 Internal Server Error"
}
DioException: receive timeout
IAD_CLIENT_RECEIVE_TIMEOUT Показать ненавязчивый Bottom-toast: «Сессия создана, но ответ от сервера задерживается». {
"level": "WARN",
"metric_name": "client_network_errors_total",
"labels": {
"type": "receive_timeout",
"stage": "response_delivery"
}
}
{
"canonical_code": "IAD_CLIENT_RECEIVE_TIMEOUT",
"localized_text": "Превышено время ожидания ответа. Проверьте статус операции в приложении.",
"http_status": "0 Client Timeout"
}

Refresh & Logout (IAD)

Исходный триггер (Бэкенд / СУБД / Клиент) gRPC / HTTP Статус Каноничный код (canonical_code) Реакция интерфейса (ui_reaction) JSON для логов и метрик (Бэкенд аналитика / ELK / Prometheus) JSON для маппинга из error_directory (Ответ для Фронтенда)
Redis.ConnectionError: Connection refused UNAVAILABLE (14)
503 Service Unavailable
IAD_INFRA_REDIS_FAIL_CLOSE Жесткая блокировка UI. Разлогинить пользователя и показать экран «Проблемы с безопасностью сети». {
"level": "CRITICAL",
"metric_name": "infra_redis_down_incidents",
"labels": {
"subsystem": "blacklist",
"strategy": "fail_close"
}
}
{
"canonical_code": "IAD_INFRA_REDIS_FAIL_CLOSE",
"localized_text": "Критическая ошибка безопасности ядра авторизации. Доступ временно заблокирован.",
"http_status": "503 Service Unavailable"
}
Redis: refresh_token blacklist match UNAUTHENTICATED (16)
401 Unauthorized
IAD_JWT_REFRESH_STOLEN Срабатывание защиты Interceptor: полная очистка SecureStorage и принудительный вылет на экран Login. {
"level": "CRITICAL",
"metric_name": "security_token_reuse_alerts",
"labels": {
"token_type": "refresh",
"action": "force_logout"
}
}
{
"canonical_code": "IAD_JWT_REFRESH_STOLEN",
"localized_text": "Текущая сессия скомпрометирована или устарела. Требуется повторный вход.",
"http_status": "401 Unauthorized"
}
PostgreSQL: session rows not found NOT_FOUND (5)
401 Unauthorized
IAD_SESSION_NOT_FOUND Остановить очередь запросов Dio Interceptor, сбросить токены и открыть форму входа. {
"level": "WARN",
"metric_name": "session_validation_failures",<br/> "labels": {
"reason": "missing_in_db"
}
}
{
"canonical_code": "IAD_SESSION_NOT_FOUND",
"localized_text": "Активная сессия устройства не найдена в базе данных.",
"http_status": "401 Unauthorized"
}
PostgreSQL: user_sessions Deadlock ABORTED (10)
500 Internal Server Error
IAD_SESSION_ROTATION_DEADLOCK Заморозить Interceptor на 2 секунды и выполнить повторную автоматическую попытку ротации (Retry). {
"level": "ERROR",
"metric_name": "db_transaction_deadlocks_total",
"labels": {
"table": "user_sessions",
"operation": "rotate_tokens"
}
}
{
"canonical_code": "IAD_SESSION_ROTATION_DEADLOCK",
"localized_text": "Внутренняя ошибка коллизии транзакций на сервере при обновлении ключей.",
"http_status": "500 Internal Server Error"
}
App: SecureStorage write failure
IAD_CLIENT_HARDWARE_KEYSTORE_FAIL Показать диалоговое окно ОС: «Недостаточно защищенной памяти устройства для сохранения ключей сессии». {
"level": "ERROR",
"metric_name": "client_hardware_faults_total",
"labels": {
"storage": "ios_keychain_android_keystore",
"operation": "write_tokens"
}
}
{
"canonical_code": "IAD_CLIENT_HARDWARE_KEYSTORE_FAIL",
"localized_text": "Аппаратная ошибка крипто-хранилища смартфона. Попробуйте перезагрузить девайс.",
"http_status": "0 Client Storage Error"
}

Ошибки метода динамической синхронизации справочника (GET /api/v1/auth/error-directory)

Исходный триггер (Бэкенд / СУБД / Клиент) gRPC / HTTP Статус Каноничный код (canonical_code) Реакция интерфейса (ui_reaction) JSON для логов и метрик (Бэкенд аналитика / ELK / Prometheus) JSON для маппинга из error_directory (Ответ для Фронтенда)
gRPC: INVALID_ARGUMENT (app_lang unsupported) INVALID_ARGUMENT (3)
400 Bad Request
IAD_DIRECTORY_UNSUPPORTED_LANG Игнорировать ошибку, принудительно переключить локализацию перехватчика ошибок на дефолтный en. {
"level": "WARN",
"metric_name": "directory_sync_failed_total",
"labels": {
"reason": "invalid_lang_code",
"fallback": "en"
}
}
{
"canonical_code": "IAD_DIRECTORY_UNSUPPORTED_LANG",
"localized_text": "Запрошенный язык локализации справочника ошибок не поддерживается сервером.",
"http_status": "400 Bad Request"
}
PostgreSQL: table "error_directory" does not exist INTERNAL (13)
500 Internal Server Error
IAD_DIRECTORY_SCHEMA_CORRUPTED Использовать жестко захардкоженный дефолтный набор ошибок в коде мобилки. {
"level": "CRITICAL",
"metric_name": "db_schema_faults_total",
"labels": {
"table": "error_directory",
"reason": "missing_relation"
}
}
{
"canonical_code": "IAD_DIRECTORY_SCHEMA_CORRUPTED",
"localized_text": "Внутренняя ошибка сервера: повреждена или отсутствует структура справочников.",
"http_status": "500 Internal Server Error"
}
gRPC: DEADLINE_EXCEEDED (DB response too slow) DEADLINE_EXCEEDED (4)
504 Gateway Timeout
IAD_DIRECTORY_SYNC_TIMEOUT Повторить фоновый запрос синхронизации через 5 минут. Не блокировать интерфейс. {
"level": "ERROR",
"metric_name": "grpc_deadline_exceeded_total",
"labels": {
"rpc_method": "GetErrorDirectory"
}
}
{
"canonical_code": "IAD_DIRECTORY_SYNC_TIMEOUT",
"localized_text": "Истекло время ожидания ответа от мастер-сервиса справочников.",
"http_status": "504 Gateway Timeout"
}
App: JsonUnsupportedObjectError during parsing
IAD_CLIENT_JSON_PARSING_FAIL Записать инцидент в Crashlytics, отменить применение кэша и использовать локальный стейт. {
"level": "ERROR",
"metric_name": "client_serialization_faults_total",
"labels": {
"parser": "dart_json_decode",
"target": "error_directory"
}
}
{
"canonical_code": "IAD_CLIENT_JSON_PARSING_FAIL",
"localized_text": "Не удалось распарсить конфигурационный файл реестра ошибок. Структура пакета повреждена.",
"http_status": "0 Client Parsing Error"
}

2. Домен Реестров и Мастер-Данных: Master Data Registry Domain (MDM)

Специализированные коды справочников номенклатур и кулинарной книги (recipes-service).

Исходный триггер / Исключение (СУБД / gRPC) gRPC Статус HTTP REST Каноничный Код Симулятора Локализованное описание (ru) Контекст поведения / Реакция UI
PostgreSQL: SELECT WHERE recipe_id NOT FOUND NOT_FOUND (5) 404 Not Found MDM_RECIPE_NOT_FOUND Рецепт отсутствует в кулинарной книге. Скрыть кнопку «Готовить», вернуть юзера в Cookbook.
PostgreSQL: recipe_ingredients dependency missing FAILED_PRECONDITION (9) 422 Unprocessable MDM_RECIPE_INTEGRITY_BROKEN Технологическая карта содержит битые ID. Залочить запуск, отправить тикет разработчикам.
PostgreSQL: product_barcode NOT FOUND NOT_FOUND (5) 404 Not Found MDM_BARCODE_UNKNOWN Штрих-код отсутствует в глобальном каталоге. Запустить bpds.mdm.in.product.process для Ollama.
PostgreSQL: nutrient_matrix_catalog EMPTY INTERNAL (13) 500 Internal MDM_CATALOG_DESYNC Системный сбой: Матрица БЖУ не загружена. Заблокировать вкладку Pantry, показать Loader.

3. Домен Склада и Транзакционного Учета: Inventory Domain (INVENTORY)

B2B Store Webhook Sync (STORE)

Исходный триггер (Бэкенд / СУБД / Клиент) gRPC / HTTP Статус Каноничный код (canonical_code) Реакция интерфейса / Интеграции (ui_reaction) JSON для логов и метрик (Бэкенд аналитика / ELK / Prometheus) JSON для маппинга из error_directory (Ответ для Партнера/Фронтенда)
gRPC: UNAUTHENTICATED (Shop token invalid) UNAUTHENTICATED (16)
401 Unauthorized
STORE_B2B_INVALID_TOKEN Мгновенно отклонить запрос внешней торговой сети на шлюзе Nginx/FastAPI, заблокировать повторную обработку. {
"level": "ERROR",
"metric_name": "b2b_webhook_auth_failures_total",
"labels": {
"reason": "bad_secret",
"partner": "magnum"
}
}
{
"canonical_code": "STORE_B2B_INVALID_TOKEN",
"localized_text": "Переданный B2B API-ключ партнера X-Shop-Token не валиден или заблокирован.",
"http_status": "401 Unauthorized"
}
gRPC: NOT_FOUND (Loyalty card token missing) NOT_FOUND (5)
404 Not Found
STORE_B2B_LOYALTY_CARD_NOT_LINKED Вернуть партнеру 404 ошибку. Продукт в базу не зачисляется. Требуется привязка карты в приложении. {
"level": "WARN",
"metric_name": "b2b_webhook_mapping_failures_total",
"labels": {
"reason": "card_not_found"
}
}
{
"canonical_code": "STORE_B2B_LOYALTY_CARD_NOT_LINKED",
"localized_text": "Указанный токен карты лояльности loyalty_card_token не привязан ни к одному аккаунту.",
"http_status": "404 Not Found"
}
Kafka: TimeoutException on message publish
500 Internal Server Error
STORE_INFRA_KAFKA_PUBLISH_TIMEOUT Перехватить ошибку в store-service. Сбросить аварийный сырой JSON чека в буфер Promtail/Loki для ручного разбора инженерами. {
"level": "CRITICAL",
"metric_name": "infra_kafka_broker_timeouts_total",
"labels": {
"topic": "store.inventory.in.receipt.imported",
"action": "promtail_dump"
}
}
{
"canonical_code": "STORE_INFRA_KAFKA_PUBLISH_TIMEOUT",
"localized_text": "Внутренняя ошибка шины данных при асинхронной фиксации чека. Запрос сохранен в лог.",
"http_status": "500 Internal Server Error"
}
PostgreSQL: processed_b2b_receipts duplicate match
STORE_B2B_RECEIPT_DUPLICATE_DROP Идемпотентный сброс: Асинхронный воркер fridge-service тихо гасит транзакцию без вызова алертов. Продукты повторно не начисляются. {
"level": "WARN",
"metric_name": "b2b_idempotency_blocks_total",
"labels": {
"strategy": "drop_message",
"reason": "receipt_already_processed"
}
}
{
"canonical_code": "STORE_B2B_RECEIPT_DUPLICATE_DROP",
"localized_text": "Данный фискальный номер чека для указанного магазина уже был успешно обработан ранее.",
"http_status": "200 OK (Idempotent Drop)"
}
WebSocketException: ConnectionResetError on push
STORE_CLIENT_WEBSOCKET_DISCONNECTED Воркер зачислил продукты в базу, но пропускает пуш-ивент обновления экрана, так как клиент оффлайн. Стейт обновится при следующем открытии приложения. {
"level": "INFO",
"metric_name": "client_websocket_push_dropped_total",
"labels": {<br/> "reason": "client_offline",<br/> "event": "STOCK_INTEGRATION_UPDATED"<br/> }
}
{
"canonical_code": "STORE_CLIENT_WEBSOCKET_DISCONNECTED",
"localized_text": "Продукты успешно зачислены на баланс, но real-time уведомление смартфона не удалось из-за обрыва связи.",
"http_status": "0 Client WebSocket Offline"
}

B2B Financial Processing (BILLING)

Исходный триггер (Бэкенд / СУБД / Кластер) gRPC / HTTP Статус Каноничный код (canonical_code) Реакция интерфейса / Интеграции (ui_reaction) JSON для логов и метрик (Бэкенд аналитика / ELK / Prometheus) JSON для маппинга из error_directory (Ответ для Аналитики)
Kafka: CommitFailedException
BILLING_KAFKA_COMMIT_FAULT Офсет не зафиксирован. Брокер повторно доставит сообщение (Retry). Воркер ожидает дубль и полагается на слой идемпотентности. {
"level": "ERROR",
"metric_name": "billing_kafka_commit_failures_total",
"labels": {
"consumer_group": "billing-b2b-group",
"topic": "bpds.inventory.in.receipt.import"
}
}
{
"canonical_code": "BILLING_KAFKA_COMMIT_FAULT",
"localized_text": "Ошибка фиксации смещения в кластере Kafka. Запущена повторная обработка события.",
"http_status": "500 Kafka Consumer Error"
}
NumericOverflowException on calculate
BILLING_NUMERIC_OVERFLOW Критический сбой расчетов: Прервать итерацию, отправить чек в карантинный топик (Dead Letter Queue — DLQ) для ручной проверки цен вендора. {
"level": "CRITICAL",
"metric_name": "billing_math_overflow_total",
"labels": {
"method": "CalculateReceiptTotal",
"action": "route_to_dlq"
}
}
{
"canonical_code": "BILLING_NUMERIC_OVERFLOW",
"localized_text": "Арифметическое переполнение при вычислении итоговой суммы чека. Чек отправлен в DLQ.",
"http_status": "422 Unprocessable Entity"
}
PostgreSQL: b2b_transactions unique match
BILLING_TRANSACTION_DUPLICATE_DROP Идемпотентный сброс: Воркер биллинга обнаружил повторный чек, логирует событие BILLING_DUPLICATE_IGNORE и завершает задачу без начисления денег. {
"level": "WARN",
"metric_name": "billing_idempotency_blocks_total",
"labels": {
"strategy": "drop_silently",
"subsystem": "financial_audit"
}
}
{
"canonical_code": "BILLING_TRANSACTION_DUPLICATE_DROP",
"localized_text": "Данная финансовая транзакция по чеку уже учтена. Повторное начисление заблокировано.",
"http_status": "200 OK (Financial Idempotency)"
}
PostgreSQL: b2b_transactions Deadlock
BILLING_DB_TRANSACTION_DEADLOCK Транзакция откатывается СУБД. Воркер Kafka делает кратковременную паузу (Backoff) и повторяет попытку записи. {
"level": "ERROR",
"metric_name": "billing_db_deadlocks_total",
"labels": {
"table": "b2b_transactions",<br/> "retry": "automatic"
}
}
{
"canonical_code": "BILLING_DB_TRANSACTION_DEADLOCK",
"localized_text": "Коллизия параллельных транзакций в финансовой БД. Инициирован автоматический повтор.",
"http_status": "500 Internal Server Error"
}

Batch Inventory Consolidation (MERGE)

Исходный триггер (Бэкенд / СУБД / Клиент) gRPC / HTTP Статус Каноничный код (canonical_code) Реакция интерфейса / Интеграции (ui_reaction) JSON для логов и метрик (Бэкенд аналитика / ELK / Prometheus) JSON для маппинга из error_directory (Ответ для Фронтенда)
Pydantic: empty or singular item_ids_list
422 Unprocessable Entity
FRIDGE_MERGE_EMPTY_ARRAY Заблокировать кнопку отправки в интерфейсе, вывести подсказку: «Выберите как минимум две партии для объединения». {
"level": "WARN",
"metric_name": "inventory_merge_failed_total",
"labels": {
"reason": "validation_empty_list"
}
}
{
"canonical_code": "FRIDGE_MERGE_EMPTY_ARRAY",
"localized_text": "Некорректный запрос. Для слияния необходимо передать массив, содержащий минимум два идентификатора партий.",
"http_status": "422 Unprocessable Entity"
}
PostgreSQL: row lock timeout on FOR UPDATE
500 Internal Server Error
FRIDGE_DB_ROW_LOCK_TIMEOUT Показать Alert-toast: «Позиция сейчас редактируется системой. Пожалуйста, повторите попытку через несколько секунд». {
"level": "ERROR",
"metric_name": "db_row_locking_timeouts_total",
"labels": {
"table": "fridge_inventory",
"conflict_with": "fifo_mutation"
}
}
{
"canonical_code": "FRIDGE_DB_ROW_LOCK_TIMEOUT",
"localized_text": "Превышено время ожидания блокировки строк СУБД. Позиции заняты параллельным процессом автосписания.",
"http_status": "500 Internal Server Error"
}
Business Logic: heterogeneous products match
400 Bad Request
INVENTORY_MUTATION_HETEROGENEOUS_PRODUCTS_ERR Вывести модальное окно: «Ошибка смешивания. Нельзя объединять разнородные продукты (например, яблоки с персиками) или разные единицы измерения». {
"level": "WARN",
"metric_name": "inventory_merge_failed_total",
"labels": {
"reason": "heterogeneous_data_mix"
}
}
{
"canonical_code": "INVENTORY_MUTATION_HETEROGENEOUS_PRODUCTS_ERR",
"localized_text": "Бизнес-отказ: выбранные партии не являются однородными. Проверьте соответствие SKU, названий продуктов и единиц измерения.",
"http_status": "400 Bad Request"
}
PostgreSQL: delete/update deadlocks
500 Internal Server Error
FRIDGE_MERGE_DB_DEADLOCK Транзакция сбрасывается. Сервер автоматически инициирует повторную попытку выполнения (Retry Backoff). Интерфейс ожидает. {
"level": "ERROR",
"metric_name": "db_transaction_deadlocks_total",
"labels": {
"operation": "batch_merge",
"table": "fridge_inventory"
}
}
{
"canonical_code": "FRIDGE_MERGE_DB_DEADLOCK",
"localized_text": "Внутренняя коллизия транзакций при одновременном удалении и обновлении строк инвентаря.",
"http_status": "500 Internal Server Error"
}
Kafka: QueueFullException on merge event
FRIDGE_KAFKA_BUFFER_EXHAUSTED Отказоустойчивое сохранение: Метод завершается успешно для юзера, но ивент временно пишется в локальный файловый буфер для отложенной отправки. {
"level": "CRITICAL",
"metric_name": "fridge_kafka_buffer_overflow_total",
"labels": {
"topic": "bpds.pma.out.process.event",
"action": "local_buffer_fallback"
}
}
{
"canonical_code": "FRIDGE_KAFKA_BUFFER_EXHAUSTED",
"localized_text": "Внутренний буфер отправки шины данных перегружен. Событие аудита сохранено во временный кэш.",
"http_status": "200 OK (Buffered Event)"
}
Bupar: UnknownEventTypeException
BUPAR_UNKNOWN_EVENT_TYPE Игнорирование брокера: Воркер Bupar ломает обработку сообщения, сбрасывает лог и инкрементирует метрику. На UI пользователя никак не влияет. {
"level": "ERROR",
"metric_name": "bupar_invalid_events_total",
"labels": {
"bad_type": "unknown_mutation_code"
}
}
{
"canonical_code": "BUPAR_UNKNOWN_EVENT_TYPE",
"localized_text": "Аналитическая шина Bupar не смогла распознать тип переданного бизнес-события мутации.",
"http_status": "500 Kafka Consumer Error"
}

4. Домен Асинхронных ИИ-Сервисов и Оркестрации: AI Orchestration Domain (AID)

Специализированные коды тяжелых GPU-воркеров (image-processor, product-vision-processor, grpc-analytics) и ИИ-цензора censorship-control-worker.

Исходный триггер / Исключение (СУБД / gRPC / CUDA) gRPC Статус HTTP REST Каноничный Код Симулятора Локализованное описание (ru) Контекст поведения / Реакция UI
CUDA: RuntimeError: out of memory RESOURCE_EXHAUSTED (8) 503 Service Unavail AID_GPU_VRAM_OVERFLOW Вычислительный сервер перегружен. Попробуйте позже. Поставить задачу в очередь повтора Kafka с задержкой Backoff.
EasyOCR: Tesseract / OCR Engine unreadable text DATA_LOSS (15) 422 Unprocessable AID_VISION_OCR_UNREADABLE Не удалось считать фискальные позиции. Измените ракурс. Подсветить ошибку на экране Покупок (1. Shop).
YOLOv8: object_detection low confidence score OUT_OF_RANGE (11) 422 Unprocessable AID_VISION_YOLO_LOW_CONF ИИ не уверен в распознавании продуктов в холодильнике. Триггер топика №5 для ручной модерации черновика в App.
Whisper: Sound chunks decibel stream corrupted ABORTED (10) 400 Bad Request AID_SPEECH_STT_CORRUPTED Низкое качество звука или критические помехи записи. Прервать стрим, отобразить виджет «Повторите диктовку».
Redis: Abuse Counter >= 2 (Lua atomic lock) PERMISSION_DENIED (7) 403 Forbidden AID_CENSOR_PROFANITY_VIOLATION Сессия немедленно заблокирована за повторное использование мата. Немедленный логаут через топик №13 во всех контурах.
Ollama: Pydantic Structured Output format error INTERNAL (13) 502 Bad Gateway AID_LLM_INVALID_STRUCTURE Сбой структурирования данных ИИ. Повторите попытку. Отправить лог сбоя по X-Request-ID в PMA, сбросить кэш.
WebRTC/WebSockets: Frame buffer packet drop > 40% DATA_LOSS (15) 408 Timeout AID_STREAM_FRAME_DROP Критическое ухудшение качества связи при видеостриминге. Отключить WebRTC, перевести камеру в режим покадровых фото.

5. Домен Предиктивной Аналитики и Скорринга: Predictive Intelligence & Affinity Domain (AFFINITY)

Специализированные коды ошибок аналитического ядра affinity-service и фоновых математических планировщиков.

Исходный триггер / Исключение (СУБД / gRPC) gRPC Статус HTTP REST Каноничный Код Симулятора Локализованное описание (ru) Контекст поведения / Реакция UI
Redis: connection pool exhausted on matrix write RESOURCE_EXHAUSTED (8) 503 Service Unavail AFF_CACHE_POOL_EXHAUSTED Временный сбой аналитической подсистемы рекомендаций. Скрыть блок предиктивных подсказок на экране Корзины.
Cron: Decay engine missing Redis target hashes NOT_FOUND (5) 500 Internal AFF_DECAY_TARGET_MISSING Ошибка демона затухания: Профиль лояльности не найден. Прервать Cron, сгенерировать алевр в Alertmanager.
Affinity Engine: math domain error (NaN score) OUT_OF_RANGE (11) 500 Internal AFF_MATH_INVALID_MATRIX Критическая ошибка расчета векторов лояльности группы. Сбросить веса ассоциаций для home_group_id к дефолтным.
gRPC: query suggestions for empty group context INVALID_ARGUMENT (3) 400 Bad Request AFF_SUGGESTION_EMPTY_CONTEXT Ошибка запроса подсказок: Не указан контекст орг-группы. Метод suggestions возвращает пустой плоский JSON-массив.

6. Домен Сквозного Мониторинга и Аудита Процессов: Process Mining & Audit Domain (PMA)

Специализированные коды ошибок для bupar-audit-service, Grafana Loki и контура проброса trace_id.

Исходный триггер / Исключение (СУБД / gRPC / Loki) gRPC Статус HTTP REST Каноничный Код Симулятора Локализованное описание (ru) Контекст поведения / Реакция UI
FastAPI: X-Request-ID Header missing on gateway INVALID_ARGUMENT (3) 400 Bad Request PMA_TRACE_ID_MISSING Нарушена сквозная техническая трассировка запроса. Nginx принудительно инжектирует новый UUID трейса в поток.
Grafana Loki: LogQL query timed out (>5000ms) DEADLINE_EXCEEDED (4) 504 Gateway Timeout PMA_LOKI_QUERY_TIMEOUT Превышено время ожидания сборки сквозного технического следа. На экране ObservabilityScreen включить Loader-Retry.
bupar: event log contains broken case_id paths DATA_LOSS (15) 500 Internal PMA_BUPAR_INTEGRITY_VIOLATION Невозможно построить граф жизненного цикла: битая цепочка. Скрыть интерфейсную карту Process Mining, выдать алерт.
FastAPI: SSE connection client disconnect abrupt CANCELLED (1) 499 Client Closed PMA_SSE_STREAM_ABORTED Поток трансляции терминала логов прерван пользователем. Корректно закрыть сессию чтения Loki API, очистить буфер.
Promtail: log delivery pipeline block (disk full) RESOURCE_EXHAUSTED (8) 507 Insufficient PMA_COLLECTOR_PIPE_BLOCKED Системный сбой: Буфер мониторинга переполнен. Отключить живой стриминг логов на Flutter-клиент.