classDef user fill:#f9f,stroke:#333,stroke-width:2px;
classDef front fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
classDef req fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;
classDef index fill:#d1c4e9,stroke:#512da8,stroke-width:2px;
classDef manager fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px;
classDef client fill:#ffccbc,stroke:#bf360c,stroke-width:2px;
%% Пользователь и Интерфейсы
User((Пользователь)):::user
Jellyseerr[Jellyseerr<br/>Управление запросами]:::front
Jellyfin[Jellyfin<br/>Медиа-сервер]:::client
%% Индексаторы и Загрузчики
subgraph Indexers [Поиск и Загрузка]
Prowlarr[Plowarr<br/>Индексатор торрентов / usenet]:::index
TorrentClient[Торрент-клиент<br/>qBittorrent / Deluge]:::index
subgraph Managers [Управление библиотекой]
Sonarr[Sonarr<br/>Сериалы]:::manager
Radarr[Radarr<br/>Фильмы]:::manager
Storage[(Медиатека<br/>Фильмы / Сериалы)]:::manager
%% Взаимодействие: Запрос
User -- "1. Хочу посмотреть фильм/сериал" --> Jellyseerr
Jellyseerr -- "2. Запрос контента" --> Sonarr
Jellyseerr -- "2. Запрос контента" --> Radarr
%% Sonarr/Radarr ищут через Prowlarr
Sonarr -- "3. Поиск" --> Prowlarr
Radarr -- "3. Поиск" --> Prowlarr
Prowlarr -- "4. Возвращает результаты" --> Sonarr
Prowlarr -- "4. Возвращает результаты" --> Radarr
%% Отправка на скачивание
Sonarr -- "5. Отправить на загрузку" --> TorrentClient
Radarr -- "5. Отправить на загрузку" --> TorrentClient
TorrentClient -- "6. Скачивает файлы" --> Storage
Sonarr -- "7. Импортирует/Переименовывает" --> Storage
Radarr -- "7. Импортирует/Переименовывает" --> Storage
%% Обновление библиотеки и уведомление
Storage -- "8. Новый контент добавлен" --> Jellyfin
Jellyfin -- "9. Обновляет библиотеку" --> Jellyseerr
Jellyseerr -- "10. Уведомление" --> User
User -- "11. Смотрит контент" --> Jellyfin