@startuml
title Сценарий: запуск стрима, назначение канала и переход в streaming

participant CENTRAL as "Централ (API5)"
participant CTRL as "analytics-controller"
database DB as "DB (analytics.channels)"
participant PROXY as "analytics-video-proxy"
participant VNODE as "Видеоноды"
participant CLVS as "cloud-vs"

== Синхронизация с централом ==
CTRL -> CENTRAL : GET /cameras (список камер на обработку)\nGET /cloud-analytics/settings
CENTRAL --> CTRL : список камер, настройки

== Назначение канала ==
CTRL -> DB : upsert channel{cameraId, state=stream_awaited,\nsettings, rev, ...} -> analytics.channels

== PROXY подхватывает канал ==
PROXY -> DB : poll analytics.channels
DB --> PROXY : channel{state=stream_awaited}
PROXY -> DB : update channel.state=streaming,\nack={rev, ts}

== Получение видео и проксирование ==
PROXY -> CENTRAL : API5 запрос параметров доступа к потоку
CENTRAL --> PROXY : креденшелы/URL
PROXY -> VNODE : запрос видеопотока (через выданные параметры)
VNODE --> PROXY : FLV поток (формат видеонод)
PROXY -> CLVS : проксирование FLV в cloud-vs (ingest)

note right of CLVS
cloud-vs получает поток в формате
видеонод (FLV) и готов генерировать события
end note
@enduml
