Новая кнопка «⚡ Автозаполнить» в панели действий — заполняет пустые поля
логически, без выдумок:
- категория нарушителя: есть интернет → внешний, нет → внутренний
- уровень возможностей: Н1 (внутренний) / Н2 (внешний)
- виды нарушителей: по категории из словаря attacker_types.json
- угрозы: подбор программой (скоринг по характеристикам объекта)
- инциденты: выводятся из подобранных угроз по ключевым словам
- орг. меры: базовый набор (контролируемая зона, доступ, документы,
ответственные, обучение, инциденты, перечень лиц)
- тех. меры: базовые + доп. по средствам защиты объекта (СЗИ:
межсетевой экран → МЭ, антивирус, СОВ, СКЗИ, виртуализация)
Незаполненное пользователем не перезаписывает.
Проблемы:
1. Подбор программой возвращал 193 из 227 угроз (весь перечень) —
теперь скоринг по ключевым словам объекта (тип, интернет, нарушитель,
сеть), отсев нерелевантных: 72-82 угрозы вместо 193
2. Сравнение программа↔ИИ не подсвечивало совпадения: ИИ возвращает
«1. УБИ.001 …» / с лишними пробелами — сравнение шло по точной строке.
Теперь ключ сравнения — код УБИ (regex), иначе нормализованный текст;
добавлена статистика «Совпало / только программа / только ИИ»
Причина: результат писался только в панель «Проверка данных» на вкладке
«Организация», а пользователь смотрит вкладку «Безопасность» — замечания
были не видны. Теперь после ответа ИИ открывается отдельное окно
«🤖 Проверка безопасности — результат ИИ» с оценкой, замечаниями
и предложениями.
- dictionaries/criteria_applicability.json: для каждой сферы перечень применимых
показателей ПП РФ № 127, построен из признаков значимости Распоряжения ПРФ
№ 360-р (например: ОПК → только 13 оборонзаказ, показатель 1 «ущерб жизни
и здоровью» не применим; банки → только 10; связь → только 4)
- окно ПП 127: неприменимые для сферы показатели блокируются и помечаются
серым «(не применим для сферы)», исключаются из расчёта категории;
если применимых показателей для сферы нет — категория «без категории»
- dictionaries/typical_industry_objects.json: 392 типовых отраслевых объекта
по 14 сферам (здравоохранение 12, наука 9, транспорт 62, связь 12,
энергетика 12, регистрация прав 1, банки 20, ТЭК 11, атомная 16,
оборонная 39, ракетно-космическая 72, горнодобывающая 38,
металлургическая 53, химическая 35), с процессами и ОКВЭД
- ui.py: логика привязки — при выборе сферы объекта КИИ список типовых
отраслевых объектов заполняется из словаря этой сферы (360-р),
иначе — общий словарь typical_objects.json
- _on_sphere_changed/_update_typical_objects_by_sphere; вызов при загрузке объекта
- dictionaries/fstek_offices.json: 7 управлений ФСТЭК по федеральным округам
с адресами (из официальных реестров) и списками городов/регионов:
ЦФО (Москва, Севастопольский пр-т 56/40), СЗФО (СПб, Исаакиевская пл. 11),
ЮФО+СКФО (Ростов-на-Дону, ул. Ярослава Галана 1Е/25), ПФО (Н.Новгород,
пр-т Гагарина 60 к11), УрФО (Екатеринбург, ул. Гагарина 28Б), СФО
(Новосибирск, Красный пр-т 41), ДФО (Хабаровск, ул. Ленина 37)
- variables.py: _find_fstek_office(address) — определяет управление по городу/
региону из адреса организации (с нормализацией сокращений обл./респ./г.о.)
- новые переменные: {{fstek_recipient_address}} (адрес управления для отправки),
{{fstek_district}} (наименование управления)
- логика: адрес организации → управление ФСТЭК → адрес подставляется в документ
- criteria_127.json переписан точно по Постановлению Правительства РФ
от 08.02.2019 № 127 (приложение): 5 критериев (социальная, политическая,
экономическая, экологическая, значимость для обороны страны), 30 показателей
(1-14 с подпунктами а/б/в/г), значения сразу привязаны к категориям III/II/I
- окно 980x700 со скроллом: у каждого показателя выбор значения из документа
(«III категория: …», «II категория: …», «I категория: …»)
- категория значимости по наивысшей выбранной: I→1-я, II→2-я, III→3-я, иначе без категории
- обоснование: автогенерация текста с перечнем выбранных показателей,
если поле пустое; кнопки «Рассчитать категорию» и «Сохранить»
- категория сразу подставляется в поле категории значимости объекта
- модели: Company.profit (сумма прибыли), Company.profit_tax (налог с прибыли),
InformationSystem.balance_value (балансовая стоимость объекта КИИ)
- импорт из опросника: «Сумма прибыли за предыдущий год» и «Сумма налога с прибыли»
(Общие сведения) → profit/profitTax; «Балансовая стоимость объекта КИИ в рублях»
(каждый ОБЪЕКТ-лист) → balanceValue, больше не падает в описание
- UI: блок «Финансовые показатели» во вкладке «Организация»; поле
«Балансовая стоимость (руб.)» в объекте КИИ; маппинги collect/select/copy/import
- генератор: {{company_profit}}, {{company_profit_tax}}, {{item.balance_value}}
- в окнах выбора из словаря инцидентов, угроз, критериев, мер,
пользователей, СЗИ и ОКВЭД кнопка больше не показывается
- параметр allow_refine: включается только у hw_sw/os_sw/app_sw
(там «уточнить модель» и количество действительно нужны)
- threat_rules: по умолчанию актуальны ВСЕ угрозы БДУ ФСТЭК, исключаются
заведомо неактуальные: нет интернета → убраны удалённый доступ/веб/почта/
беспроводные/DDoS/облачные/грид; АСУ → убраны BIOS/грид/виртуализация/браузер
(теперь 170-200 угроз на объект вместо 15 «самых похожих»)
- _has_internet уточнён: «Отсутствует» у оператора / «изолирован» / «не требуется»
→ внешней сети нет; сеть общего пользования или реальный оператор → есть
- verify.suggest_threats_ai: свежий перечень ФСТЭК (227 угроз) передаётся в промт,
ИИ выбирает из него, а не из устаревших знаний; + человекочитаемая сводка объекта
- ui: кнопки программа/ИИ без лимита 20; после подбора угрозы сохраняются в модель
(_collect_is) — при открытии словаря галочки выбранных угроз стоят
- models.from_dict: фильтрация неизвестных полей вложенных объектов — старые файлы
с удалёнными полями (attacker_characteristics) больше не падают
- _sec_row: новый параметр allow_add — ручное добавление показывается
даже при наличии словаря
- орг. и тех. меры: allow_add=True (может пригодиться), остальные словарные
списки (угрозы, инциденты, критерии) — по-прежнему только из словаря
- убрано из вкладки «Безопасность» (UI), модели InformationSystem,
маппингов _collect_is/_on_is_select, _copy_is, _apply_imported_data,
variables.py и данных для ИИ-проверки
- «Категория нарушителя» остаётся (из варианта 3 Кости)
- кнопка «📋 Заполнить по таблице ПП № 127» в вкладке «Безопасность»
- окно 860x640 со скроллом: 5 критериев (социальная, политическая,
экономическая, экологическая, оборонная), 12 показателей,
у каждого выбор значения 1-4 с описанием шкалы
- объединены показатели и обоснование в одном окне (общее поле)
- «🧮 Рассчитать категорию»: по максимальному баллу → 1/2/3/без категории
(4→1-я, 3→2-я, 2→3-я), результат пишется в категорию значимости объекта
- «💾 Сохранить»: заполняет список показателей и обоснование
- словарь criteria_127.json (формулировки можно править файлом)
- если в ячейке ФИО несколько человек (через запятую/точку с запятой/
перевод строки или просто подряд) — остаётся первое полное ФИО
- применяется к должностным лицам (chief/ответственный/админ),
комиссии и сотрудникам при импорте из опросника
- то же при открытии сохранённого файла (from_dict):
«Коростелев Павел Сергеевич Хрящев Сергей Владимирович …» → «Коростелев Павел Сергеевич»
- кнопка «✏️ Уточнить модель/кол-во» теперь всегда в окне выбора из словаря
- для позиций без маркера (Windows 10 Pro и т.п.) запрашивает количество:
вводишь 5 → «Windows 10 Pro 5 шт.»
- для позиций с «(уточнить …)» вычищает маркер из названия и дописывает модель + количество
- формат: «Позиция Модель N шт.» (без запятой)
- если в словаре есть позиции с «(уточнить …)» — в окне выбора появляется кнопка
- отмечаешь галочкой, например «Сервер (уточнить модель)» — жмёшь кнопку,
программа запрашивает модель/версию/конфигурацию и количество
- в список добавляется полная строка: «Сервер Supermicro SSG-2027R -E1R24N, 2 шт.»
- работает для всех словарей: ПО (hw_sw, os_sw, app_sw), СЗИ и т.д.
- объекты КИИ: добавлены варианты во мн.ч. в словари типов объекта
(Автоматизированные системы управления, Информационно-телекоммуникационные сети)
и способов взаимодействия (Проводной, Без проводной) — как в старом опроснике
- employees_access: фильтр плейсхолдеров («Формат: Фамилия Имя Отчество»,
«Пример: …») и пустых строк при загрузке файла (from_dict) и при импорте опросника
- словари: hw_sw.json, os_sw.json, app_sw.json
- кнопка «📚 Из словаря» у каждого списка ПО (мультивыбор)
- большое окно добавления/редактирования позиции (560x220, многострочное)
3 списка: ПО и аппаратные средства, Операционные системы, Прикладные программы.
У каждого кнопки «+ Добавить», «- Удалить», «✏️ Редактировать».
Данные хранятся построчно (\n), импорт и генератор сохраняют переносы.
- hw_sw/os_sw/app_sw теперь tk.Text с прокруткой вместо однострочного Entry
- импортёр сохраняет переносы строк (_clean_multiline), а не схлопывает в одну строку
- _collect_is/_on_is_select поддержка Text-виджетов
- importer: фильтр HINT_MARKERS — значения вида «Формулировка должна строиться...», «Например...», «Выберите из...» и т.п. не импортируются в поля объекта
- ui: все Combobox (сфера, тип, архитектура, типовой объект, категория/цель/способ сети) — state='readonly', нельзя редактировать вручную
Проблема: clean_value заменял переносы строк на пробелы, из-за чего
список программ в одной ячейке (каждая с новой строки) склеивался
в одну строку. Теперь сырые значения ячеек сохраняются (raw_rows),
разбивка по \n/;/, названия не режутся (KES ≠ KSC).
- вкладка «Сеть»: категория сети (словарик), провайдер, цель взаимодействия (словарик), способ взаимодействия (словарик), ЛВС/Интернет
- вкладка «ПО»: ПО и аппаратные средства, ОС, прикладные программы
- словари: net_categories.json, net_purposes.json, net_methods.json
- вкладка безопасности переименована в «Безопасность»
- Наименование организации, эксплуатирующей объект
- Адрес местонахождения
- Элемент (компонент) объекта, который эксплуатируется лицом
- ИНН лица, эксплуатирующего объект
- КПП его обособленных подразделений
Убраны лишние поля субъекта (руководитель, отв. за безопасность, подразделение, телефон, email), модель/UI/импорт/variables приведены в соответствие
- ОКВЭД: resolve_okved (словарь okved.json + DaData suggest okved2), применяется при импорте и DaData; галочки «ОКВЭД осн./доп.» в «что применять»
- DaData: показ и подстановка доп. ОКВЭД
- доменное имя: поле во вкладке «Организация» + импорт
- вкладка «Объекты КИИ»: сверху Наименование/Описание/Категория, остальное вкладками: Основное (назначение, сфера, тип, архитектура, типовой отраслевой объект — со словариками и выпадающими списками), Субъект, Сети и ПО, Безопасность (236), СЗИ, Пользователи ОКИИ
- новые словари: spheres.json, object_types.json, architectures.json, typical_objects.json
- адрес объекта — в отдельное поле (не в описание)
- СЗИ: разбивка слипшихся названий (Kaspersky...)
- ОКВЭД: починен импорт (split по запятым/точкам с запятой), добавлен okvedExtra и domainName в DEFAULT_SETTINGS + merge полей по var в load_settings (старый import_settings.json теперь дополняется)
- DaData: проверка и подстановка основного/доп. ОКВЭД
- Вкладка «Организация»: поле «Доменное имя и внешний IP» + импорт из опросника
- Вкладка «Объекты КИИ»: поля 236 приказа — сведения (назначение, сфера, тип, архитектура, типовой отраслевой объект), субъект (12 полей), сети и ПО (категория сети, оператор, цель/способ взаимодействия, ПО/аппаратные средства, ОС, прикладные), безопасность (нарушитель, угрозы, инциденты, показатели критериев, обоснование, орг./тех. меры)
- importer: распознавание полей 236 из опросника, variables: новые переменные шаблонов