diff --git a/.vscode/settings.json b/.vscode/settings.json
index 64d1694..ab8cc1d 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,5 +1,5 @@
{
- "workbench.colorTheme": "Default Dark Modern",
+ "workbench.colorTheme": "Dark Modern",
"cSpell.words": [
"descr",
"dotenv",
diff --git a/ivideon/puml/insight/arch_conf.puml b/ivideon/puml/insight/arch_conf.puml
new file mode 100644
index 0000000..43e2901
--- /dev/null
+++ b/ivideon/puml/insight/arch_conf.puml
@@ -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
diff --git a/ivideon/puml/insight/arch_generator.puml b/ivideon/puml/insight/arch_generator.puml
new file mode 100644
index 0000000..266f2d4
--- /dev/null
+++ b/ivideon/puml/insight/arch_generator.puml
@@ -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
diff --git a/ivideon/puml/insight/task_generator/data_flow.puml b/ivideon/puml/insight/task_generator/data_flow.puml
new file mode 100644
index 0000000..21d8f2f
--- /dev/null
+++ b/ivideon/puml/insight/task_generator/data_flow.puml
@@ -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
+
+{
+ "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"
+}
+
+end note
+ITG_API -> ITG_API : Из JSON'а формируется\nмодель ""IncomingEvent""
+note left
+Тут после формирования модели надо:
+1. Сходить в БД
+2. Найти сценарии Insight пользователей по полю ""user""
+ 2.1 Надо смотреть в API ""InsightScenario""
+ 2.2 У сценария есть поле ""trigger"", которое выглядит примерно так:
+
+ Scenario.trigger.event_types = ['motion']
+
+ которое и надо метчить с полем ""type"" события
+end note
+ITG_API -> Mongo : Забираем Insight сценарии пользователя\n""user""\nи подходящим ""event_type""'ом\n\nСм запрос левее
+note left
+
+db.scenarios.find({
+ "trigger.type": "event",
+ "trigger.event_types": "motion/started",
+ "owner_id": "100000608486",
+ "enabled": true,
+ "deleted": { $ne: true }
+})
+
+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
\ No newline at end of file