29 lines
1.2 KiB
Text
29 lines
1.2 KiB
Text
@startuml
|
||
participant "Video Node" as VN
|
||
participant "crowd.node\n(scheduler)" as Scheduler
|
||
queue "Redis Queue" as Redis
|
||
participant "crowd.node\n(analyzer)" as Analyzer
|
||
participant "crowd.backend" as Backend
|
||
participant "Tevian API" as Tevian
|
||
database MongoDB
|
||
|
||
== Периодическая работа (каждые N секунд) ==
|
||
|
||
Scheduler -> MongoDB: Найти камеры с queue_detection
|
||
Scheduler -> Scheduler: Проверить, нужно ли обновить зоны
|
||
Scheduler -> Redis: push task {"cmd": "analyze_crowd", "params": {...}}
|
||
|
||
Redis <- Analyzer: pop task
|
||
Analyzer -> VN: GET /snapshots/pull (получить кадр)
|
||
VN --> Analyzer: JPEG frame
|
||
Analyzer -> Analyzer: Повернуть кадр (если нужно)
|
||
Analyzer -> Tevian: Detect heads in zones
|
||
Tevian --> Analyzer: Detections
|
||
Analyzer -> Analyzer: Определить triggered zones
|
||
Analyzer -> Analyzer: Нарисовать зоны на кадре
|
||
Analyzer -> Backend: Send measurement + image URL
|
||
Backend -> MongoDB: Save measurement
|
||
|
||
Note over Scheduler, Analyzer: Scheduler и Analyzer работают\nв одном сервисе crowd.node,\nно scheduler запускается по cron
|
||
|
||
@enduml
|