Commit Graph
88 Commits
Author SHA1 Message Date
LocoAgent a8fa3f908c fix: угрозы — фильтр по словарю УБИ для всего от ИИ (мусор отбрасывается, УБИ.069 дополняется названием), «Подобрать угрозы» — окно с галочками (синий — программа, красный — ИИ, зелёный — совпало), «Проверить через ИИ» — вердикт + точечное применение по словарю, возвращена кнопка «Загрузить угрозы ФСТЭК» 2026-08-05 11:03:28 +04:00
LocoAgent 033c21fccc опросник: замена на Опросный_лист_187_ФЗ.xlsx (5.25, листы Общие сведения/Сотрудники/ОБЪЕКТ №1), удалён старый 152-ФЗ 2026-08-05 10:46:47 +04:00
LocoAgent bf75d67f5e fix: доп. ОКВЭД из DaData (устойчивый парсинг + лог), сравнение угроз (шире окно, сортировка по УБИ), кнопка «Проверить через ИИ» (check_threats_ai), честные подсказки п.8/п.9, автозаполнение ΔДоходов из балансовой стоимости КИИ, диалог _ask_amount вместо askfloat (формат «121 118 270 руб»), формулировка Бусредн по документу ФСТЭК (трёхлетний период) 2026-08-05 10:41:31 +04:00
LocoAgent 5af23ae525 fix: аудит dokogen187 — критические и высокие замечания
- api_settings: убраны реальные API-ключи из кода (env/файл) — 1.1
- verify: промт ИИ для проверки реквизитов больше не ссылается на 187-ФЗ
  как на закон о ПДн («юрист по ПДн (187-ФЗ)» → специалист по реквизитам)
- ui: дата ПП РФ №127 исправлена 08.02.2019 → 08.02.2018 (3 места)
- help_docs: группа B переименована «187-ФЗ (персональные данные)» →
  «187-ФЗ (критическая информационная инфраструктура)»
- generator: убран дубль хвоста параграфа в _highlight_unmatched
- importer: «магия дат» (числа 10001-79999 → дата Excel) теперь только
  для полей-дат (as_date), финансовые поля не ломаются
- ui (_collect_is): убраны дубли пар маппинга attacker_level/attacker_types
- ui (импорт): убрано наследие 152-ФЗ ispdnPosition/ispdnFio из маппинга
- test_generator: переписан под модель 187-ФЗ (category/sphere/object_type
  вместо pd_count/threat_type/defence_level)
- criteria_justifications: п.9 для здравоохранения согласован с кодом
  (убран «критерий неприменим» — противоречие с «применим ко всем»)
- criteria_applicability: Транспорт (добавлены п.1, п.2; убран п.10),
  Банковская сфера (добавлены п.8, п.9) — требуется экспертная сверка
- ui: Бусредн вынесен в константу DEFAULT_BUDGET_AVG (данные Минфина,
  обновлять ежегодно); автозаполнение п.9 унифицировано с авторасчётом
  (ΔБ = ΔНП+ΔНДПИ+ΔДИВ+ΔВСО+ΔНС)
- ui: п.8 — предупреждение при неполных данных (менее 5 лет доходов)
- models: поля ndpi/div/vso/ns для п.9; комментарий income_loss уточнён
- .gitignore: api_settings.json/.env не попадают в git
2026-08-05 09:16:16 +04:00
prog1764 868e0065f3 fix: парсер чисел понимает формат опросника «121 118 270 руб» (авторасчёт 8/9 работал с пустыми данными); показатель 8 применим для организаций ОПК по сфере объекта 2026-08-05 02:01:45 +04:00
prog1764 5591dc2c5b docs: инструкции пользователя и администратора переписаны под 187-ФЗ (вкладки, ПП 127, ИИ-функции, словари, СЗИ, циклы) 2026-08-05 01:58:02 +04:00
prog1764 094f6c26e2 fix: подавлено предупреждение openpyxl про Data Validation при импорте (терминал чистый) 2026-08-05 01:40:35 +04:00
prog1764 88ab71dc14 fix: нормализация категории 1/2/3→I/II/III перед ИИ-проверкой (устраняет ложное противоречие с обоснованием); разбивка предложений ИИ по запятым/строкам при применении 2026-08-05 01:36:26 +04:00
prog1764 638e2446d5 feat: применение предложений ИИ по безопасности по галочкам (нарушитель/угрозы/инциденты/показатели/обоснование/меры) 2026-08-05 01:35:30 +04:00
prog1764 b3ae4c22cf feat: ИИ-проверка объекта по частям (временные файлы вход/выход по блокам) 2026-08-05 01:33:43 +04:00
prog1764 d376a28184 fix: окна авторасчёта/сравнения не обрезают текст; СЗИ перенесены в «Безопасность»; ИИ-рекомендации по СЗИ; ИИ-проверка категорий ПП 127; пояснения к полям 8/9; упрощение панели угроз 2026-08-05 01:31:13 +04:00
prog1764 fafeea4fcf fix: баг выбора категории (III выбиралась как I) + «Заполните…» не попадает в обоснование
- проверка категории через regex с границей слова: «Категория значимости: I»
  была подстрокой «…III», из-за чего III выбиралась как I
