feat: перенос вкладки «Безопасность» из DokoGen 187-ФЗ
- security_tab_187_reference.py — код вкладки (секция построения + методы-обработчики + ИИ-проверка) для переноса интерфейса - словари: attacker_categories, incidents, criteria_indicators, org_measures, tech_measures, threats, threats_fstec (+дата актуализации) - fstec_threats.py — скачивание перечня угроз с bdu.fstec.ru - verify.py: check_security_ai — ИИ-проверка безопасности по 236 приказу
This commit is contained in:
@@ -389,6 +389,45 @@ def compare_company_values(old_data, new_data):
|
||||
return diffs
|
||||
|
||||
|
||||
def check_security_ai(security_data, api_key, model='deepseek-chat', base_url=None):
|
||||
"""ИИ-проверка заполненной вкладки «Безопасность» объекта КИИ (236 приказ)."""
|
||||
if not api_key:
|
||||
return None, "Не задан API-ключ ИИ (Файл → Настройки → API)"
|
||||
system = (
|
||||
"Ты — эксперт по безопасности критической информационной инфраструктуры (187-ФЗ, "
|
||||
"приказ ФСТЭК России от 25.12.2017 № 239 «Об утверждении Требований по обеспечению "
|
||||
"безопасности значимых объектов КИИ» и приказ № 236). Проверь заполненные сведения "
|
||||
"об объекте КИИ и дай рекомендации. Верни ТОЛЬКО JSON: "
|
||||
'{"оценка": "ok|warning|error", '
|
||||
'"замечания": ["..."], '
|
||||
'"предложения": {"attacker_category": "...", "threats": "...", "incidents": "...", '
|
||||
'"criteria_values": "...", "criteria_justification": "...", '
|
||||
'"org_measures": "...", "tech_measures": "..."}} '
|
||||
"В «предложениях» укажи, что добавить/исправить по каждому разделу, если нужно, иначе пустые строки."
|
||||
)
|
||||
user = json.dumps(security_data, ensure_ascii=False)
|
||||
js, err = _ai_json(api_key, model, base_url, system, user)
|
||||
if err:
|
||||
return None, err
|
||||
notes = js.get('замечания') or []
|
||||
if isinstance(notes, str):
|
||||
notes = [notes]
|
||||
proposals = js.get('предложения') or {}
|
||||
if not isinstance(proposals, dict):
|
||||
proposals = {}
|
||||
return {
|
||||
'source': 'ИИ',
|
||||
'source_url': 'openai-совместимый API',
|
||||
'disclaimer': AI_DISCLAIMER,
|
||||
'kind': 'security',
|
||||
'data': {
|
||||
'rating': js.get('оценка', 'warning'),
|
||||
'notes': notes,
|
||||
'proposals': proposals,
|
||||
},
|
||||
}, None
|
||||
|
||||
|
||||
def check_company_ai(company_data, api_key, model='deepseek-chat', base_url=None):
|
||||
"""ИИ-проверка реквизитов организации.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user