Ivideon: add task generator schemes
This commit is contained in:
parent
8f079d25f6
commit
28d6b22d3d
3 changed files with 53 additions and 21 deletions
26
ivideon/puml/insight/task_generator/data_flow_API.puml
Normal file
26
ivideon/puml/insight/task_generator/data_flow_API.puml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
@startuml insight_quota_flow
|
||||||
|
skinparam sequenceMessageAlign center
|
||||||
|
|
||||||
|
Title Алгоритм работы сервиса по API
|
||||||
|
|
||||||
|
autonumber
|
||||||
|
|
||||||
|
participant "event_server" as EventServer
|
||||||
|
participant "task_generator" as ITG_API
|
||||||
|
database "Mongo\ninsight.scenarios" as Mongo
|
||||||
|
queue "NSQ\ninsight.task_processor.input" as NSQ
|
||||||
|
|
||||||
|
EventServer -> ITG_API : На API /events\nприсылается JSON события.
|
||||||
|
ITG_API -> Mongo : Запрос Insight сценариев пользователя из события
|
||||||
|
Mongo --> ITG_API : ""Optional[List]"" сценариев пользователя
|
||||||
|
alt Запрос пришел с пустым списком
|
||||||
|
ITG_API --> EventServer : Возврат пустого списка (т.к. таски никакие не созданы)
|
||||||
|
else Список сценариев не пуст
|
||||||
|
ITG_API -> ITG_API : Создаем список\n""tasks""\nКуда будем писать созданные таски ""Tasks""
|
||||||
|
loop Для каждого сценария
|
||||||
|
ITG_API -> ITG_API : Создаем объект ""Task""
|
||||||
|
ITG_API -> NSQ : Отправка в топик брокера сформированной таски
|
||||||
|
ITG_API -> ITG_API : Добавляем их `id` в список ""tasks""
|
||||||
|
end
|
||||||
|
ITG_API --> EventServer : Возврат списка ""ID's"" созданных тасок
|
||||||
|
end
|
||||||
|
|
@ -4,18 +4,17 @@ skinparam sequenceMessageAlign center
|
||||||
autonumber
|
autonumber
|
||||||
|
|
||||||
participant "event_server" as EventServer
|
participant "event_server" as EventServer
|
||||||
participant "task_generator\nAPI" as ITG_API
|
participant "task_generator" as ITG_API
|
||||||
database "DB" as Mongo
|
database "Mongo\ninsight.scenarios" as Mongo
|
||||||
queue "NSQ" as NSQ
|
queue "NSQ\ninsight.task_processor.input" as NSQ
|
||||||
participant "task_processor" as TaskProcessor
|
|
||||||
|
|
||||||
EventServer -> ITG_API : На API /events\nприсылается JSON события.\n\nЛевее представлены важные поля для сервиса
|
EventServer -> ITG_API : На API /events\nприсылается JSON события.\n\nЛевее представлены важные поля для сервиса
|
||||||
note left
|
note left
|
||||||
<code>
|
<code>
|
||||||
{
|
{
|
||||||
"id": "8cc8BDfLSZcQhGnx.55",
|
"event_id": "8cc8BDfLSZcQhGnx.55",
|
||||||
"user": "100000608486",
|
"user": "100000608486",
|
||||||
"type": "motion/started",
|
"event_type": "motion/started",
|
||||||
"name": "Motion",
|
"name": "Motion",
|
||||||
"description": "Motion",
|
"description": "Motion",
|
||||||
"time": 1790251591.802,
|
"time": 1790251591.802,
|
||||||
|
|
@ -26,21 +25,8 @@ note left
|
||||||
"preview": "https://some_pic.jpeg",
|
"preview": "https://some_pic.jpeg",
|
||||||
"clip": "https://some_clip.mp4",
|
"clip": "https://some_clip.mp4",
|
||||||
"clip_duration": 10,
|
"clip_duration": 10,
|
||||||
"value": null,
|
|
||||||
"status": "new",
|
|
||||||
"delivered": true,
|
|
||||||
"data": null,
|
|
||||||
"chain_id": "rqa5XhYU9X9sqm3i",
|
"chain_id": "rqa5XhYU9X9sqm3i",
|
||||||
"updated_at": 1790251597.4111845,
|
"data": null
|
||||||
"alert_status": null,
|
|
||||||
"allowed_next_alert_statuses": [
|
|
||||||
"suspicious",
|
|
||||||
"alert",
|
|
||||||
"false_positive"
|
|
||||||
],
|
|
||||||
"priority": null,
|
|
||||||
"marker": false,
|
|
||||||
"_id": "8cc8BDfLSZcQhGnx.55"
|
|
||||||
}
|
}
|
||||||
</code>
|
</code>
|
||||||
end note
|
end note
|
||||||
|
|
@ -75,7 +61,8 @@ else Список сценариев не пуст
|
||||||
ITG_API -> ITG_API : Создаем список\n""tasks""\nКуда будем писать созданные таски
|
ITG_API -> ITG_API : Создаем список\n""tasks""\nКуда будем писать созданные таски
|
||||||
loop Для каждого сценария
|
loop Для каждого сценария
|
||||||
ITG_API -> ITG_API : Создаем объект\n""Task""\n
|
ITG_API -> ITG_API : Создаем объект\n""Task""\n
|
||||||
ITG_API -> ITG_API : Добавляем их `id` в список ""tasks""
|
ITG_API -> NSQ : Отправка в топик брокера сформированной таски
|
||||||
|
ITG_API -> ITG_API : Добавляем их ""id"" в список ""tasks""
|
||||||
end
|
end
|
||||||
ITG_API --> EventServer : Возврат список созданных тасок
|
ITG_API --> EventServer : Возврат список созданных тасок
|
||||||
end
|
end
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
@startuml task_generator_simple_flow
|
||||||
|
skinparam sequenceMessageAlign center
|
||||||
|
autonumber
|
||||||
|
|
||||||
|
participant "event_server" as EventServer
|
||||||
|
participant "http_input.py" as HttpInput
|
||||||
|
participant "message_handler.py" as Handler
|
||||||
|
database "Mongo" as Mongo
|
||||||
|
queue "NSQ" as NSQ
|
||||||
|
|
||||||
|
EventServer -> HttpInput : POST /events\n{"type":"motion", "user":"100...", ...}
|
||||||
|
HttpInput -> Handler : await transform(event)
|
||||||
|
Handler -> Mongo : find({trigger.event_types: "motion", owner_id: "100...", enabled: true})
|
||||||
|
Mongo --> Handler : [scenario-1]
|
||||||
|
Handler -> Handler : _build_task(event, scenario-1)
|
||||||
|
Handler --> HttpInput : return [task-1]
|
||||||
|
HttpInput -> NSQ : push("insight.task_processor.input", task-1)
|
||||||
|
HttpInput --> EventServer : 200 (пустой ответ)
|
||||||
|
@enduml
|
||||||
Loading…
Reference in a new issue