provider-chain.json 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. {
  2. "circuit": {
  3. "closed": "Закрыт (Нормально)",
  4. "halfOpen": "Полуоткрыт (Тестирование)",
  5. "open": "Открыт (Сработал)",
  6. "unknown": "Неизвестно"
  7. },
  8. "errors": {
  9. "ENOTFOUND": "Не удалось разрешить DNS",
  10. "ECONNREFUSED": "Соединение отклонено",
  11. "ETIMEDOUT": "Тайм-аут соединения или чтения",
  12. "ECONNRESET": "Соединение сброшено",
  13. "EHOSTUNREACH": "Хост недоступен (проблема маршрутизации сети)",
  14. "ENETUNREACH": "Сеть недоступна (проблема локальной сетевой конфигурации)",
  15. "EPROTO": "Ошибка протокола (ошибка SSL/TLS рукопожатия)",
  16. "CLIENT_ABORT": "Клиент прервал запрос",
  17. "PROVIDER_TIMEOUT": "Тайм-аут ответа провайдера (высокая задержка первого байта)",
  18. "STREAMING_IDLE_TIMEOUT": "Тайм-аут простоя потоковой передачи (провайдер прекратил отправку данных)"
  19. },
  20. "summary": {
  21. "singleSuccess": "{total} провайдеров, {healthy} работоспособных → {provider} ✓",
  22. "sessionReuse": "Повторное использование сессии → {provider} ✓",
  23. "originHint": "Повторное использование сессии - изначально выбрано через {method}"
  24. },
  25. "description": {
  26. "noDecisionRecord": "Нет записей решений",
  27. "sessionReuse": "Повторное использование сессии - Выбор провайдера",
  28. "sessionId": "ID сессии: {id}",
  29. "unknown": "Неизвестно",
  30. "reuseProvider": "Повторно используемый провайдер: {provider}",
  31. "initialSelection": "Первоначальный выбор: {provider}",
  32. "candidateCount": "{count} провайдеров-кандидатов",
  33. "groupFiltered": "Группа {group} отфильтрована до {count}",
  34. "healthyCount": "{count} после проверки состояния",
  35. "priority": "Приоритет {priority}",
  36. "candidate": "{name}({probability}%)",
  37. "requestChain": "Цепочка запросов:",
  38. "systemError": "Системная ошибка",
  39. "resourceNotFound": "Ресурс не найден (404)",
  40. "concurrentLimit": "Лимит параллельных запросов",
  41. "http2Fallback": "Откат HTTP/2",
  42. "clientError": "Ошибка клиента",
  43. "endpointPoolExhausted": "Пул конечных точек исчерпан",
  44. "vendorTypeAllTimeout": "Тайм-аут всех конечных точек",
  45. "hedgeTriggered": "Hedge запущен",
  46. "hedgeLaunched": "Hedge альтернатива запущена",
  47. "hedgeWinner": "Победитель Hedge-гонки",
  48. "hedgeLoserCancelled": "Проигравший Hedge-гонки (отменён)",
  49. "clientAbort": "Клиент прервал запрос"
  50. },
  51. "reasons": {
  52. "request_success": "Успешно",
  53. "retry_success": "Повтор успешен",
  54. "retry_failed": "Повтор не удался",
  55. "system_error": "Системная ошибка",
  56. "resource_not_found": "Ресурс не найден (404)",
  57. "client_error_non_retryable": "Ошибка клиента",
  58. "concurrent_limit_failed": "Лимит параллельных запросов",
  59. "http2_fallback": "Откат HTTP/2",
  60. "session_reuse": "Повторное использование сессии",
  61. "initial_selection": "Первоначальный выбор",
  62. "endpoint_pool_exhausted": "Пул конечных точек исчерпан",
  63. "vendor_type_all_timeout": "Тайм-аут всех конечных точек типа поставщика",
  64. "client_restriction_filtered": "Клиент ограничен",
  65. "hedge_triggered": "Hedge запущен",
  66. "hedge_launched": "Hedge альтернатива запущена",
  67. "hedge_winner": "Победитель Hedge-гонки",
  68. "hedge_loser_cancelled": "Проигравший Hedge-гонки (отменён)",
  69. "client_abort": "Клиент прервал запрос"
  70. },
  71. "filterReasons": {
  72. "rate_limited": "Ограничение скорости",
  73. "circuit_open": "Автомат открыт",
  74. "disabled": "Отключен",
  75. "excluded": "Исключен",
  76. "format_type_mismatch": "Несоответствие формата",
  77. "type_mismatch": "Несоответствие типа",
  78. "model_not_allowed": "Модель не разрешена",
  79. "model_not_supported": "Модель не поддерживается",
  80. "group_mismatch": "Несоответствие группы",
  81. "health_check_failed": "Проверка состояния не пройдена",
  82. "endpoint_circuit_open": "Автомат конечной точки открыт",
  83. "endpoint_disabled": "Эндпоинт отключен",
  84. "client_restriction": "Ограничение клиента"
  85. },
  86. "filterDetails": {
  87. "vendor_type_circuit_open": "Временное размыкание типа поставщика",
  88. "circuit_open": "Размыкатель открыт",
  89. "circuit_half_open": "Размыкатель полуоткрыт",
  90. "rate_limited": "Ограничение скорости",
  91. "provider_client_restriction": "Провайдер пропущен из-за ограничения клиента",
  92. "session_reuse_client_restriction": "Session reuse rejected: client restriction",
  93. "blocklist_hit": "Blocked by pattern: {pattern}",
  94. "allowlist_miss": "Not in allowed list",
  95. "detectedClient": "Detected: {client}",
  96. "providerAllowlist": "Allowlist: {list}",
  97. "providerBlocklist": "Blocklist: {list}"
  98. },
  99. "details": {
  100. "selectionMethod": "Метод выбора",
  101. "attemptNumber": "Номер попытки",
  102. "endpoint": "Конечная точка",
  103. "config": "Конфигурация",
  104. "priority": "Приоритет",
  105. "weight": "Вес",
  106. "costMultiplier": "Множитель стоимости",
  107. "groupTag": "Тег группы",
  108. "circuitBreaker": "Автомат защиты",
  109. "circuitDisabled": "Отключен",
  110. "failures": "ошибок",
  111. "modelRedirect": "Перенаправление модели",
  112. "error": "Ошибка",
  113. "errorDetails": "Детали ошибки",
  114. "decisionContext": "Контекст решения",
  115. "beforeHealthCheck": "До проверки состояния",
  116. "afterHealthCheck": "После проверки состояния",
  117. "filteredProviders": "Отфильтрованные провайдеры",
  118. "priorityLevels": "Уровни приоритета",
  119. "candidates": "Кандидаты провайдеров"
  120. },
  121. "technicalTimeline": "Техническая временная шкала",
  122. "timeline": {
  123. "sessionReuse": "Повторное использование сессии",
  124. "sessionReuseSelection": "Повторное использование сессии - Выбор провайдера",
  125. "sessionReuseTitle": "Повторное использование сессии - Выбор провайдера",
  126. "sessionId": "ID сессии: {id}",
  127. "reuseProvider": "Повторно используемый провайдер: {provider}",
  128. "configuration": "Конфигурация",
  129. "priority": "Приоритет",
  130. "weight": "Вес",
  131. "cost": "Стоимость",
  132. "providerConfig": "Конфигурация провайдера: приоритет={priority} вес={weight} стоимость={cost}",
  133. "basedOnCache": "Повторное использование провайдера на основе кеша сессии (в течение 5 минут)",
  134. "sessionCache": "На основе кеша сессии (в течение 5 минут)",
  135. "waitingForResult": "Ожидание результата запроса...",
  136. "waiting": "Ожидание результата запроса...",
  137. "initialSelection": "Первоначальный выбор провайдера",
  138. "initialSelectionTitle": "Первоначальный выбор провайдера",
  139. "systemStatus": "Состояние системы",
  140. "totalProviders": "Всего провайдеров: {count}",
  141. "enabledProviders": "Включено типа {type}: {count}",
  142. "type": "Тип",
  143. "userGroup": "Группа пользователей {group}: {count}",
  144. "healthCheck": "Прошли проверку состояния: {count}",
  145. "filtered": "Отфильтровано",
  146. "priorityLevel": "Приоритет",
  147. "priorityCandidates": "Кандидаты приоритета {priority} ({count})",
  148. "candidates": "Кандидаты",
  149. "candidateInfo": " • {name}: вес={weight} стоимость={cost} вероятность={probability}%",
  150. "selected": "✓ Выбрано: {provider}",
  151. "requestFailed": "Запрос не выполнен (Попытка {attempt})",
  152. "resourceNotFoundFailed": "Ресурс не найден (404) (Попытка {attempt})",
  153. "attemptNumber": "Попытка {number}",
  154. "firstAttempt": "Первая попытка",
  155. "nthAttempt": "Попытка {attempt}",
  156. "provider": "Провайдер: {provider}",
  157. "statusCode": "Код состояния: {code}",
  158. "statusCodeInferred": "Код состояния (выведено): {code}",
  159. "error": "Ошибка: {error}",
  160. "requestDuration": "Длительность запроса: {duration}мс",
  161. "requestDurationSeconds": "Длительность запроса: {duration}с",
  162. "circuitStatus": "Состояние автомата",
  163. "current": "Текущее",
  164. "circuitCurrent": "Текущее состояние: {state}",
  165. "failureCount": "Количество сбоев: {current}/{threshold}",
  166. "untilBreak": "До срабатывания",
  167. "circuitRemaining": "{remaining} попыток до срабатывания автомата",
  168. "remaining": "Осталось попыток: {count}",
  169. "status": "Состояние",
  170. "alreadyBroken": "Уже сработал",
  171. "circuitTriggered": "Предупреждение: Автомат защиты сработал",
  172. "circuitDisabled": "Автомат защиты отключен",
  173. "errorDetails": "Детали ошибки",
  174. "systemError": "Системная ошибка",
  175. "systemErrorFailed": "Системная ошибка (Попытка {attempt})",
  176. "errorType": "Тип ошибки: Системная ошибка",
  177. "errorName": "Ошибка",
  178. "errorCode": "Код ошибки: {code}",
  179. "errorSyscall": "Системный вызов: {syscall}",
  180. "errorMeaning": "Значение: {meaning}",
  181. "meaning": "Значение",
  182. "notCountedInCircuit": "Эта ошибка не учитывается в автомате защиты провайдера",
  183. "systemErrorNote": "Примечание: Эта ошибка не учитывается в автомате защиты провайдера",
  184. "resourceNotFoundNote": "Примечание: Эта ошибка не учитывается в автомате защиты; после исчерпания повторов произойдёт переключение.",
  185. "reselection": "Повторный выбор провайдера",
  186. "reselect": "Повторный выбор провайдера",
  187. "excluded": "Исключено: {providers}",
  188. "remainingCandidates": "Оставшиеся кандидаты: {count}",
  189. "requestSuccess": "{label} Запрос выполнен",
  190. "requestSuccessAttempt": "{attempt} Запрос выполнен",
  191. "requestOk": "OK",
  192. "successStatus": "Состояние: {code} OK",
  193. "requestCompleted": "Запрос успешно выполнен",
  194. "completed": "Запрос успешно выполнен",
  195. "concurrentLimitFailed": "Лимит параллельных запросов",
  196. "attemptFailed": "Попытка не удалась (Попытка {attempt})",
  197. "concurrentLimit": "Лимит параллельных запросов",
  198. "concurrentLimitInfo": "Текущих параллельных: {current}/{limit}",
  199. "sessions": "Сессии",
  200. "withPriorityWeight": "(приоритет={priority} вес={weight})",
  201. "unknown": "Неизвестно",
  202. "noDecisionRecord": "Нет записей решений",
  203. "modelRedirect": "Перенаправление модели",
  204. "modelRedirectFrom": " Запрошенная модель: {model}",
  205. "modelRedirectTo": " Перенаправлено на: {model}",
  206. "modelRedirectBilling": " Модель для расчета: {model}",
  207. "http2Fallback": "Откат протокола HTTP/2",
  208. "http2ErrorType": "Тип ошибки HTTP/2: {type}",
  209. "http2FallbackNote": "Прозрачный откат на HTTP/1.1, не учитывается в автомате защиты",
  210. "requestDetails": "Детали запроса (для отладки)",
  211. "requestMethod": "Метод",
  212. "requestUrl": "URL",
  213. "requestHeaders": "Заголовки",
  214. "requestBody": "Тело",
  215. "requestBodyTruncated": "(обрезано)",
  216. "clientErrorNonRetryable": "Ошибка клиента (попытка {attempt}, без повторов)",
  217. "matchedRule": "Совпавшее правило ошибки",
  218. "ruleId": "ID правила: {id}",
  219. "ruleCategory": "Категория: {category}",
  220. "rulePattern": "Шаблон: {pattern}",
  221. "ruleMatchType": "Тип совпадения: {matchType}",
  222. "ruleDescription": "Описание: {description}",
  223. "ruleHasOverride": "Переопределения: response={response}, statusCode={statusCode}",
  224. "clientErrorNote": "Эта ошибка вызвана вводом клиента, не повторяется и не учитывается в автомате защиты.",
  225. "endpointPoolExhausted": "Пул конечных точек исчерпан (все конечные точки недоступны)",
  226. "endpointStats": "Статистика фильтрации конечных точек",
  227. "endpointStatsTotal": "Всего конечных точек: {count}",
  228. "endpointStatsEnabled": "Включено конечных точек: {count}",
  229. "endpointStatsCircuitOpen": "Эндпоинтов с открытым автоматом: {count}",
  230. "endpointStatsAvailable": "Доступных конечных точек: {count}",
  231. "strictBlockNoEndpoints": "Строгий режим: нет доступных кандидатов конечных точек, провайдер пропущен без отката",
  232. "strictBlockSelectorError": "Строгий режим: ошибка селектора конечных точек, провайдер пропущен без отката",
  233. "vendorTypeAllTimeout": "Тайм-аут всех конечных точек типа поставщика (524)",
  234. "vendorTypeAllTimeoutNote": "Все конечные точки этого типа поставщика превысили тайм-аут. Активирован размыкатель типа поставщика.",
  235. "hedgeTriggered": "Порог Hedge превышен (запускается альтернативный провайдер)",
  236. "hedgeLaunched": "Hedge альтернативный провайдер запущен",
  237. "hedgeWinner": "Победитель Hedge-гонки (первый получил начальный байт)",
  238. "hedgeLoserCancelled": "Проигравший Hedge-гонки (запрос отменён)",
  239. "clientAbort": "Клиент отключился (запрос прерван)",
  240. "hedgeRace": "Hedge-гонка",
  241. "hedgeThresholdExceeded": "Тайм-аут первого байта превышен, запущен альтернативный провайдер"
  242. },
  243. "selectionMethods": {
  244. "session_reuse": "Повторное использование сессии",
  245. "weighted_random": "Взвешенный случайный",
  246. "group_filtered": "Фильтрация по группе",
  247. "fail_open_fallback": "Резервный вариант при сбое"
  248. }
  249. }