feat: автозаполнение безопасности автоматически после импорта опросника
После импорта данных (опросник/JSON) программа сама прогоняет логику
по каждому объекту КИИ: нарушитель (по интернету), уровень Н1/Н2,
виды нарушителей, угрозы (скоринг), инциденты (из угроз),
орг./тех. меры (базовые + по СЗИ объекта). Оператор добивает
остальное вручную. Лог: «⚡ Автозаполнение безопасности».
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user