Files
agent/app/modules/shared/README.md
2026-02-27 21:28:09 +03:00

41 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Модуль shared
## 1. Функции модуля
- Общие инфраструктурные компоненты для всех модулей:
- подключение к БД (`db.py`, `bootstrap.py`),
- шина событий (`event_bus.py`),
- retry и idempotency (`retry_executor.py`, `idempotency_store.py`),
- checkpointer,
- клиент и настройки GigaChat (`gigachat/*`).
## 2. Диаграмма классов и взаимосвязей
```mermaid
classDiagram
class EventBus
class RetryExecutor
class IdempotencyStore
class GigaChatClient
class GigaChatSettings
class GigaChatTokenProvider
GigaChatClient --> GigaChatSettings
GigaChatClient --> GigaChatTokenProvider
```
## 3. Описание классов
- `EventBus`: общий асинхронный event-bus для публикации и SSE-стриминга.
Методы: `subscribe` — подписка на канал; `unsubscribe` — удаление подписки; `publish` — отправка события; `as_sse` — сериализация события в SSE-формат.
- `RetryExecutor`: общий механизм повторных попыток для временных ошибок.
Методы: `run` — выполняет async-операцию с retry по временным исключениям.
- `IdempotencyStore`: in-memory хранилище идемпотентных ключей.
Методы: `get_task_id` — находит ранее созданную задачу по ключу; `put` — сохраняет ключ и task_id.
- `GigaChatSettings`: конфигурация доступа к GigaChat.
Методы: `from_env` — собирает настройки из переменных окружения.
- `GigaChatTokenProvider`: управление access token для GigaChat API.
Методы: `get_access_token` — возвращает валидный токен (с обновлением при необходимости).
- `GigaChatClient`: HTTP-клиент для completion и embeddings.
Методы: `complete` — выполняет генерацию ответа модели; `embed` — получает векторные представления для списка текстов.
## 4. Сиквенс-диаграммы API
В модуле нет HTTP endpoint'ов: он предоставляет только инфраструктурные классы для других модулей.