ERRORS: Мониторинг и сквозной контроль (End-to-End) системных состояний
Часть 1: Спецификация доменных ошибок (IAD, MDM, INVENTORY)
В открытом доступе представлена демонстрационная версия метода. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Будет доступна только во внутреннем контуре разработки (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)
В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
Специализированные коды справочников номенклатур и кулинарной книги (recipes-service).
3. Домен Склада и Транзакционного Учета: Inventory Domain (INVENTORY)
В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
B2B Store Webhook Sync (STORE)
B2B Financial Processing (BILLING)
Batch Inventory Consolidation (MERGE)
4. Домен Асинхронных ИИ-Сервисов и Оркестрации: AI Orchestration Domain (AID)
В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
Специализированные коды тяжелых GPU-воркеров (image-processor, product-vision-processor, grpc-analytics) и ИИ-цензора censorship-control-worker.
5. Домен Предиктивной Аналитики и Скорринга: Predictive Intelligence & Affinity Domain (AFFINITY)
В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
Специализированные коды ошибок аналитического ядра affinity-service и фоновых математических планировщиков.
6. Домен Сквозного Мониторинга и Аудита Процессов: Process Mining & Audit Domain (PMA)
В открытом доступе представлена демонстрационная версия задачи. В настоящей публичной документации отображены не все шаги, технические сценарии и приватные эндпоинты для системы цифровых симуляторов бизнес-процессов.
- Полная спецификация метода: Доступна только во внутреннем контуре разработки (Confluence / Swagger Enterprise).
- Для получения доступа: Обратитесь к системному аналитику или Product Owner вашей команды.
Специализированные коды ошибок для bupar-audit-service, Grafana Loki и контура проброса trace_id.