Подписки Ainergy: от создания подписки до ответа вендора

Подписки Ainergy: от создания подписки до ответа вендора A sequence diagram generated by Archify. 1. Создаёт запись Subscription (вендор, имя) 2. «Подключить»: ссылка входа с PKCE Вход у вендора и согласие Callback с кодом Обмен кода на токены (token endpoint) AT, RT Статус «активна»; RT зашифрован, AT в записи 4. Назначает в пакеты/потребителям: пул 5. «Create Nexuses»: нексус на модель Имя уникально; Subscription, Claude/Codex Модель исчезла: уведомление, Decommissioned 6. Сохранение q.api-gateway.config.v1 Конфиг gRPC Забирает конфиг по REST Fanout из Redis CMS: обычный конфиг нексусов Документы пулов и AT (RT не уходит из Ainima) 7. HTTP с API-ключом (или RMQ incoming с client_code) Auth LMS Check Запрос 8. Acquire(request_id, token_uuid, nexus_id, model, session_key) 9. Lua-шаг: aff:{vendor}:{sha256(session_key)}, пул, модель, cooldown, резерв → {sub_id, access_token, expires_at, lease_id} 10. Bearer AT + заголовки профиля 11. Ответ (поток) Ответ клиенту (поток) Report(lease_id, ok, rate_limit_headers, usage) Сводка раз в N с (событие) Сводка в Ainima 12. 401 до отправки тела Report(401_before_send) Lease на подписку; POST /subscriptions/{sub_id}/refresh Claim, refresh (условная запись по поколению) 13. {access_token, expires_at, generation}; SMS пишет AT в Redis, только если поколение больше Тот же AT, то же поколение: без изменений 14. AT; повтор в ту же подписку (бюджет ~3 с) Иначе одна попытка в другую подписку пула 15. Refresh не удался: нужно переподключение, уведомление Подписка выходит из пула; привязки переезжают 16. 429 (окно не исчерпано) До 3 повторов с паузой в ту же подписку Не помогло: одна попытка в другую подписку 17. 429 исчерпания окна/кредитов Cooldown подписки, переезд сессии с перепривязкой 18. 5xx или connect_timeout до первого байта Другая подписка, привязка не меняется (Bypass вне MVP) 19. no_subscription_in_scope / no_subscription_supports_model Все в cooldown: 429 с retry-after Все требуют переподключения: 503 no_subscription_available SMS недоступен: отказ (fail-closed) Оператор · Sequence participant Оператор Ainima · Sequence participant Ainima RMQ · Sequence participant RMQ CMS · Sequence participant CMS SMS · Sequence participant SMS Клиент · Sequence participant Клиент Gateway · Sequence participant Gateway Auth · Sequence participant Auth LMS · Sequence participant LMS Proxy · Sequence participant Proxy Вендор API · Sequence participant Вендор API Legend request return security async trace default message