i_condition_node.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # coding=utf-8
  2. """
  3. @project: maxkb
  4. @Author:虎
  5. @file: i_condition_node.py
  6. @date:2024/6/7 9:54
  7. @desc:
  8. """
  9. from typing import Type
  10. from django.utils.translation import gettext_lazy as _
  11. from rest_framework import serializers
  12. from application.flow.common import WorkflowMode
  13. from application.flow.i_step_node import INode
  14. class ConditionSerializer(serializers.Serializer):
  15. compare = serializers.CharField(required=True, label=_("Comparator"))
  16. value = serializers.CharField(required=True, label=_("value"))
  17. field = serializers.ListField(required=True, label=_("Fields"))
  18. class ConditionBranchSerializer(serializers.Serializer):
  19. id = serializers.CharField(required=True, label=_("Branch id"))
  20. type = serializers.CharField(required=True, label=_("Branch Type"))
  21. condition = serializers.CharField(required=True, label=_("Condition or|and"))
  22. conditions = ConditionSerializer(many=True)
  23. class ConditionNodeParamsSerializer(serializers.Serializer):
  24. branch = ConditionBranchSerializer(many=True)
  25. class IConditionNode(INode):
  26. def get_node_params_serializer_class(self) -> Type[serializers.Serializer]:
  27. return ConditionNodeParamsSerializer
  28. type = 'condition-node'
  29. support = [WorkflowMode.APPLICATION, WorkflowMode.APPLICATION_LOOP, WorkflowMode.KNOWLEDGE,
  30. WorkflowMode.KNOWLEDGE_LOOP, WorkflowMode.TOOL, WorkflowMode.TOOL_LOOP]