Проблемы:
1. Подбор программой возвращал 193 из 227 угроз (весь перечень) —
теперь скоринг по ключевым словам объекта (тип, интернет, нарушитель,
сеть), отсев нерелевантных: 72-82 угрозы вместо 193
2. Сравнение программа↔ИИ не подсвечивало совпадения: ИИ возвращает
«1. УБИ.001 …» / с лишними пробелами — сравнение шло по точной строке.
Теперь ключ сравнения — код УБИ (regex), иначе нормализованный текст;
добавлена статистика «Совпало / только программа / только ИИ»
- threat_rules: по умолчанию актуальны ВСЕ угрозы БДУ ФСТЭК, исключаются
заведомо неактуальные: нет интернета → убраны удалённый доступ/веб/почта/
беспроводные/DDoS/облачные/грид; АСУ → убраны BIOS/грид/виртуализация/браузер
(теперь 170-200 угроз на объект вместо 15 «самых похожих»)
- _has_internet уточнён: «Отсутствует» у оператора / «изолирован» / «не требуется»
→ внешней сети нет; сеть общего пользования или реальный оператор → есть
- verify.suggest_threats_ai: свежий перечень ФСТЭК (227 угроз) передаётся в промт,
ИИ выбирает из него, а не из устаревших знаний; + человекочитаемая сводка объекта
- ui: кнопки программа/ИИ без лимита 20; после подбора угрозы сохраняются в модель
(_collect_is) — при открытии словаря галочки выбранных угроз стоят
- models.from_dict: фильтрация неизвестных полей вложенных объектов — старые файлы
с удалёнными полями (attacker_characteristics) больше не падают