Plantuml: insight graphs
This commit is contained in:
parent
635fea6ab3
commit
8f079d25f6
4 changed files with 137 additions and 1 deletions
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"workbench.colorTheme": "Default Dark Modern",
|
||||
"workbench.colorTheme": "Dark Modern",
|
||||
"cSpell.words": [
|
||||
"descr",
|
||||
"dotenv",
|
||||
|
|
|
|||
35
ivideon/puml/insight/arch_conf.puml
Normal file
35
ivideon/puml/insight/arch_conf.puml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
@startuml insight_quota_flow
|
||||
!option handwritten true
|
||||
skinparam sequenceMessageAlign center
|
||||
skinparam defaultFontName Helvetica
|
||||
|
||||
participant "Billing" as Billing
|
||||
participant "insight-billing-gateway" as Gateway
|
||||
participant "DB" as DB
|
||||
participant "event-server" as EventServer
|
||||
participant "insight-task-generator" as TaskGenerator
|
||||
participant "insight-task-processor" as TaskProcessor
|
||||
participant "vlm-host" as VlmHost
|
||||
|
||||
group #E8F2FC Provisioning Flow
|
||||
Billing -> Gateway : Notify Quota Updated
|
||||
Gateway -> DB : Save/Update Quota Data
|
||||
Gateway -> EventServer : Create Subscription
|
||||
note over TaskGenerator : Target: insight-task-generator
|
||||
end
|
||||
|
||||
group #FBF6DD Processing Flow
|
||||
EventServer -> TaskGenerator : Webhook Event (Trigger)
|
||||
TaskGenerator -> DB : Fetch Quota Balance
|
||||
DB --> TaskGenerator : Quota Data
|
||||
TaskGenerator -> TaskProcessor : Send Task Message
|
||||
TaskProcessor -> DB : Verify Current Quota
|
||||
DB --> TaskProcessor : Quota Valid
|
||||
TaskProcessor -> VlmHost : Call VLM Model
|
||||
VlmHost --> TaskProcessor : Model Results
|
||||
TaskProcessor -> TaskProcessor : Process Results
|
||||
TaskProcessor -> DB : Save InsightEvent
|
||||
TaskProcessor -> DB : Consume Quota
|
||||
TaskProcessor -> Billing : Notify Quota Usage (NSQ)
|
||||
end
|
||||
@enduml
|
||||
20
ivideon/puml/insight/arch_generator.puml
Normal file
20
ivideon/puml/insight/arch_generator.puml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
@startuml insight_quota_flow
|
||||
!option handwritten true
|
||||
skinparam sequenceMessageAlign center
|
||||
skinparam defaultFontName Helvetica
|
||||
autonumber
|
||||
|
||||
participant "DB" as DB
|
||||
participant "event-server" as EventServer
|
||||
participant "insight-task-generator" as TaskGenerator
|
||||
participant "insight-task-processor" as TaskProcessor
|
||||
participant "vlm-host" as VlmHost
|
||||
|
||||
EventServer -> TaskGenerator : Webhook Event (Trigger)
|
||||
TaskGenerator -> TaskProcessor : Send Task Message
|
||||
TaskProcessor -> VlmHost : Call VLM Model
|
||||
VlmHost --> TaskProcessor : Model Results
|
||||
TaskProcessor -> TaskProcessor : Process Results
|
||||
TaskProcessor -> DB : Save InsightEvent
|
||||
|
||||
@enduml
|
||||
81
ivideon/puml/insight/task_generator/data_flow.puml
Normal file
81
ivideon/puml/insight/task_generator/data_flow.puml
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
@startuml insight_quota_flow
|
||||
skinparam sequenceMessageAlign center
|
||||
|
||||
autonumber
|
||||
|
||||
participant "event_server" as EventServer
|
||||
participant "task_generator\nAPI" as ITG_API
|
||||
database "DB" as Mongo
|
||||
queue "NSQ" as NSQ
|
||||
participant "task_processor" as TaskProcessor
|
||||
|
||||
EventServer -> ITG_API : На API /events\nприсылается JSON события.\n\nЛевее представлены важные поля для сервиса
|
||||
note left
|
||||
<code>
|
||||
{
|
||||
"id": "8cc8BDfLSZcQhGnx.55",
|
||||
"user": "100000608486",
|
||||
"type": "motion/started",
|
||||
"name": "Motion",
|
||||
"description": "Motion",
|
||||
"time": 1790251591.802,
|
||||
"source_type": "camera",
|
||||
"source_id": "100-E87hD7H7dN08Ve3zuoibRz:11796480",
|
||||
"device_type": "camera",
|
||||
"device_id": "100-E87hD7H7dN08Ve3zuoibRz:11796480",
|
||||
"preview": "https://some_pic.jpeg",
|
||||
"clip": "https://some_clip.mp4",
|
||||
"clip_duration": 10,
|
||||
"value": null,
|
||||
"status": "new",
|
||||
"delivered": true,
|
||||
"data": null,
|
||||
"chain_id": "rqa5XhYU9X9sqm3i",
|
||||
"updated_at": 1790251597.4111845,
|
||||
"alert_status": null,
|
||||
"allowed_next_alert_statuses": [
|
||||
"suspicious",
|
||||
"alert",
|
||||
"false_positive"
|
||||
],
|
||||
"priority": null,
|
||||
"marker": false,
|
||||
"_id": "8cc8BDfLSZcQhGnx.55"
|
||||
}
|
||||
</code>
|
||||
end note
|
||||
ITG_API -> ITG_API : Из JSON'а формируется\nмодель ""IncomingEvent""
|
||||
note left
|
||||
Тут после формирования модели надо:
|
||||
1. Сходить в БД
|
||||
2. Найти сценарии Insight пользователей по полю ""user""
|
||||
2.1 Надо смотреть в API ""InsightScenario""
|
||||
2.2 У сценария есть поле ""trigger"", которое выглядит примерно так:
|
||||
<code>
|
||||
Scenario.trigger.event_types = ['motion']
|
||||
</code>
|
||||
которое и надо метчить с полем ""type"" события
|
||||
end note
|
||||
ITG_API -> Mongo : Забираем Insight сценарии пользователя\n""user""\nи подходящим ""event_type""'ом\n\nСм запрос левее
|
||||
note left
|
||||
<code>
|
||||
db.scenarios.find({
|
||||
"trigger.type": "event",
|
||||
"trigger.event_types": "motion/started",
|
||||
"owner_id": "100000608486",
|
||||
"enabled": true,
|
||||
"deleted": { $ne: true }
|
||||
})
|
||||
</code>
|
||||
end note
|
||||
Mongo --> ITG_API : ""Optional[List]"" сценарий пользователя
|
||||
alt Запрос пришел с пустым списком
|
||||
ITG_API --> EventServer : Возврат пустого списка (т.к. таски никакие не созданы)
|
||||
else Список сценариев не пуст
|
||||
ITG_API -> ITG_API : Создаем список\n""tasks""\nКуда будем писать созданные таски
|
||||
loop Для каждого сценария
|
||||
ITG_API -> ITG_API : Создаем объект\n""Task""\n
|
||||
ITG_API -> ITG_API : Добавляем их `id` в список ""tasks""
|
||||
end
|
||||
ITG_API --> EventServer : Возврат список созданных тасок
|
||||
end
|
||||
Loading…
Reference in a new issue