import os import json from modules.database import add_rule_to_db try: from modules.knowledge_base import save_rule except ImportError: try: from modules.knowledge_base import add_rule as save_rule except ImportError: save_rule = None def review_ai_decisions(report_text, suspicious_cases): """ Интерактивный консольный модуль обучения (Human-in-the-Loop). Запрашивает подтверждение оператора ТОЛЬКО по нетипичным/сложным случаям. """ if not suspicious_cases: print("\n[✓] Все аномалии валидированы автоматически. Спорных вопросов для оператора нет.") return print("\n" + "=" * 60) print("РЕЖИМ ОБУЧЕНИЯ И ПРОВЕРКИ РЕШЕНИЙ ИИ (HUMAN-IN-THE-LOOP)") print("=" * 60) for idx, case in enumerate(suspicious_cases, 1): fio_target = case.get('fio_target', 'Неизвестно') reason = case.get('reason', 'Нет описания') print(f"\n[?] Спорный случай {idx}/{len(suspicious_cases)}: {fio_target}") print(f" Детали: {reason}") user_input = input("Подтверждаете аномалию? (д / да / н / нет / или введите текст правила): ").strip() user_input_clean = user_input.lower() # Расширенный список вариантов "ДА" if user_input_clean in ['д', 'да', 'da', 'yes', 'y', 'ок', 'ага', '+']: print(" [✓] Решение подтверждено оператором.") elif user_input_clean in ['н', 'нет', 'no', 'n', '-']: print(" [ℹ️] Решение отклонено оператором.") elif user_input: # Если оператор ввел действительно новое текстовое правило new_rule = f"Правило по {fio_target}: {user_input}" add_rule_to_db(new_rule, added_by="Human_Admin") if save_rule: try: save_rule(new_rule) except Exception: pass print(f" [✓] Новое правило записано в Базу Знаний: {new_rule}") else: print(" [ℹ️] Запись пропущена.") print("\n[✓] ЭТАП ОБУЧЕНИЯ ЗАВЕРШЕН.")