- если расчёт не удался (в result «Заполните…») — ничего не применяется
  и не пишется в обоснование
2026-08-05 00:54:10 +04:00
prog1764 5544941469 feat: вкладка «Безопасность» — вложенные подвкладки (нормальное отображение)
Вместо тесной двухколоночной раскладки — ряд подвкладок:
1) Основные данные — модель нарушителя (категория, уровень Н1-Н4, виды)
   + кнопки « Автозаполнить» и «🤖 Проверить безопасность через ИИ»
2) Угрозы — панель действий (⬇️ ФСТЭК / ⚙️ программа / 🤖 ИИ / ⚖️ сравнить)
   + большой список угроз на всю ширину
3) Инциденты и критерии — инциденты, показатели критериев,
   кнопка «📋 ПП № 127», обоснование
4) Орг. и тех. меры — оба списка с нормальной высотой

Все виджеты и маппинги сохранены (is_*_listbox/combo на месте)
2026-08-04 23:54:26 +04:00
prog1764 220b923e76 fix: окно расчёта показателей 8/9 — не уходит на задний план, ввод работает, кнопка на месте
Проблемы:
1. Окно уходило на задний план при сдвиге — не было grab_set/lift,
   родитель указывал на главное окно вместо диалога ПП 127
2. В показателе 8 не вводились данные — из-за потери фокуса
3. В показателе 9 кнопка «Рассчитать» не была видна — окно 720x560
   не вмещало все поля (прибыль/налог/ΔДоходов/бюджет/НДПИ/ДИВ/ВСО/НС +
   результат), кнопки уезжали за край

Исправлено:
- родитель окна — dialog (ПП 127), а не root
- w.transient(dialog) + w.lift() + w.grab_set() + w.focus_force()
- тело окна в Canvas + вертикальный Scrollbar (все поля доступны)
- кнопки «🧮 Рассчитать / ✔️ Применить / Отмена» вне скролла — всегда видны
- при закрытии — grab_release()
2026-08-04 23:50:25 +04:00
prog1764 e4e7bb444a feat: папка dictionaries/prompts — словари промтов для каждой ИИ-кнопки
- prompts/suggest_object_params.json: жёсткие правила подбора характеристик —
  выбирать ТОЛЬКО из предоставленных списков (сферы/типы/архитектуры/
  типовые объекты), ничего не выдумывать; назначение строго по форме
  «Объект предназначен для … с целью …»; типовой объект — дословно из 360-р
- prompts/suggest_threats.json, check_security.json, check_company.json,
  declension.json — промты для остальных ИИ-кнопок
- verify.py: _load_prompt() + подключение промтов в suggest_object_params_ai,
  suggest_threats_ai, check_security_ai; ИИ получает полные списки
  (spheres/object_types/architectures) и выбирает из них
- ui.py: окно рекомендаций ИИ — галочки у каждого поля, применяются
  только отмеченные (ИИ может ошибаться в архитектуре — оператор решает)
2026-08-04 23:32:58 +04:00
prog1764 acb7aeaa64 fix: кнопки /🧮 в окне ПП 127 — UnboundLocalError/NameError
Кнопки command=_auto_fill_criteria и lambda _open_calc_dialog создавались
ДО определения этих функций внутри _open_criteria_127_dialog — Python
бросал UnboundLocalError/NameError при нажатии. Определения функций
перенесены выше мест использования (проверено: def < кнопка для всех).
2026-08-04 23:22:35 +04:00
prog1764 c1ad496319 feat: загрузка доходов организации из DaData (показатель 8)
- verify.py: get_company_finance_dadata(inn, token) — findById/party,
  возвращает finance (последний отчётный год) + finance_history (по годам)
