Add some ivideon schemes

This commit is contained in:
t0xa 2025-08-28 15:38:10 +03:00
parent a34a290ae7
commit fe1f7b31b4
4 changed files with 148 additions and 0 deletions

View file

@ -16,11 +16,14 @@ package "api_concept.entities/maas" {
package "maas/api/impl/organization" {
class MaasOrganization {
+ {field} PERMISSIONS_COLLECTION = db.main().permission_grants
+ share_grant(\n grantee_id,\n permission\n)
}
}
package "api_concept.backend/impl/permission_grant" {
class PermissionGrant {
+ {field} COLLECTION = db.main().ivideon.permission_grants
+ find()
}

View file

@ -0,0 +1,60 @@
@startuml
title Узел аналитики: взаимодействие сервисов и внешних систем
skinparam componentStyle rectangle
skinparam wrapWidth 200
skinparam maxMessageSize 200
'=== Внешние системы ===
cloud "Централ (API5)" as CENTRAL
cloud "Видеоноды" as VNODE
'=== Узел аналитики ===
node "Analytics Node" {
[ivideon-analytics-controller\n(analytics-controller)] as CTRL
[ivideon-analytics-video-proxy\n(analytics-video-proxy)] as PROXY
[ivideon-event-saver\n(analytics-event-saver)] as SAVER
[ivideon-cloud-vs\n(cloud-vs)] as CLVS
[ivideon-analytics-visitor-counter\n(analytics-visitor-counter)] as VC
database "База данных\nMongoDB\ncollections:\n- analytics.channels\n- analytics.events" as DB
}
'=== Связи с Централом (API5) ===
CTRL -down-> CENTRAL : Периодическая синхронизация\n• Получение списка камер\n• Получение/обновление настроек облачных модулей\n• Оповещение об ошибках\n• Передача метрик
PROXY -down-> CENTRAL : Запросы к API5 для получения\nпараметров/доступа к видеопотоку\n(со стороны видеонод)
'=== Поток видео ===
PROXY --> CLVS : Проксирование видеопотока\n(FLV в формате видеонод)
PROXY ..> VNODE : Доступ к потокам с видеонод\n(через API5 Централа)
'=== WebSocket-взаимодействие ===
CTRL -left-> PROXY : WebSocket (к серверу PROXY)\nУведомления об ошибках ivideon-analytics-video-proxy
CLVS -right-> CTRL : WebSocket (к серверу CLVS)\nСобытия облачного видеосервера
'=== Счётчик посетителей ===
VC --> CTRL : События счётчика (по FLV-потоку)\nдля аналитики
'=== Синхронизация состояния через БД ===
CTRL -down-> DB : Обновление состояния каналов\n(collection: analytics.channels)
PROXY -down-> DB : Периодическая вычитка состояния каналов\n• При state=stream_awaited ⇒ выставляет state=streaming\n• Выставление acknowledgment-статусов
PROXY -left-> CTRL : Логическая синхронизация состояния\nчерез общую БД (channels)
'=== Работа с событиями ===
CTRL -down-> DB : Обработка и запись событий\n(collection: analytics.events)
SAVER -down-> DB : Периодическая вычитка событий
SAVER -down-> CENTRAL : Доставка событий в API5\n(тип события ⇒ соответствующий запрос)
'=== Легенда ===
legend right
Каналы связи
● HTTP/API: сплошная стрелка
● WebSocket: подпись "WebSocket"
● БД-синхронизация: стрелка к DB с пояснением
Коллекции
analytics.channels — состояние каналов/ACK
analytics.events — события для отправки в облако
endlegend
@enduml

View file

@ -0,0 +1,34 @@
@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

View file

@ -0,0 +1,51 @@
@startuml
title Разбор ноды ssh ar1-misc01.extcam.com
file services {
component "zabbix-agent2"
component "syslog-ng"
card ivideon {
component "ivideon-analytics-carrier" as i_analy_c #red
component "ivideon-server-cloud-vca"
component "ivideon-analytics-heatmaps"
component "ivideon-sentry-proxy"
component iavc [
<b>ivideon-analytics-visitor-counter</b>
====
Обёртка для облачного счётчика посетителей,
использует flv-поток для аналитики
]
component iavp [
<b>ivideon-analytics-video-proxy</b>
====
сервис, проксирующий поток от видеонод в облачный видеосервер
]
component iaes [
<b>ivideon-analytics-event-saver</b>
====
Cервис, выполняющий доставку в облако событий облачного видеосервера,
предварительно обработанных сервисом ivideon-analytics-controller.
]
component iac_card [
<b>ivideon-analytics-controller</b>
====
Получение от централа актуального списка камер на обработку
....
Получение и обновление настроек облачных модулей видеоаналитики
....
Обработка событий от облачного видеосервера/счётчика посетителей
....
Реагирование на ошибки ivideon-analytics-video-proxy
....
Оповещение централа о различных ошибках
....
Передача метрик в централ
]
}
}
note top of i_analy_c
Данный сервис не хочет подниматься
end note
@enduml