From 11090a742a4755cad4524114f780d5a47a91a1d2 Mon Sep 17 00:00:00 2001 From: TheNoxium Date: Sat, 15 Nov 2025 15:10:17 +0500 Subject: [PATCH 1/5] feat: delete ports --- model_nodes/node_callback_models.py | 1 - model_nodes/node_each_models.py | 2 -- model_nodes/node_if_models.py | 2 -- model_nodes/node_listen_models.py | 4 ++-- model_nodes/node_run_models.py | 2 +- model_nodes/node_set_models.py | 2 +- model_nodes/node_switch_models.py | 3 +-- model_nodes/node_test_models.py | 2 +- model_nodes/node_trigger_models.py | 2 +- model_nodes/node_wait_models.py | 2 +- model_nodes/node_while_models.py | 3 +-- nodes/vork_node_callback.py | 8 ++------ nodes/vork_node_each.py | 9 +-------- nodes/vork_node_if.py | 9 +-------- nodes/vork_node_listen.py | 4 ---- nodes/vork_node_run.py | 8 ++------ nodes/vork_node_set.py | 9 ++------- nodes/vork_node_switch.py | 5 +---- nodes/vork_node_trigger.py | 7 +------ nodes/vork_node_wait.py | 8 +------- nodes/vork_node_while.py | 10 ++-------- 21 files changed, 22 insertions(+), 80 deletions(-) diff --git a/model_nodes/node_callback_models.py b/model_nodes/node_callback_models.py index a0f17c6..a945e35 100644 --- a/model_nodes/node_callback_models.py +++ b/model_nodes/node_callback_models.py @@ -23,7 +23,6 @@ class CallbackNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла callback """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") class CallbackNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_each_models.py b/model_nodes/node_each_models.py index 76cf954..ebb933f 100644 --- a/model_nodes/node_each_models.py +++ b/model_nodes/node_each_models.py @@ -23,8 +23,6 @@ class EachNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла each """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") - else_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи Else (LINK)") class EachNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_if_models.py b/model_nodes/node_if_models.py index c8bd360..5cfa218 100644 --- a/model_nodes/node_if_models.py +++ b/model_nodes/node_if_models.py @@ -23,8 +23,6 @@ class IfNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла if """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") - else_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи Else (LINK)") class IfNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_listen_models.py b/model_nodes/node_listen_models.py index 8eb3ae6..23b835e 100644 --- a/model_nodes/node_listen_models.py +++ b/model_nodes/node_listen_models.py @@ -22,9 +22,9 @@ class ListenNodeLinks(BaseModel): class ListenNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла listen + Pydantic модель для """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") + is_start: bool = Field(default=False, description="Является ли узел стартовым") diff --git a/model_nodes/node_run_models.py b/model_nodes/node_run_models.py index 0738fe7..949ccd2 100644 --- a/model_nodes/node_run_models.py +++ b/model_nodes/node_run_models.py @@ -23,7 +23,7 @@ class RunNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла run """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") + class RunNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_set_models.py b/model_nodes/node_set_models.py index 7bd1473..6147629 100644 --- a/model_nodes/node_set_models.py +++ b/model_nodes/node_set_models.py @@ -23,7 +23,7 @@ class SetNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла set """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи then (LINK)") + class SetNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_switch_models.py b/model_nodes/node_switch_models.py index 7d4e8c2..3ecf246 100644 --- a/model_nodes/node_switch_models.py +++ b/model_nodes/node_switch_models.py @@ -23,8 +23,7 @@ class SwitchNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла switch """ - default_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи default (LINK)") - case_1_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи case_1 (LINK)") + class SwitchNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_test_models.py b/model_nodes/node_test_models.py index f50b87e..04398f1 100644 --- a/model_nodes/node_test_models.py +++ b/model_nodes/node_test_models.py @@ -21,7 +21,7 @@ class TestNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла test """ - node_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") + class TestNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_trigger_models.py b/model_nodes/node_trigger_models.py index 7814e1b..546be18 100644 --- a/model_nodes/node_trigger_models.py +++ b/model_nodes/node_trigger_models.py @@ -23,7 +23,7 @@ class TriggerNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла trigger """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") + class TriggerNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_wait_models.py b/model_nodes/node_wait_models.py index 352f5c7..210602c 100644 --- a/model_nodes/node_wait_models.py +++ b/model_nodes/node_wait_models.py @@ -23,7 +23,7 @@ class WaitNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла wait """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи then (LINK)") + class WaitNodeCoreSchema(BaseModel): diff --git a/model_nodes/node_while_models.py b/model_nodes/node_while_models.py index b4bcd6c..d8f0f93 100644 --- a/model_nodes/node_while_models.py +++ b/model_nodes/node_while_models.py @@ -23,8 +23,7 @@ class WhileNodeCoreSchemaData(BaseModel): """ Pydantic модель для данных портов узла while """ - then_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи Then (LINK)") - else_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи Else (LINK)") + class WhileNodeCoreSchema(BaseModel): diff --git a/nodes/vork_node_callback.py b/nodes/vork_node_callback.py index a1f12bd..5ca1f9e 100644 --- a/nodes/vork_node_callback.py +++ b/nodes/vork_node_callback.py @@ -33,17 +33,13 @@ class VorkNodeCallback(VorkNode): Валидирует данные узла callback и возвращает схему """ try: - # Валидируем данные узла + validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - node_data = CallbackNodeCoreSchemaData( - then_port_number=0 - ) + node_data = None - # Создаем схему с валидированными данными return CallbackNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_each.py b/nodes/vork_node_each.py index 283dd30..88dc669 100644 --- a/nodes/vork_node_each.py +++ b/nodes/vork_node_each.py @@ -33,19 +33,12 @@ class VorkNodeEach(VorkNode): Валидирует данные узла each и возвращает схему """ try: - # Валидируем данные узла validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - # Создаем данные портов (аналогично if) - node_data = EachNodeCoreSchemaData( - then_port_number=0, - else_port_number=1, - ) + node_data = None - # Создаем схему с валидированными данными return EachNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_if.py b/nodes/vork_node_if.py index a0fef48..976dc7f 100644 --- a/nodes/vork_node_if.py +++ b/nodes/vork_node_if.py @@ -28,19 +28,12 @@ class VorkNodeIf(VorkNode): и возвращает схему с валидированными данными. """ try: - # Валидируем данные validated_data = self.validate_data() - # Валидируем связи validated_links = self.validate_links() - # Создаем вложенную схему с данными портов - node_data = IfNodeCoreSchemaData( - then_port_number=0, - else_port_number=1, - ) + node_data = None - # Создаем схему с валидированными данными из экземпляра return IfNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_listen.py b/nodes/vork_node_listen.py index 9dad076..4dbce87 100644 --- a/nodes/vork_node_listen.py +++ b/nodes/vork_node_listen.py @@ -33,18 +33,14 @@ class VorkNodeListen(VorkNode): Валидирует данные узла listen и возвращает схему """ try: - # Валидируем данные узла validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() node_data = ListenNodeCoreSchemaData( - then_port_number=0, is_start=validated_data.is_start ) - # Создаем схему с валидированными данными return ListenNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_run.py b/nodes/vork_node_run.py index ba5b056..b11f19d 100644 --- a/nodes/vork_node_run.py +++ b/nodes/vork_node_run.py @@ -33,17 +33,13 @@ class VorkNodeRun(VorkNode): Валидирует данные узла run и возвращает схему """ try: - # Валидируем данные узла + validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - node_data = RunNodeCoreSchemaData( - then_port_number=0 - ) + node_data = None - # Создаем схему с валидированными данными return RunNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_set.py b/nodes/vork_node_set.py index 2ab7530..b6e70f7 100644 --- a/nodes/vork_node_set.py +++ b/nodes/vork_node_set.py @@ -33,18 +33,13 @@ class VorkNodeSet(VorkNode): Валидирует данные узла set и возвращает схему """ try: - # Валидируем данные узла + validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - # Создаем данные портов - node_data = SetNodeCoreSchemaData( - then_port_number=0, - ) + node_data = None - # Создаем схему с валидированными данными return SetNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_switch.py b/nodes/vork_node_switch.py index 0aa8e66..5200be7 100644 --- a/nodes/vork_node_switch.py +++ b/nodes/vork_node_switch.py @@ -40,10 +40,7 @@ class VorkNodeSwitch(VorkNode): validated_links = self.validate_links() # Создаем данные портов (default=0, case_1=1) - node_data = SwitchNodeCoreSchemaData( - default_port_number=0, - case_1_port_number=1, - ) + node_data = None # Создаем схему с валидированными данными return SwitchNodeCoreSchema( diff --git a/nodes/vork_node_trigger.py b/nodes/vork_node_trigger.py index 2f8504d..581c72b 100644 --- a/nodes/vork_node_trigger.py +++ b/nodes/vork_node_trigger.py @@ -33,17 +33,12 @@ class VorkNodeTrigger(VorkNode): Валидирует данные узла trigger и возвращает схему """ try: - # Валидируем данные узла validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - node_data = TriggerNodeCoreSchemaData( - then_port_number=0 - ) + node_data = None - # Создаем схему с валидированными данными return TriggerNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_wait.py b/nodes/vork_node_wait.py index 20fab2c..404fe63 100644 --- a/nodes/vork_node_wait.py +++ b/nodes/vork_node_wait.py @@ -33,18 +33,12 @@ class VorkNodeWait(VorkNode): Валидирует данные узла wait и возвращает схему """ try: - # Валидируем данные узла validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - # Создаем данные портов - node_data = WaitNodeCoreSchemaData( - then_port_number=0, - ) + node_data = None - # Создаем схему с валидированными данными return WaitNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, diff --git a/nodes/vork_node_while.py b/nodes/vork_node_while.py index a327d97..b015a99 100644 --- a/nodes/vork_node_while.py +++ b/nodes/vork_node_while.py @@ -33,19 +33,13 @@ class VorkNodeWhile(VorkNode): Валидирует данные узла while и возвращает схему """ try: - # Валидируем данные узла + validated_data = self.validate_data() - # Валидируем связи узла validated_links = self.validate_links() - # Создаем данные портов (аналогично if) - node_data = WhileNodeCoreSchemaData( - then_port_number=0, - else_port_number=1, - ) + node_data = None - # Создаем схему с валидированными данными return WhileNodeCoreSchema( ps_id=validated_data.ps_id, node_type=validated_data.node_type, -- 2.39.5 From 0bc87b589e42d9addf492de948fc6141c00b42c4 Mon Sep 17 00:00:00 2001 From: TheNoxium Date: Tue, 18 Nov 2025 13:35:01 +0500 Subject: [PATCH 2/5] fix: description nodes --- model_nodes/node_callback_models.py | 2 +- model_nodes/node_each_models.py | 2 +- model_nodes/node_if_models.py | 2 +- model_nodes/node_listen_models.py | 2 +- model_nodes/node_run_models.py | 2 +- model_nodes/node_set_models.py | 2 +- model_nodes/node_switch_models.py | 2 +- model_nodes/node_test_models.py | 2 +- model_nodes/node_trigger_models.py | 2 +- model_nodes/node_wait_models.py | 2 +- model_nodes/node_while_models.py | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/model_nodes/node_callback_models.py b/model_nodes/node_callback_models.py index a945e35..5bdfc01 100644 --- a/model_nodes/node_callback_models.py +++ b/model_nodes/node_callback_models.py @@ -21,7 +21,7 @@ class CallbackNodeLinks(BaseModel): class CallbackNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла callback + Pydantic модель для данных узла callback """ diff --git a/model_nodes/node_each_models.py b/model_nodes/node_each_models.py index ebb933f..24c4fa8 100644 --- a/model_nodes/node_each_models.py +++ b/model_nodes/node_each_models.py @@ -21,7 +21,7 @@ class EachNodeLinks(BaseModel): class EachNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла each + Pydantic модель для данных узла each """ diff --git a/model_nodes/node_if_models.py b/model_nodes/node_if_models.py index 5cfa218..e402c6d 100644 --- a/model_nodes/node_if_models.py +++ b/model_nodes/node_if_models.py @@ -21,7 +21,7 @@ class IfNodeLinks(BaseModel): class IfNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла if + Pydantic модель для данных узла if """ diff --git a/model_nodes/node_listen_models.py b/model_nodes/node_listen_models.py index 23b835e..229d6f0 100644 --- a/model_nodes/node_listen_models.py +++ b/model_nodes/node_listen_models.py @@ -22,7 +22,7 @@ class ListenNodeLinks(BaseModel): class ListenNodeCoreSchemaData(BaseModel): """ - Pydantic модель для + Pydantic модель для данных узла listen """ is_start: bool = Field(default=False, description="Является ли узел стартовым") diff --git a/model_nodes/node_run_models.py b/model_nodes/node_run_models.py index 949ccd2..221e167 100644 --- a/model_nodes/node_run_models.py +++ b/model_nodes/node_run_models.py @@ -21,7 +21,7 @@ class RunNodeLinks(BaseModel): class RunNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла run + Pydantic модель для данных узла run """ diff --git a/model_nodes/node_set_models.py b/model_nodes/node_set_models.py index 6147629..8ffccde 100644 --- a/model_nodes/node_set_models.py +++ b/model_nodes/node_set_models.py @@ -21,7 +21,7 @@ class SetNodeLinks(BaseModel): class SetNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла set + Pydantic модель для данных узла set """ diff --git a/model_nodes/node_switch_models.py b/model_nodes/node_switch_models.py index 3ecf246..9a6f2cb 100644 --- a/model_nodes/node_switch_models.py +++ b/model_nodes/node_switch_models.py @@ -21,7 +21,7 @@ class SwitchNodeLinks(BaseModel): class SwitchNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла switch + Pydantic модель для данных узла switch """ diff --git a/model_nodes/node_test_models.py b/model_nodes/node_test_models.py index 04398f1..d986ca1 100644 --- a/model_nodes/node_test_models.py +++ b/model_nodes/node_test_models.py @@ -19,7 +19,7 @@ class TestNodeLinks(BaseModel): class TestNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла test + Pydantic модель для данных узла test """ diff --git a/model_nodes/node_trigger_models.py b/model_nodes/node_trigger_models.py index 546be18..edde11e 100644 --- a/model_nodes/node_trigger_models.py +++ b/model_nodes/node_trigger_models.py @@ -21,7 +21,7 @@ class TriggerNodeLinks(BaseModel): class TriggerNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла trigger + Pydantic модель для данных узла trigger """ diff --git a/model_nodes/node_wait_models.py b/model_nodes/node_wait_models.py index 210602c..7ae5b4c 100644 --- a/model_nodes/node_wait_models.py +++ b/model_nodes/node_wait_models.py @@ -21,7 +21,7 @@ class WaitNodeLinks(BaseModel): class WaitNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла wait + Pydantic модель для данных узла wait """ diff --git a/model_nodes/node_while_models.py b/model_nodes/node_while_models.py index d8f0f93..8d94c48 100644 --- a/model_nodes/node_while_models.py +++ b/model_nodes/node_while_models.py @@ -21,7 +21,7 @@ class WhileNodeLinks(BaseModel): class WhileNodeCoreSchemaData(BaseModel): """ - Pydantic модель для данных портов узла while + Pydantic модель для данных узла while """ -- 2.39.5 From 0d6ecfeb40056af6043c40fe591abf1b54a886fc Mon Sep 17 00:00:00 2001 From: TheNoxium Date: Mon, 24 Nov 2025 04:12:26 +0700 Subject: [PATCH 3/5] fix: descriptor (listen, set, if, )deprecated typings --- core/vork_node.py | 10 +++---- core/vork_node_link.py | 4 +-- core/vork_node_registry.py | 10 +++---- core/vork_node_test.py | 4 +-- model_nodes/form_base_descriptor_models.py | 15 ++++++---- model_nodes/node_if_models.py | 14 ++++++---- model_nodes/node_link_models.py | 2 +- model_nodes/node_listen_models.py | 28 +++++++++---------- model_nodes/node_set_models.py | 22 +++------------ nodes/vork_node_callback.py | 6 ++-- nodes/vork_node_each.py | 6 ++-- nodes/vork_node_if.py | 4 +-- nodes/vork_node_listen.py | 6 ++-- nodes/vork_node_run.py | 6 ++-- nodes/vork_node_set.py | 6 ++-- nodes/vork_node_switch.py | 6 ++-- nodes/vork_node_trigger.py | 6 ++-- nodes/vork_node_wait.py | 6 ++-- nodes/vork_node_while.py | 6 ++-- orm/schemas/process/node_link.py | 4 +-- orm/schemas/process/process_schema.py | 4 +-- .../process/process_version_archive.py | 4 +-- orm/schemas/process/ps_node.py | 4 +-- 23 files changed, 89 insertions(+), 94 deletions(-) diff --git a/core/vork_node.py b/core/vork_node.py index c00e202..dc4627a 100644 --- a/core/vork_node.py +++ b/core/vork_node.py @@ -1,16 +1,16 @@ from abc import ABC, abstractmethod -from typing import Any, Dict +from typing import Any class VorkNode(ABC): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any]): - self.data: Dict[str, Any] = data - self.links: Dict[str, Any] = links + def __init__(self, data: dict[str, Any], links: dict[str, Any]): + self.data: dict[str, Any] = data + self.links: dict[str, Any] = links @classmethod @abstractmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: pass @abstractmethod diff --git a/core/vork_node_link.py b/core/vork_node_link.py index 74bc757..ceac138 100644 --- a/core/vork_node_link.py +++ b/core/vork_node_link.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from model_nodes import VorkNodeLinkData, VorkNodeLinkSchema @@ -8,7 +8,7 @@ from .link_name_generator import edge_title_generator, edge_title_to_number class VorkNodeLink: - def __init__(self, data: Dict[str, Any]): + def __init__(self, data: dict[str, Any]): """ Инициализация связи между узлами """ diff --git a/core/vork_node_registry.py b/core/vork_node_registry.py index 43a27d6..ff584a2 100644 --- a/core/vork_node_registry.py +++ b/core/vork_node_registry.py @@ -1,18 +1,18 @@ import importlib import inspect import pkgutil -from typing import Dict, Type, Optional, List +from typing import Type, Optional from .vork_node import VorkNode class VorkNodeRegistry: def __init__(self): - self.registry: Dict[str, Type[VorkNode]] = {} + self.registry: dict[str, Type[VorkNode]] = {} # Автоматически сканируем пакет 'nodes' при создании self._auto_discover_nodes() - def get_all(self) -> Dict[str, Type[VorkNode]]: + def get_all(self) -> dict[str, Type[VorkNode]]: return self.registry.copy() def get(self, node_type: str) -> Optional[Type[VorkNode]]: @@ -55,12 +55,12 @@ class VorkNodeRegistry: except Exception as e: print(f"Ошибка при сканировании пакета 'nodes': {e}") - def get_available_node_types(self) -> List[str]: + def get_available_node_types(self) -> list[str]: """ Возвращает список всех доступных типов узлов Returns: - List[str]: Список типов узлов + list[str]: Список типов узлов """ return list(self.registry.keys()) diff --git a/core/vork_node_test.py b/core/vork_node_test.py index febbb37..f25a18d 100644 --- a/core/vork_node_test.py +++ b/core/vork_node_test.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from .vork_node import VorkNode from model_nodes.node_test_models import ( TestNodeData, @@ -9,7 +9,7 @@ from model_nodes.node_test_models import ( class VorkNodeTest(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла test """ diff --git a/model_nodes/form_base_descriptor_models.py b/model_nodes/form_base_descriptor_models.py index 70277df..82af7fe 100644 --- a/model_nodes/form_base_descriptor_models.py +++ b/model_nodes/form_base_descriptor_models.py @@ -1,10 +1,10 @@ from __future__ import annotations -from typing import Optional, Annotated, Literal, List +from typing import Optional, Annotated, Literal, Any from pydantic import BaseModel, Field class LinkPort(BaseModel): - id: str + id: int label: str is_addable: Optional[bool] = None @@ -14,6 +14,7 @@ class LineElement(BaseModel): name: str label: str placeholder: Optional[str] = None + value: str = None class AreaElement(BaseModel): @@ -21,15 +22,17 @@ class AreaElement(BaseModel): name: str label: str placeholder: Optional[str] = None + value: str = None class SelectElement(BaseModel): type: Literal['select'] name: str label: str - data: List[str] + data: list[str] default: Optional[str] = None placeholder: Optional[str] = None + value: Optional[Any] = None class NumberElement(BaseModel): @@ -37,6 +40,7 @@ class NumberElement(BaseModel): name: str label: str placeholder: Optional[str] = None + value: int | float class DateElement(BaseModel): @@ -44,6 +48,7 @@ class DateElement(BaseModel): name: str label: str placeholder: Optional[str] = None + value: str = None FieldElement = Annotated[ @@ -57,11 +62,11 @@ class RowElement(BaseModel): name: str label: str link_port: Optional[LinkPort] = None - elements: Optional[List[FieldElement]] = None + elements: Optional[list[FieldElement]] = None class FormDescriptor(BaseModel): - elements: List[RowElement] + elements: list[RowElement] # Descriptor-suffixed aliases for clarity (backward compatible) diff --git a/model_nodes/node_if_models.py b/model_nodes/node_if_models.py index e402c6d..9746746 100644 --- a/model_nodes/node_if_models.py +++ b/model_nodes/node_if_models.py @@ -36,14 +36,18 @@ class IfNodeCoreSchema(BaseModel): data: Optional[IfNodeCoreSchemaData] = Field(default=None, description="Данные узла") -# Дескриптор формы узла IF IF_FORM_DESCRIPTOR = FormDescriptor( elements=[ + RowElement( + name="condition_row_label", + type="row", + label="condition_name", + ), RowElement( name="condition_row", type="row", - label="Condition", - link_port=LinkPort(id="then_output", label="Then"), + label="condition", + link_port=LinkPort(id=0, label="Then"), elements=[ AreaElement( name="condition", @@ -56,8 +60,8 @@ IF_FORM_DESCRIPTOR = FormDescriptor( RowElement( name="else_row", type="row", - label="Alternative path", - link_port=LinkPort(id="else_output", label="Else"), + label="alternative_path", + link_port=LinkPort(id=1, label="Else"), ), ] ) diff --git a/model_nodes/node_link_models.py b/model_nodes/node_link_models.py index 8e498e6..925b12d 100644 --- a/model_nodes/node_link_models.py +++ b/model_nodes/node_link_models.py @@ -1,4 +1,4 @@ -from typing import Optional, Dict, Any +from typing import Optional from pydantic import BaseModel, Field diff --git a/model_nodes/node_listen_models.py b/model_nodes/node_listen_models.py index 229d6f0..2f49a79 100644 --- a/model_nodes/node_listen_models.py +++ b/model_nodes/node_listen_models.py @@ -43,36 +43,36 @@ class ListenNodeCoreSchema(BaseModel): LISTEN_FORM_DESCRIPTOR = FormDescriptor( elements=[ RowElement( - name="event_row", + name="listen_row_label", type="row", - label="Event", + label="listen_name", + ), + RowElement( + name="listen_row", + type="row", + label="event_input", elements=[ LineElement( - name="event_name", + name="event_id", type="line", - label="Event", + label="event_id", placeholder="Event identifier", ) ], ), RowElement( - name="condition_row", + name="listen_row", type="row", - label="Condition", + label="condition_input", + link_port=LinkPort(id=0, label="Then"), elements=[ AreaElement( - name="condition", + name="listen_condition", type="area", - label="Condition", + label="listen_condition", placeholder="If P([condition(i), [AND, OR]]) == true", ) ], ), - RowElement( - name="then_row", - type="row", - label="Then", - link_port=LinkPort(id="then_output", label="Then"), - ), ] ) diff --git a/model_nodes/node_set_models.py b/model_nodes/node_set_models.py index 8ffccde..b6baa59 100644 --- a/model_nodes/node_set_models.py +++ b/model_nodes/node_set_models.py @@ -41,22 +41,14 @@ class SetNodeCoreSchema(BaseModel): SET_FORM_DESCRIPTOR = FormDescriptor( elements=[ RowElement( - name="variable_row", + name="set_row_label", type="row", - label="Parameter name", - elements=[ - LineElement( - name="variable", - type="line", - label="Parameter name", - placeholder="Enter parameter name", - ) - ], + label="set_row_name", ), RowElement( name="value_row", type="row", - label="Value", + label="set_value", elements=[ AreaElement( name="value", @@ -65,13 +57,7 @@ SET_FORM_DESCRIPTOR = FormDescriptor( placeholder="Enter value", ) ], - ), - RowElement( - name="link_row", - type="row", - label="Link", - link_port=LinkPort(id="then_output", label="then"), - elements=[], + link_port=LinkPort(id=0, label="then"), ), ] ) diff --git a/nodes/vork_node_callback.py b/nodes/vork_node_callback.py index 5ca1f9e..fa532c2 100644 --- a/nodes/vork_node_callback.py +++ b/nodes/vork_node_callback.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_callback_models import ( CallbackNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_callback_models import ( class VorkNodeCallback(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла callback """ @@ -22,7 +22,7 @@ class VorkNodeCallback(VorkNode): return "CALLBACK" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Callback """ diff --git a/nodes/vork_node_each.py b/nodes/vork_node_each.py index 88dc669..0befce9 100644 --- a/nodes/vork_node_each.py +++ b/nodes/vork_node_each.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_each_models import ( EachNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_each_models import ( class VorkNodeEach(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла each """ @@ -22,7 +22,7 @@ class VorkNodeEach(VorkNode): return "EACH" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Each """ diff --git a/nodes/vork_node_if.py b/nodes/vork_node_if.py index 976dc7f..b1288fc 100644 --- a/nodes/vork_node_if.py +++ b/nodes/vork_node_if.py @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any from core import VorkNode from model_nodes.node_if_models import ( IfNodeData, @@ -16,7 +16,7 @@ class VorkNodeIf(VorkNode): return "IF" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла IF """ diff --git a/nodes/vork_node_listen.py b/nodes/vork_node_listen.py index 4dbce87..099c04a 100644 --- a/nodes/vork_node_listen.py +++ b/nodes/vork_node_listen.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_listen_models import ( ListenNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_listen_models import ( class VorkNodeListen(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла listen """ @@ -22,7 +22,7 @@ class VorkNodeListen(VorkNode): return "LISTEN" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Listen """ diff --git a/nodes/vork_node_run.py b/nodes/vork_node_run.py index b11f19d..2ceab3c 100644 --- a/nodes/vork_node_run.py +++ b/nodes/vork_node_run.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_run_models import ( RunNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_run_models import ( class VorkNodeRun(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла run """ @@ -22,7 +22,7 @@ class VorkNodeRun(VorkNode): return "RUN" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Run """ diff --git a/nodes/vork_node_set.py b/nodes/vork_node_set.py index b6e70f7..2d266fa 100644 --- a/nodes/vork_node_set.py +++ b/nodes/vork_node_set.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_set_models import ( SetNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_set_models import ( class VorkNodeSet(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла set """ @@ -22,7 +22,7 @@ class VorkNodeSet(VorkNode): return "SET" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Set """ diff --git a/nodes/vork_node_switch.py b/nodes/vork_node_switch.py index 5200be7..2ee2797 100644 --- a/nodes/vork_node_switch.py +++ b/nodes/vork_node_switch.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_switch_models import ( SwitchNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_switch_models import ( class VorkNodeSwitch(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла switch """ @@ -22,7 +22,7 @@ class VorkNodeSwitch(VorkNode): return "SWITCH" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Switch """ diff --git a/nodes/vork_node_trigger.py b/nodes/vork_node_trigger.py index 581c72b..618d7d4 100644 --- a/nodes/vork_node_trigger.py +++ b/nodes/vork_node_trigger.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_trigger_models import ( TriggerNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_trigger_models import ( class VorkNodeTrigger(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла trigger """ @@ -22,7 +22,7 @@ class VorkNodeTrigger(VorkNode): return "TRIGGER" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Trigger """ diff --git a/nodes/vork_node_wait.py b/nodes/vork_node_wait.py index 404fe63..e0b3eb8 100644 --- a/nodes/vork_node_wait.py +++ b/nodes/vork_node_wait.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_wait_models import ( WaitNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_wait_models import ( class VorkNodeWait(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла wait """ @@ -22,7 +22,7 @@ class VorkNodeWait(VorkNode): return "WAIT" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла Wait """ diff --git a/nodes/vork_node_while.py b/nodes/vork_node_while.py index b015a99..d132b8a 100644 --- a/nodes/vork_node_while.py +++ b/nodes/vork_node_while.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from core import VorkNode from model_nodes.node_while_models import ( WhileNodeData, @@ -11,7 +11,7 @@ from model_nodes.node_while_models import ( class VorkNodeWhile(VorkNode): - def __init__(self, data: Dict[str, Any], links: Dict[str, Any] = None): + def __init__(self, data: dict[str, Any], links: dict[str, Any] = None): """ Инициализация узла while """ @@ -22,7 +22,7 @@ class VorkNodeWhile(VorkNode): return "WHILE" @classmethod - def form(cls) -> Dict[str, Any]: + def form(cls) -> dict[str, Any]: """ Возвращает статический дескриптор формы для узла While """ diff --git a/orm/schemas/process/node_link.py b/orm/schemas/process/node_link.py index 75c01dd..9ad1c93 100644 --- a/orm/schemas/process/node_link.py +++ b/orm/schemas/process/node_link.py @@ -1,5 +1,5 @@ from pydantic import Field -from typing import Dict, Any +from typing import Any from datetime import datetime from enum import Enum @@ -12,7 +12,7 @@ class NodeLink(Base): link_name: str = Field(..., max_length=20) node_id: int next_node_id: int - settings: Dict[str, Any] + settings: dict[str, Any] creator_id: int created_at: datetime status: NodeLinkStatus diff --git a/orm/schemas/process/process_schema.py b/orm/schemas/process/process_schema.py index 2b4ceb4..2c4a8cc 100644 --- a/orm/schemas/process/process_schema.py +++ b/orm/schemas/process/process_schema.py @@ -1,5 +1,5 @@ from pydantic import Field -from typing import Dict, Any +from typing import Any from datetime import datetime from enum import Enum @@ -15,5 +15,5 @@ class ProcessSchema(Base): owner_id: int creator_id: int created_at: datetime - settings: Dict[str, Any] + settings: dict[str, Any] status: ProcessStatus diff --git a/orm/schemas/process/process_version_archive.py b/orm/schemas/process/process_version_archive.py index 2c4c158..243d26c 100644 --- a/orm/schemas/process/process_version_archive.py +++ b/orm/schemas/process/process_version_archive.py @@ -1,4 +1,4 @@ -from typing import Dict, Any +from typing import Any from datetime import datetime from orm.schemas.base import Base @@ -7,7 +7,7 @@ from orm.schemas.base import Base class ProcessStatusSchema(Base): id: int version: int - snapshot: Dict[str, Any] + snapshot: dict[str, Any] owner_id: int created_at: datetime is_last: int diff --git a/orm/schemas/process/ps_node.py b/orm/schemas/process/ps_node.py index e38577a..4d47d3b 100644 --- a/orm/schemas/process/ps_node.py +++ b/orm/schemas/process/ps_node.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import Dict, Any +from typing import Any from enum import Enum from orm.schemas.base import Base @@ -11,6 +11,6 @@ class Ps_Node(Base): ps_id: int node_type: NodeType settings: dict - creator_id: Dict[str, Any] + creator_id: dict[str, Any] created_at: datetime status: NodeStatus -- 2.39.5 From 5aa14f5ae8b6f9253710f8800fe4b189ac7468d0 Mon Sep 17 00:00:00 2001 From: TheNoxium Date: Mon, 24 Nov 2025 04:32:42 +0700 Subject: [PATCH 4/5] fix: descriptor port --- model_nodes/node_callback_models.py | 2 +- model_nodes/node_each_models.py | 4 ++-- model_nodes/node_run_models.py | 2 +- model_nodes/node_switch_models.py | 4 ++-- model_nodes/node_trigger_models.py | 2 +- model_nodes/node_wait_models.py | 2 +- model_nodes/node_while_models.py | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/model_nodes/node_callback_models.py b/model_nodes/node_callback_models.py index 5bdfc01..792b6e2 100644 --- a/model_nodes/node_callback_models.py +++ b/model_nodes/node_callback_models.py @@ -110,7 +110,7 @@ CALLBACK_FORM_DESCRIPTOR = FormDescriptor( name="then_row", type="row", label="Then", - link_port=LinkPort(id="then_output", label="Then"), + link_port=LinkPort(id=0, label="Then"), ), ] ) diff --git a/model_nodes/node_each_models.py b/model_nodes/node_each_models.py index 24c4fa8..bc48537 100644 --- a/model_nodes/node_each_models.py +++ b/model_nodes/node_each_models.py @@ -43,7 +43,7 @@ EACH_FORM_DESCRIPTOR = FormDescriptor( name="list_row", type="row", label="List", - link_port=LinkPort(id="then_output", label="Then"), + link_port=LinkPort(id=0, label="Then"), elements=[ LineElement( name="list", @@ -57,7 +57,7 @@ EACH_FORM_DESCRIPTOR = FormDescriptor( name="else_row", type="row", label="Alternative path", - link_port=LinkPort(id="else_output", label="Else"), + link_port=LinkPort(id=1, label="Else"), ), ] ) diff --git a/model_nodes/node_run_models.py b/model_nodes/node_run_models.py index 221e167..6c9b655 100644 --- a/model_nodes/node_run_models.py +++ b/model_nodes/node_run_models.py @@ -71,7 +71,7 @@ RUN_FORM_DESCRIPTOR = FormDescriptor( name="then_row", type="row", label="Then", - link_port=LinkPort(id="then_output", label="Then"), + link_port=LinkPort(id=0, label="Then"), ), ] ) diff --git a/model_nodes/node_switch_models.py b/model_nodes/node_switch_models.py index 9a6f2cb..e28e43a 100644 --- a/model_nodes/node_switch_models.py +++ b/model_nodes/node_switch_models.py @@ -44,7 +44,7 @@ SWITCH_FORM_DESCRIPTOR = FormDescriptor( name="switch_row", type="row", label="Switch condition", - link_port=LinkPort(id="case_1_output", label="case_1", is_addable=True), + link_port=LinkPort(id=0, label="case_1", is_addable=True), elements=[ AreaElement( name="switch_value", @@ -58,7 +58,7 @@ SWITCH_FORM_DESCRIPTOR = FormDescriptor( name="default_row", type="row", label="Default", - link_port=LinkPort(id="default_output", label="default"), + link_port=LinkPort(id=0, label="default"), ), ] ) diff --git a/model_nodes/node_trigger_models.py b/model_nodes/node_trigger_models.py index edde11e..d3a4fec 100644 --- a/model_nodes/node_trigger_models.py +++ b/model_nodes/node_trigger_models.py @@ -70,7 +70,7 @@ TRIGGER_FORM_DESCRIPTOR = FormDescriptor( name="then_row", type="row", label="Then", - link_port=LinkPort(id="then_output", label="Then"), + link_port=LinkPort(id=0, label="Then"), ), ] ) diff --git a/model_nodes/node_wait_models.py b/model_nodes/node_wait_models.py index 7ae5b4c..1759df5 100644 --- a/model_nodes/node_wait_models.py +++ b/model_nodes/node_wait_models.py @@ -84,7 +84,7 @@ WAIT_FORM_DESCRIPTOR = FormDescriptor( name="then_row", type="row", label="Transition", - link_port=LinkPort(id="then_output", label="then"), + link_port=LinkPort(id=0, label="then"), ), ] ) diff --git a/model_nodes/node_while_models.py b/model_nodes/node_while_models.py index 8d94c48..c41d2c5 100644 --- a/model_nodes/node_while_models.py +++ b/model_nodes/node_while_models.py @@ -44,7 +44,7 @@ WHILE_FORM_DESCRIPTOR = FormDescriptor( name="condition_row", type="row", label="Parameter", - link_port=LinkPort(id="then_output", label="Then"), + link_port=LinkPort(id=0, label="Then"), elements=[ AreaElement( name="condition", @@ -58,7 +58,7 @@ WHILE_FORM_DESCRIPTOR = FormDescriptor( name="else_row", type="row", label="Alternative path", - link_port=LinkPort(id="else_output", label="Else"), + link_port=LinkPort(id=0, label="Else"), ), ] ) -- 2.39.5 From b28d40adaffc311e02158f34c3b17f788d9f5327 Mon Sep 17 00:00:00 2001 From: TheNoxium Date: Mon, 24 Nov 2025 04:39:38 +0700 Subject: [PATCH 5/5] fix: value --- model_nodes/form_base_descriptor_models.py | 47 ++++++++++++---------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/model_nodes/form_base_descriptor_models.py b/model_nodes/form_base_descriptor_models.py index 82af7fe..67223d2 100644 --- a/model_nodes/form_base_descriptor_models.py +++ b/model_nodes/form_base_descriptor_models.py @@ -3,66 +3,71 @@ from typing import Optional, Annotated, Literal, Any from pydantic import BaseModel, Field +from pydantic import BaseModel, Field +from typing import Literal, Annotated, Union + + class LinkPort(BaseModel): id: int label: str - is_addable: Optional[bool] = None + is_addable: bool | None = None class LineElement(BaseModel): - type: Literal['line'] + type: Literal['line'] = 'line' name: str label: str - placeholder: Optional[str] = None - value: str = None + placeholder: str | None = None + value: str | None = None class AreaElement(BaseModel): - type: Literal['area'] + type: Literal['area'] = 'area' name: str label: str - placeholder: Optional[str] = None - value: str = None + placeholder: str | None = None + value: str | None = None class SelectElement(BaseModel): - type: Literal['select'] + type: Literal['select'] = 'select' name: str label: str data: list[str] - default: Optional[str] = None - placeholder: Optional[str] = None - value: Optional[Any] = None + default: str | None = None + placeholder: str | None = None + value: str | None = None class NumberElement(BaseModel): - type: Literal['number'] + type: Literal['number'] = 'number' name: str label: str - placeholder: Optional[str] = None - value: int | float + placeholder: str | None = None + value: int | float | None = None class DateElement(BaseModel): - type: Literal['date'] + type: Literal['date'] = 'date' name: str label: str - placeholder: Optional[str] = None - value: str = None + placeholder: str | None = None + value: str | None = None + FieldElement = Annotated[ LineElement | AreaElement | SelectElement | NumberElement | DateElement, - Field(discriminator='type'), + Field(discriminator='type') ] class RowElement(BaseModel): - type: Literal['row'] + type: Literal['row'] = 'row' name: str label: str - link_port: Optional[LinkPort] = None - elements: Optional[list[FieldElement]] = None + link_port: LinkPort | None = None + elements: list[FieldElement] | None = None class FormDescriptor(BaseModel): -- 2.39.5