- ui.py: кнопка «🌐 Загрузить доходы из DaData (по ИНН)» в блоке
  «Доходы за 5 лет (показатель 8)» — по ИНН организации подтягивает
  доходы за последние 5 лет и заполняет income_year_1..5
- если в тарифе DaData нет финансовой отчётности — понятное сообщение,
  доходы заполняются вручную
2026-08-04 23:20:04 +04:00
prog1764 7742cb1e10 fix: кнопки 🧮 расчёта показателей 8/9 — NameError в _open_calc_dialog
В _open_calc_dialog использовался _num2 (определён только в
_auto_fill_criteria) — tkinter молча глотал исключение, кнопки
«молчали». Заменено на _num (определён внутри _open_calc_dialog).
Дополнительно isys определён в начале диалога ПП 127 для
авторасчёта (доходы/ущерб/балансовая стоимость объекта).
2026-08-04 23:17:48 +04:00
prog1764 4bffd0e08d feat: пометка ★ для ОКВЭД, подходящих под 187-ФЗ (из 360-р)
- dictionaries/okved_187.json: 78 кодов ОКВЭД из Распоряжения ПРФ № 360-р
  (виды деятельности субъектов КИИ по типовым отраслевым объектам)
- okved.json: добавлен недостающий код 09.90 (всего 267)
- ui.py: _load_okved_187_codes/_is_okved_187 — проверка по коду/подкоду
- окно выбора основного ОКВЭД: радио-кнопки с пометкой «★ ...»
- окно выбора доп. ОКВЭД: display_map со звёздочками (в значение
  звёздочка не попадает), легенда «★ — код подходит под 187-ФЗ»
- при применении сохраняется чистый код без ★ (импорт/документы не ломаются)
2026-08-04 23:07:28 +04:00
prog1764 29ba4b0532 feat: поля показателя 8 в GUI (доходы за 5 лет + суммарный ущерб)
- models: income_year_1..5 (доход за 5 лет назад ... за прошлый год),
  income_loss (суммарный экономический ущерб от нарушения критических
  процессов) — понятные названия без ΔДоходов
- вкладка «Организация» → «Финансовые показатели»: 6 новых полей
- авторасчёт п. 8: берёт доходы за 5 лет и ущерб из полей,
  считает №8 = ущерб / средний доход за 5 лет × 100% (проверено
  на примере методички: 33% → I категория)
- импорт из опросника: incomeYear1..5 / incomeLoss
- переменные шаблонов: {{company_income_year_1..5}},
  {{company_income_loss}}
2026-08-04 23:03:55 +04:00
prog1764 5aed863b83 feat: максимальная автоматизация ПП 127
- после автозаполнения категория пересчитывается сразу (по наивысшей
  из выбранных)
- подсказка для ΔДоходов: балансовая стоимость объекта как ориентир
- итоговое сообщение показывает, какие показатели остались незаполненными
  (нет данных для расчёта) — оператор видит, что именно добить вручную
2026-08-04 22:57:26 +04:00
prog1764 0f9b3a1f11 feat: автозаполнение показателей ПП 127 по данным организации
Кнопка « Заполнить автоматически (по данным)» в окне ПП 127:
- п. 8 (ущерб субъекту КИИ): если организация не госкорпорация/ГУП/
  госкомпания/стратегическое АО (Указ № 1009) — автоматически «не
  применим» + обоснование
- п. 9 (ущерб бюджетам): подставляет прибыль и налог из данных
  организации, оператор вводит ΔДоходов → расчёт КНП → ΔНП →
  №9 = ΔБ/Бусредн×100% → рекомендация категории (пороги ПП 127),
  расчёт добавляется в обоснование
- остальные применимые показатели — оператор заполняет вручную
- результаты как рекомендация, всё подтверждается пользователем
2026-08-04 22:55:43 +04:00
prog1764 0098f483d2 feat: подбор типового отраслевого объекта с фильтром по сфере
- detect_sphere(): автоопределение сферы по ключевым словам названия/
  назначения/описания объекта (здравоохранение, наука, транспорт, связь,
  энергетика, банки, ТЭК, атомная, ОПК, ракетно-космическая, горная,
  металлургия, химия)
