# Модуль 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'ов: он предоставляет только инфраструктурные классы для других модулей.
