diff --git a/dokogen/ui.py b/dokogen/ui.py index afe60b4..b1cb1fc 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -3085,6 +3085,38 @@ class DokoGenApp: self._add_employee_row(pos, fio) self._update_emp_count() + # ⚡ Автозаполнение безопасности по каждому объекту (логика программы). + # После импорта опросника программа сама заполняет всё, что можно вывести + # логически; остальное оператор добивает вручную. + try: + from .threat_rules import auto_fill_security, load_threats + _threats_full = load_threats() + _filled_any = 0 + for _isys in self.model.information_systems: + _fill = auto_fill_security(_isys, threats=_threats_full) + if _fill.get('attacker_category'): + _isys.attacker_category = _fill['attacker_category'] + if _fill.get('attacker_level'): + _isys.attacker_level = _fill['attacker_level'] + if _fill.get('attacker_types'): + _isys.attacker_types = _fill['attacker_types'] + if _fill.get('threats'): + _isys.threats = _fill['threats'] + if _fill.get('incidents'): + _isys.incidents = _fill['incidents'] + if _fill.get('org_measures'): + _isys.org_measures = _fill['org_measures'] + if _fill.get('tech_measures'): + _isys.tech_measures = _fill['tech_measures'] + if _fill: + _filled_any += 1 + if _filled_any: + self.log(f"⚡ Автозаполнение безопасности: обработано объектов: {_filled_any}") + # Обновляем форму выбранного объекта, если он есть + self._on_is_select() + except Exception as _e: + self.log(f"⚠ Автозаполнение безопасности: {_e}") + self.log("✅ Импорт применён") self.root.after(0, _apply)