- suggest_typical_object_program: фильтр по сфере в приоритете —
  1) сфера из комбобокса, 2) сфера объекта (isys.sphere), 3) автодетект,
  4) иначе все сферы. ОПК-объекту НЕ подбираются объекты из
  здравоохранения и других сфер
- если в своей сфере совпадений нет — возвращается пусто, оператор
  выбирает сферу вручную
2026-08-04 22:52:45 +04:00
prog1764 52b3bb8477 feat: авторасчёт показателей 8 и 9 (кнопка 🧮 в окне ПП 127)
- кнопка «🧮» у показателей 8 (ущерб субъекту КИИ) и 9 (ущерб бюджетам)
- п. 8: №8 = ΔДоходов / Дусредн × 100% (доходы за 5 лет), пороги ПП 127:
  1-10% → III, 10-20% → II, >20% → I; применим только для госкорпораций/
  ГУП/госкомпаний/стратегических АО (Указ № 1009)
- п. 9: полный расчёт по «Рекомендациям» ФСТЭК 2021:
  КНП = налог/прибыль (из данных организации), ΔНП = ΔДоходов × КНП,
  ΔБ = ΔНП + ΔНДПИ + ΔДИВ + ΔВСО + ΔНС, №9 = ΔБ / Бусредн × 100%,
  пороги ПП 127: >0,0003-0,0006 → III, >0,0006-0,001 → II, >0,001 → I
- окно показывает все шаги расчёта, кнопка «Применить» ставит категорию
  в выпадающий список и добавляет расчёт в обоснование
2026-08-04 22:50:50 +04:00
prog1764 4313b0a65d fix: у применимых показателей ПП 127 — и «—» (прочерк) и «не применим» вместе
Выпадающий список применимого показателя: пусто / «—» (применим,
категория не присвоена) / «не применим» / III / II / I.
У неприменимых к сфере — только «не применим» + кнопка 🔓.
2026-08-04 22:46:55 +04:00
prog1764 dadec02665 feat: подбор характеристик объекта КИИ — программа и ИИ
Вкладка «Основное», кнопки под полем типового объекта:
- ⚙️ «Подобрать типовой объект (программа)»: скоринг по совпадению
  значимых слов названия/назначения объекта с перечнем 392 типовых
  отраслевых объектов (Распоряжение 360-р), IDF-веса (редкие слова
  важнее общих) → окно с вариантами, оператор выбирает и применяет
  (заполняет сферу + типовой объект)
- 🤖 «Подобрать характеристики (ИИ)»: DeepSeek предлагает назначение,
  сферу, тип, архитектуру и типовой объект (из перечня 360-р) как
  рекомендацию → окно с полями, оператор подтверждает/правит

Примеры: СКУД → «ИС, АСУ, ИТКС, обеспечивающие контроль и управление
доступом на территорию»; 1С:УПП → «ИС для ведения бухгалтерского учета»
2026-08-04 22:43:04 +04:00
prog1764 b9968449ef fix: прочерк «—» у применимых показателей, «не применим» только у неприменимых
- применимый показатель: пусто / «—» (применим, категория не присвоена)
  / III / II / I категория
- неприменимый к сфере: в списке ТОЛЬКО «не применим», выбран
  автоматически, заблокирован, авто-обоснование из словаря сферы
- кнопка «🔓» разблокирует конкретный показатель и возвращает
  полный список (категории + прочерк)
2026-08-04 21:01:58 +04:00
prog1764 7f70bb0792 feat: в выпадающем списке показателей — «—» (применим без категории) и «не применим»
- options показателя: пусто / «—» (показатель применим, но категория
  не присвоена) / «не применим» / III / II / I
- _selected различает «прочерк» и «не применим» (оба не влияют
  на категорию, но сохраняются в список показателей)
- список показателей: «применим, категория не присвоена (—)» /
  «не применим»
- авто-обоснование: прочерк — «применим, категория не присвоена»,
  не применим — текст из словаря сферы
2026-08-04 20:55:03 +04:00
prog1764 972ff11b49 feat: ОПК показатели 8/9/13 + блокировка неприменимых с разблокировкой
- criteria_applicability.json: ОПК — применимы 8 (ущерб субъекту КИИ),
  9 (ущерб бюджету), 13 (гособоронзаказ) — обязательные для ОПК
- окно ПП 127: неприменимые для сферы показатели автоматически
  выбирают «не применим» и блокируются (серым), НО у каждого есть
  кнопка «🔓» — разблокировать конкретный показатель, если оператор
  считает его применимым (вернётся выбор категории)
