From 4fc6fba92a9b3f7cc2fdb566d68f0fe15ee0fce2 Mon Sep 17 00:00:00 2001 From: prog1764 Date: Tue, 4 Aug 2026 20:50:43 +0400 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BE=D0=B1=D0=BE=D1=81=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B5=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D0=B5=D0=B9=20?= =?UTF-8?q?8-14=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B4=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BE=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .../dictionaries/criteria_justifications.json | 14 +++++++- dokogen/ui.py | 34 +++++++++++++------ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/dokogen/dictionaries/criteria_justifications.json b/dokogen/dictionaries/criteria_justifications.json index 203ea92..93c224f 100644 --- a/dokogen/dictionaries/criteria_justifications.json +++ b/dokogen/dictionaries/criteria_justifications.json @@ -6,6 +6,18 @@ "4": "Субъект КИИ не является оператором связи, объекты КИИ организации сферы здравоохранения не относятся к объектам транспортной инфраструктуры.", "5": "Организация сферы здравоохранения является юридическим лицом, обеспечивающим эксплуатацию информационной системы, задействованной в процессе оказания государственной услуги, однако нарушение функционирования информационной системы (рассматриваемого объекта КИИ), не участвующей в обработке информации, необходимой для оказания государственной услуги, не влечет за собой нарушение и (или) прекращение доступа к государственной услуге. Рассматриваемый объект КИИ не участвует в обработке информации, необходимой для оказания государственной услуги.", "6": "Организация сферы здравоохранения не является органом государственной власти, в связи с этим критерий неприменим.", - "7": "Организация сферы здравоохранения не является субъектом политической сферы деятельности, в связи с этим критерий неприменим." + "7": "Организация сферы здравоохранения не является субъектом политической сферы деятельности, в связи с этим критерий неприменим.", + "8": "Организация сферы здравоохранения не является государственной корпорацией, государственным унитарным предприятием, государственной компанией, стратегическим акционерным обществом, стратегическим предприятием, в связи с этим критерий неприменим.", + "9": "Объект КИИ задействован только в предоставлении медицинских услуг, освобожденных от налогообложения, в связи с этим критерий неприменим.", + "10": "Организация сферы здравоохранения не является субъектом банковской сферы деятельности.", + "10.1": "Организация сферы здравоохранения не является центральным контрагентом.", + "10.2": "Организация сферы здравоохранения не является центральным депозитарием.", + "10.3": "Организация сферы здравоохранения не является негосударственным пенсионным фондом.", + "10.4": "Организация сферы здравоохранения не является страховой организацией.", + "10.5": "Организация сферы здравоохранения не является оператором услуг информационного обмена.", + "11": "Объекты КИИ организации сферы здравоохранения не относятся к опасным производственным объектам в соответствии с законодательством Российской Федерации.", + "12": "Организация сферы здравоохранения не выполняет функции пункта управления (ситуационного центра) государственного органа власти или государственной корпорации.", + "13": "Организация сферы здравоохранения не является субъектом обеспечения обороны страны, безопасности государства и правопорядка.", + "14": "Организация сферы здравоохранения не имеет информационных систем, функционирующих в области обеспечения обороны страны, безопасности государства и правопорядка." } } diff --git a/dokogen/ui.py b/dokogen/ui.py index e9439ed..f599d6a 100644 --- a/dokogen/ui.py +++ b/dokogen/ui.py @@ -1858,6 +1858,16 @@ class DokoGenApp: _sphere_just = self.is_sphere_combo.get() if hasattr(self, 'is_sphere_combo') else '' _just = justifications.get(_sphere_just, {}) if _sphere_just else {} + def _just_text(num): + """Обоснование для показателя: точный ключ, иначе группа по первым цифрам + (2а→2, 3б→3, 10.6→10, 13а→13).""" + if num in _just: + return _just[num] + m = _re.match(r'(\d+)', num) + if m and m.group(1) in _just: + return _just[m.group(1)] + return None + dialog = tk.Toplevel(self.root) dialog.title("Показатели критериев значимости (ПП РФ № 127)") dialog.geometry("980x700") @@ -1924,16 +1934,17 @@ class DokoGenApp: def _on_pick(_e, _num=num, _var=var, _name=name): # При выборе «не применим» — автоподстановка обоснования из словаря сферы - if _var.get().strip() == 'не применим' and _num in _just: - txt = _just[_num] + if _var.get().strip() == 'не применим': + txt = _just_text(_num) prefix = f"Показатель {_num}. {_name} — не применим." - full = prefix + " " + txt - cur = justify_txt.get('1.0', 'end-1c').strip() - if prefix not in cur: - if cur: - justify_txt.insert('end', '\n' + full) - else: - justify_txt.insert('1.0', full) + if txt: + full = prefix + " " + txt + cur = justify_txt.get('1.0', 'end-1c').strip() + if prefix not in cur: + if cur: + justify_txt.insert('end', '\n' + full) + else: + justify_txt.insert('1.0', full) combo.bind('<>', _on_pick) if not applicable_here: @@ -2036,8 +2047,9 @@ class DokoGenApp: ) for num, name, _, _ in not_applicable: base = f"Показатель {num}. {name} — не применим" - if num in _just: - auto_parts.append(base + ": " + _just[num]) + jtxt = _just_text(num) + if jtxt: + auto_parts.append(base + ": " + jtxt) else: auto_parts.append(base + ".") if not_applicable and not chosen: