Commit Graph
100 Commits
Author SHA1 Message Date
LocoAgent 5bb6a2f5e9 Вкладка «Организация»: вместо 5 полей доходов по годам — одна строка «Доход за 5 лет (суммарно)» + «Снижение уровня дохода», жирный заголовок убран; миграция старых файлов (сумма по годам → income_5y), авторасчёт/автозаполнение/DaData/шаблоны обновлены 2026-08-05 14:54:31 +04:00
LocoAgent 829a1a98e3 Отображение после загрузки проекта: доп. ОКВЭД нарезаются по кодам и нормализуются (не показываются «сырыми» склеенными записями), угрозы/инциденты с переносом внутри названия склеиваются в списке 2026-08-05 14:51:35 +04:00
LocoAgent ad54d3e0e2 Импорт: доп. ОКВЭД нарезаются по кодам (переносы внутри названий больше не рвут записи), угрозы с переносом внутри названия склеиваются (УБИ.209 «памяти\r\nядра процессора» → одна строка) 2026-08-05 14:46:39 +04:00
LocoAgent 9f8bf3999d Тех. меры: только при присвоенной категории и по факту СЗИ (без СЗИ нет «Регистрации и мониторинга»/«Антивируса»); промт СЗИ: при «без категории» — базовый минимум + провести категорирование, переданы характеристики объекта (интернет/ПО/архитектура); показатель 10 и 10.1–10.7: авторасчёт по методичке ФСТЭК (операции за год / дни) и порогам ПП-127 2026-08-05 14:39:03 +04:00
LocoAgent 07bf25ebc3 Обоснование ПП-127: висячий отступ — перенесённые строки «Показатель N. …» и текст расчёта с отступом, между показателями пустая строка (продолжение больше не выглядит отдельным пунктом) 2026-08-05 14:26:51 +04:00
LocoAgent 0b3ef66125 Окно авторасчёта ПП-127: результат больше не обрезается — окно растягиваемое (980x820, minsize, resizable), поле результата выше (12 строк) и со скроллбаром (показатели 8 и 9) 2026-08-05 14:17:57 +04:00
LocoAgent 1793182735 Показатель 8: если «Снижение уровня дохода» не заполнено — оценка ущерба «доход за год × 5» (наихудший сценарий), с пометкой в обосновании и окне авторасчёта ПП-127 2026-08-05 14:16:12 +04:00
LocoAgent 52b4ee6f1a Угрозы: список сортируется по возрастанию кода УБИ (УБИ.001 → УБИ.211) во всех местах — подбор программой, ИИ, автозаполнение, импорт, добавление недостающих 2026-08-05 14:14:06 +04:00
LocoAgent c9dffdd4ca ОКВЭД: полный справочник ОКВЭД2 (2770 записей) в едином формате «код название», resolve_okved без дефиса, импорт доп. ОКВЭД без переносов; угрозы: умный подбор — исключение неиспользуемых технологий (виртуализация, облако, мобильные, АСУ ТП, грид, суперкомпьютер, большие данные, беспроводные сети, контейнеры, smart-карты, ИИ), базовые угрозы локальных сетей 2026-08-05 14:08:53 +04:00
LocoAgent 136c58c948 fix: генерация циклов — вложенные циклы (показатели значимости внутри объекта КИИ) брали данные только из item; теперь используют общий словарь loops, документ больше не пустой 2026-08-05 13:52:29 +04:00
LocoAgent 28fa7edaa8 орг. меры: словарик заменён на текст заказчика (15 пунктов), автогенерация с учётом ответов по физической безопасности из опросника (да/нет), импорт ответов в модель 2026-08-05 13:39:24 +04:00
LocoAgent 9a1058559a показатели значимости: автогенерация таблицы 1-14 в шаблон категорирования (обоснование применимости по сфере + авторасчёт 8/9 из данных организации) 2026-08-05 12:44:03 +04:00
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