%% Этот код оптимизирован для рендерера Mermaid на GitHub
graph TD
%% 1. Определяем стили для блоков
classDef entryPoint fill:#d4edda,stroke:#155724,stroke-width:2px,color:#155724
classDef coreLogic fill:#cce5ff,stroke:#004085,stroke-width:2px
classDef risk fill:#f8d7da,stroke:#721c24,stroke-width:2px,color:#721c24
classDef dependency fill:#e2e3e5,stroke:#383d41,stroke-width:2px
classDef storage fill:#f0e6ff,stroke:#563d7c,stroke-width:2px
%% 2. Определяем группы (подграфы) и узлы
subgraph " "
Client["(A) Клиент API<br><i>Система, инициирующая запрос</i>"]
end
subgraph "(B) VideoProcessing Microservice"
direction LR
B1["(B1) MediaFileService<br>Оркестратор процесса"]
B2["(B2) In-Memory Queue<br><b>РИСК:</b> Потеря данных при перезапуске"]
B3["(B3) MediaProcessor<br>Обертка над CLI"]
B4["(B4) StorageFileService<br><b>РИСК:</b> Токен захардкожен"]
end
subgraph "(C) Внешние зависимости"
C1["(C1) CLI Tools<br>ffmpeg, ImageMagick, HLS.jar"]
C2["(C2) Локальная ФС<br>Исходники и временные файлы"]
end
subgraph " "
D["(D) Внешнее хранилище<br>(cinenetwork.ru)"]
end
%% 3. Определяем связи между узлами
Client -- "1. HTTP-запрос" --> B1
B1 -- "2. Управление очередью" <--> B2
B1 -- "3. Запуск обработки" --> B3
B3 -- "4. Вызов команд" --> C1
B3 -- "5. Чтение/запись файлов" <--> C2
C1 -- " " --> C2
B1 -- "6. Запуск выгрузки" --> B4
B4 -- "7. Загрузка по HTTP" --> D
%% 4. Применяем стили к узлам
class Client entryPoint
class B1,B3 coreLogic
class B2,B4 risk
class C1,C2 dependency
class D storage