У меня есть структура dict, которая выглядит следующим образом:
{
"condition": "AND",
"rules": [
{
"id": "monitor_category",
"field": "monitor_category",
"type": "string",
"input": "select",
"operator": "equal",
"value": "Competition",
"decision": True
},
{
"id": "monitor_tag",
"field": "monitor_tag",
"type": "string",
"input": "text",
"operator": "equal",
"value": "PassiveTotal",
"decision": True
},
{
"condition": "OR",
"rules": [
{
"id": "article_tag",
"field": "article_tag",
"type": "string",
"input": "text",
"operator": "contains",
"value": "Attack",
"decision": False
},
{
"id": "article_tag",
"field": "article_tag",
"type": "string",
"input": "text",
"operator": "contains",
"value": "Hunt",
"decision": True
},
{
"id": "article_tag",
"field": "article_tag",
"type": "string",
"input": "text",
"operator": "contains",
"value": "Threat",
"decision": False
}
]
},
{
"id": "monitor_tag",
"field": "monitor_tag",
"type": "string",
"input": "text",
"operator": "equal",
"value": "Analysis",
"decision": False
}
]
}
Для каждого правила я получаю решение и присоединяю его к правилу политики.Я делаю это с помощью простой рекурсивной прогулки по диктату.В приведенном выше примере политики логическая логика соответствует следующему:
(True and True and (False or True or False) and False)
Я хотел бы иметь функцию, которая принимает эту политику и способна вывести логическую логику для возврата окончательнойоценка.Я знаю, что в данном случае подход, основанный на поиске глубины, может быть направлением, но я борюсь с тем, как сохранить логическое состояние и узнать, на каком уровне я нахожусь в структуре.