- «не применим» сохраняется в список показателей и обоснование,
  не влияет на категорию
2026-08-04 20:53:29 +04:00
prog1764 4fc6fba92a feat: обоснования неприменимости показателей 8-14 для здравоохранения
- criteria_justifications.json: добавлены показатели 8 (ущерб субъекту КИИ),
  9 (ущерб бюджету), 10-10.5 (банковские), 11 (экология), 12 (пункт
  управления), 13 (гособоронзаказ), 14 (оборона/правопорядок) — дословно
  из примера заказчика
- ui.py: _just_text — поиск обоснования по группе показателя (2а→2,
  3б→3, 10.6→10, 13а→13), покрыты все 30 показателей ПП 127
2026-08-04 20:50:43 +04:00
prog1764 6852bc634b feat: обоснования неприменимости показателей критериев по сферам
- dictionaries/criteria_justifications.json: тексты обоснований для сферы
  здравоохранения (показатели 1-7) — дословно из примера заказчика
- окно ПП 127: при выборе «не применим» обоснование из словаря сферы
  автоматически подставляется в поле «Обоснование»
- авто-обоснование при сохранении: категория + выбранные показатели +
  неприменимые показатели с текстами обоснований; если все показатели
  неприменимы — «Категория значимости: не присвоена»
2026-08-04 20:48:55 +04:00
prog1764 3922b8264a feat: вариант «не применим» для показателей критериев значимости
В окне ПП 127 у каждого показателя теперь 5 вариантов: пусто,
«не применим», 3 категория, 2 категория, 1 категория.
«Не применим» не влияет на расчёт категории, но сохраняется
в список показателей как «Показатель N. ... — не применим».
2026-08-04 20:44:53 +04:00
prog1764 8c1d94d881 feat: автозаполнение безопасности автоматически после импорта опросника
После импорта данных (опросник/JSON) программа сама прогоняет логику
по каждому объекту КИИ: нарушитель (по интернету), уровень Н1/Н2,
виды нарушителей, угрозы (скоринг), инциденты (из угроз),
орг./тех. меры (базовые + по СЗИ объекта). Оператор добивает
остальное вручную. Лог: « Автозаполнение безопасности».
2026-08-04 20:37:26 +04:00
prog1764 68caaf9b63 feat: автозаполнение вкладки «Безопасность» по данным объекта
Новая кнопка « Автозаполнить» в панели действий — заполняет пустые поля
логически, без выдумок:
- категория нарушителя: есть интернет → внешний, нет → внутренний
- уровень возможностей: Н1 (внутренний) / Н2 (внешний)
- виды нарушителей: по категории из словаря attacker_types.json
- угрозы: подбор программой (скоринг по характеристикам объекта)
- инциденты: выводятся из подобранных угроз по ключевым словам
- орг. меры: базовый набор (контролируемая зона, доступ, документы,
  ответственные, обучение, инциденты, перечень лиц)
- тех. меры: базовые + доп. по средствам защиты объекта (СЗИ:
  межсетевой экран → МЭ, антивирус, СОВ, СКЗИ, виртуализация)
Незаполненное пользователем не перезаписывает.
2026-08-04 20:35:29 +04:00
prog1764 1ef8485b13 fix: подбор угроз программой + сравнение программа↔ИИ
Проблемы:
1. Подбор программой возвращал 193 из 227 угроз (весь перечень) —
   теперь скоринг по ключевым словам объекта (тип, интернет, нарушитель,
   сеть), отсев нерелевантных: 72-82 угрозы вместо 193
2. Сравнение программа↔ИИ не подсвечивало совпадения: ИИ возвращает
   «1. УБИ.001 …» / с лишними пробелами — сравнение шло по точной строке.
   Теперь ключ сравнения — код УБИ (regex), иначе нормализованный текст;
   добавлена статистика «Совпало / только программа / только ИИ»
