# Обзор серверных компонентов

Документ описывает назначение основных подсистем бэкэнда и связывает детализированные разделы. Материал ориентирован на инженеров, сопровождающих сервис и отвечающих за устойчивость обработки задач.

## Архитектурные роли

- **API-слой** — публикует HTTP-маршруты FastAPI, преобразует ошибки сервисного уровня в согласованные ответы и предоставляет OpenAPI. Детали приведены в `api-layer.md`.
- **Сервисный слой** — агрегирует индикаторы, проверяет наличие токенов провайдеров, назначает идентификаторы задач и предотвращает дублирование. Описание размещено в `service-layer.md`.
- **Очередь и воркеры** — управляют жизненным циклом задач, очередью `asyncio.Queue` и распределением обработки по воркерам. Правила изложены в `queue.md`.
- **Парсинг IOC** — извлекает индикаторы из текста, нормализует домены и формирует типизированные объекты. См. `iocs.md`.
- **Интеграции с провайдерами** — реализуют адаптеры внешних сервисов и вычисление фичей. Подробности в `providers.md`.
- **Хранилище и кэш** — сохраняют результаты в БД и предоставляют повторное использование ответов. Описание в `storage.md`.
- **Инициализация и конфигурация** — загружает параметры окружения, подготавливает подключение к БД и запускает CLI. См. `configuration.md`.

## Поток обработки задач

1. API принимает запрос на разбор текста или постановку индикаторов на проверку и валидирует поля схемами Pydantic. Точка входа описана в `api-layer.md`.
2. Сервисный слой формирует итоговый список IOC, проверяет активных провайдеров, устанавливает признак кэшируемости и фиксирует идентификатор задачи. Порядок действий приведён в `service-layer.md`.
3. Очередь регистрирует каждый индикатор, воркеры извлекают элементы, обращаются к кэшу и опрашивают провайдеров параллельно. Детали отражены в `queue.md` и `providers.md`.
4. Результаты опроса сохраняются в БД и в памяти, статусы задач обновляются до `done` или `error`, а ошибки фиксируются без прерывания остальных вызовов. Правила работы описаны в `storage.md` и `queue.md`.
5. При завершении обработки данные остаются доступны по пользовательскому идентификатору либо до очистки временной очереди, в зависимости от признака кэширования. Параметры хранения перечислены в `storage.md` и `configuration.md`.

## Связанные документы

- `../overview.md` — общая структура проекта и назначение каталогов.
- `../deployment.md` — требования к окружению, запуск сервисов и контроль работоспособности.
- Каталог `../api/` — описание публичных HTTP-методов и форматов ответов.
