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
|
||||
|
||||
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
|
||||
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 события.\n\nЛевее представлены важные поля для сервиса
|
||||
note left
|
||||
<code>
|
||||
{
|
||||
"id": "8cc8BDfLSZcQhGnx.55",
|
||||
"event_id": "8cc8BDfLSZcQhGnx.55",
|
||||
"user": "100000608486",
|
||||
"type": "motion/started",
|
||||
"event_type": "motion/started",
|
||||
"name": "Motion",
|
||||
"description": "Motion",
|
||||
"time": 1790251591.802,
|
||||
|
|
@ -26,21 +25,8 @@ note left
|
|||
"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"
|
||||
"data": null
|
||||
}
|
||||
</code>
|
||||
end note
|
||||
|
|
@ -75,7 +61,8 @@ else Список сценариев не пуст
|
|||
ITG_API -> ITG_API : Создаем список\n""tasks""\nКуда будем писать созданные таски
|
||||
loop Для каждого сценария
|
||||
ITG_API -> ITG_API : Создаем объект\n""Task""\n
|
||||
ITG_API -> ITG_API : Добавляем их `id` в список ""tasks""
|
||||
ITG_API -> NSQ : Отправка в топик брокера сформированной таски
|
||||
ITG_API -> ITG_API : Добавляем их ""id"" в список ""tasks""
|
||||
end
|
||||
ITG_API --> EventServer : Возврат список созданных тасок
|
||||
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