2026-08-04 20:31:52 +04:00
prog1764 72f73d4c4f fix: результат ИИ-проверки безопасности показывается отдельным окном
Причина: результат писался только в панель «Проверка данных» на вкладке
«Организация», а пользователь смотрит вкладку «Безопасность» — замечания
были не видны. Теперь после ответа ИИ открывается отдельное окно
«🤖 Проверка безопасности — результат ИИ» с оценкой, замечаниями
и предложениями.
2026-08-04 20:24:42 +04:00
prog1764 07f0800b73 feat: автоподбор применимости показателей критериев значимости по сфере
- dictionaries/criteria_applicability.json: для каждой сферы перечень применимых
  показателей ПП РФ № 127, построен из признаков значимости Распоряжения ПРФ
  № 360-р (например: ОПК → только 13 оборонзаказ, показатель 1 «ущерб жизни
  и здоровью» не применим; банки → только 10; связь → только 4)
- окно ПП 127: неприменимые для сферы показатели блокируются и помечаются
  серым «(не применим для сферы)», исключаются из расчёта категории;
  если применимых показателей для сферы нет — категория «без категории»
2026-08-04 20:22:38 +04:00
prog1764 5bbd9313f5 feat: типовые отраслевые объекты КИИ по сферам (Распоряжение ПРФ № 360-р от 26.02.2026)
- 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; вызов при загрузке объекта
2026-08-04 20:04:38 +04:00
prog1764 8438125bd1 feat: нарушители по Методике ФСТЭК от 05.02.2021 (без выдумок)
- attacker_categories.json: 2 категории (внешний/внутренний) с формулировками п. 5.1.6
- attacker_levels.json: 4 уровня возможностей Н1-Н4 (Приложение 8):
  базовые, базовые повышенные, средние, высокие — с полным описанием
  и видами нарушителей по каждому уровню
- attacker_types.json: 13 видов нарушителей (п. 5.1.3) — спецслужбы ИГ,
  террористические группировки, преступные группы, хакеры, конкуренты,
  разработчики ПО, поставщики, персонал, пользователи, сисадмины, бывшие работники
- вкладка «Безопасность»: категория (combobox) + уровень Н1-Н4 (combobox) +
  виды нарушителей (listbox с кнопками 📚 из словаря)
- модель: attacker_level, attacker_types; маппинги collect/select/copy/import;
  генератор: item.attacker_level, item.attacker_types
2026-08-04 19:52:18 +04:00
prog1764 c4a8de57d1 feat: словарь управлений ФСТЭК + переменная {{fstek_recipient_address}}
- 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}} (наименование управления)
- логика: адрес организации → управление ФСТЭК → адрес подставляется в документ
2026-08-04 19:45:33 +04:00
prog1764 730551aeba feat: алиасы item.* в цикле объектов КИИ под шаблон «Сведения» (ФСТЭК)
- item.objective→purpose, item.standard_name→typical_object,
  item.network_category→net_category, item.provider→net_operator,
  item.interaction_purpose→net_purpose, item.interaction_method→net_method,
  item.hardware→hw_sw, item.system_software→os_sw, item.defense_tools→defense_tools_list,
  item.component→subject_element, item.exploiting_org→subject_name,
  item.exploiting_inn→subject_inn, item.domain→domain_name,
  item.threat_actor→attacker_category, item.threat_justification→threats
- логика: item.* — только переменные циклов
2026-08-04 19:38:36 +04:00
prog1764 8e647fc79a feat: окно критериев значимости — дословная таблица ПП РФ № 127
- criteria_127.json переписан точно по Постановлению Правительства РФ
  от 08.02.2019 № 127 (приложение): 5 критериев (социальная, политическая,
  экономическая, экологическая, значимость для обороны страны), 30 показателей
  (1-14 с подпунктами а/б/в/г), значения сразу привязаны к категориям III/II/I
- окно 980x700 со скроллом: у каждого показателя выбор значения из документа
  («III категория: …», «II категория: …», «I категория: …»)
- категория значимости по наивысшей выбранной: I→1-я, II→2-я, III→3-я, иначе без категории
- обоснование: автогенерация текста с перечнем выбранных показателей,
  если поле пустое; кнопки «Рассчитать категорию» и «Сохранить»
- категория сразу подставляется в поле категории значимости объекта
2026-08-04 19:20:52 +04:00
prog1764 879ada5859 fix: убрана кнопка «✏️ Редактировать» у основных угроз БИ
- угрозы выбираются только из словаря (ФСТЭК), редактировать смысла нет
- остаются «- Удалить» и «📚 Из словаря»
2026-08-04 19:18:40 +04:00
prog1764 b044b05eaf feat: финансовые показатели организации + балансовая стоимость объекта
- модели: Company.profit (сумма прибыли), Company.profit_tax (налог с прибыли),
  InformationSystem.balance_value (балансовая стоимость объекта КИИ)
- импорт из опросника: «Сумма прибыли за предыдущий год» и «Сумма налога с прибыли»
  (Общие сведения) → profit/profitTax; «Балансовая стоимость объекта КИИ в рублях»
  (каждый ОБЪЕКТ-лист) → balanceValue, больше не падает в описание
- UI: блок «Финансовые показатели» во вкладке «Организация»; поле
  «Балансовая стоимость (руб.)» в объекте КИИ; маппинги collect/select/copy/import
- генератор: {{company_profit}}, {{company_profit_tax}}, {{item.balance_value}}
2026-08-04 19:17:37 +04:00
prog1764 58b4402d31 fix: кнопка «✏️ Уточнить модель/кол-во» только для ПО/оборудования
- в окнах выбора из словаря инцидентов, угроз, критериев, мер,
  пользователей, СЗИ и ОКВЭД кнопка больше не показывается
- параметр allow_refine: включается только у hw_sw/os_sw/app_sw
  (там «уточнить модель» и количество действительно нужны)
2026-08-04 18:01:27 +04:00
prog1764 6c2e4a0c38 feat: подбор угроз — инвертированная логика (все угрозы минус неактуальные)
- threat_rules: по умолчанию актуальны ВСЕ угрозы БДУ ФСТЭК, исключаются
  заведомо неактуальные: нет интернета → убраны удалённый доступ/веб/почта/
  беспроводные/DDoS/облачные/грид; АСУ → убраны BIOS/грид/виртуализация/браузер
  (теперь 170-200 угроз на объект вместо 15 «самых похожих»)
- _has_internet уточнён: «Отсутствует» у оператора / «изолирован» / «не требуется»
  → внешней сети нет; сеть общего пользования или реальный оператор → есть
- verify.suggest_threats_ai: свежий перечень ФСТЭК (227 угроз) передаётся в промт,
  ИИ выбирает из него, а не из устаревших знаний; + человекочитаемая сводка объекта
- ui: кнопки программа/ИИ без лимита 20; после подбора угрозы сохраняются в модель
  (_collect_is) — при открытии словаря галочки выбранных угроз стоят
- models.from_dict: фильтрация неизвестных полей вложенных объектов — старые файлы
  с удалёнными полями (attacker_characteristics) больше не падают
2026-08-04 17:59:44 +04:00
prog1764 8569b478d4 fix: вернул «+ Добавить» у организационных и технических мер
- _sec_row: новый параметр allow_add — ручное добавление показывается
  даже при наличии словаря
- орг. и тех. меры: allow_add=True (может пригодиться), остальные словарные
  списки (угрозы, инциденты, критерии) — по-прежнему только из словаря
2026-08-04 17:51:17 +04:00
prog1764 6206c867c7 fix: удалено поле «Характеристика нарушителя» (придумано, в опроснике нет)
- убрано из вкладки «Безопасность» (UI), модели InformationSystem,
  маппингов _collect_is/_on_is_select, _copy_is, _apply_imported_data,
  variables.py и данных для ИИ-проверки
- «Категория нарушителя» остаётся (из варианта 3 Кости)
2026-08-04 17:50:22 +04:00
prog1764 5b318eef88 feat: окно «Показатели критериев значимости» по таблице ПП РФ № 127
- кнопка «📋 Заполнить по таблице ПП № 127» в вкладке «Безопасность»
- окно 860x640 со скроллом: 5 критериев (социальная, политическая,
  экономическая, экологическая, оборонная), 12 показателей,
  у каждого выбор значения 1-4 с описанием шкалы
- объединены показатели и обоснование в одном окне (общее поле)
- «🧮 Рассчитать категорию»: по максимальному баллу → 1/2/3/без категории
  (4→1-я, 3→2-я, 2→3-я), результат пишется в категорию значимости объекта
- «💾 Сохранить»: заполняет список показателей и обоснование
- словарь criteria_127.json (формулировки можно править файлом)
2026-08-04 17:48:40 +04:00
prog1764 38eae4b16f fix: вкладка «Безопасность» — убраны кнопки ручного «+ Добавить» у словарных списков
- угрозы, инциденты, критерии, орг./тех. меры — только из словаря (-, ✏️, 📚)
- «+» остался только у «Обоснования значений показателей» (словаря нет)
2026-08-04 17:46:07 +04:00