Current section

Files

Jump to
ca lib oid family_descriptions.ex
Raw

lib/oid/family_descriptions.ex

defmodule CA.FamilyDescriptions do
@moduledoc """
Provides AI-generated summaries and dynamic children list for SPE families.
"""
def get_summary(:"id-spe-ac"), do: "Цей клас зосереджується на обмеженні доступу до інформаційних систем, ресурсів та функцій лише для авторизованих користувачів, програм і пристроїв."
def get_summary(:"id-spe-at"), do: "Цей клас спрямований на забезпечення належного рівня знань персоналу щодо загроз інформаційній безпеці та їхніх обов'язків у цій сфері."
def get_summary(:"id-spe-au"), do: "Цей клас забезпечує можливість відстеження дій у системі, генерування, захист та аналіз записів аудиту для виявлення порушень політики безпеки."
def get_summary(:"id-spe-ca"), do: "Цей клас регламентує процеси перевірки ефективності заходів захисту, авторизації систем та їх безперервного моніторингу."
def get_summary(:"id-spe-cm"), do: "Цей клас гарантує створення та підтримання базових налаштувань системи, а також строгий контроль за змінами в апаратному та програмному забезпеченні."
def get_summary(:"id-spe-cp"), do: "Цей клас описує заходи для відновлення функціонування інформаційної системи та забезпечення її безперебійної роботи у разі надзвичайних ситуацій."
def get_summary(:"id-spe-ia"), do: "Цей клас відповідає за однозначне розпізнавання користувачів або пристроїв та підтвердження їхньої справжності перед наданням доступу до системи."
def get_summary(:"id-spe-ir"), do: "Цей клас визначає процедури виявлення, аналізу, локалізації та усунення наслідків інцидентів інформаційної безпеки."
def get_summary(:"id-spe-ma"), do: "Цей клас регулює процеси планового та позапланового технічного обслуговування компонентів системи для запобігання збоям."
def get_summary(:"id-spe-mp"), do: "Цей клас спрямований на безпечне зберігання, транспортування, використання та знищення як цифрових, так і паперових носіїв інформації."
def get_summary(:"id-spe-pe"), do: "Цей клас охоплює заходи контролю фізичного доступу до об'єктів організації та захисту обладнання від загроз навколишнього середовища."
def get_summary(:"id-spe-pl"), do: "Цей клас регламентує розробку, документування та регулярне оновлення планів захисту інформації, архітектури безпеки та приватності."
def get_summary(:"id-spe-ps"), do: "Цей клас встановлює вимоги до перевірки, надання повноважень та звільнення персоналу з метою мінімізації ризиків інсайдерських загроз."
def get_summary(:"id-spe-ra"), do: "Цей клас забезпечує систематичний підхід до виявлення, аналізу та реагування на ризики, пов'язані з обробкою інформації та функціонуванням системи."
def get_summary(:"id-spe-sa"), do: "Цей клас зосереджується на інтеграції вимог безпеки на всіх етапах життєвого циклу розробки та закупівлі ІТ-продуктів чи послуг."
def get_summary(:"id-spe-sc"), do: "Цей клас охоплює механізми захисту інформації під час її передачі мережами зв'язку, криптографічний захист та ізоляцію критичних компонентів."
def get_summary(:"id-spe-si"), do: "Цей клас спрямований на захист системи від шкідливого коду, виявлення вразливостей та запобігання несанкціонованим змінам інформації."
def get_summary(:"id-spe-sr"), do: "Цей клас встановлює вимоги для виявлення та мінімізації загроз, що виникають через зовнішніх постачальників продуктів та послуг."
def get_summary(:"id-spe-pm"), do: "Цей клас визначає загальноорганізаційні заходи для ефективного управління програмами інформаційної безпеки та приватності на рівні всього підприємства."
def get_summary(:"id-spe-pt"), do: "Цей клас фокусується на дотриманні законодавства щодо захисту персональних даних, отриманні згоди та забезпеченні прав суб'єктів даних."
def get_summary(_), do: ""
def get_children_text(family_id, all_specs) do
family_prefix = to_string(family_id) <> "-"
children_titles =
all_specs
|> Enum.filter(fn spec ->
str_id = to_string(spec.id)
String.starts_with?(str_id, family_prefix) and str_id != to_string(family_id)
end)
|> Enum.sort_by(fn spec ->
spec.id
|> to_string()
|> String.split("-")
|> Enum.drop(3)
|> Enum.map(fn part ->
case Integer.parse(part) do
{num, _rest} -> num
:error -> 999
end
end)
end)
|> Enum.map(fn child ->
short_title = String.split(child.title, " - ", parts: 2) |> List.last()
parts = String.split(short_title, " (")
if length(parts) == 2 do
base = List.first(parts) |> String.downcase() |> String.capitalize()
"#{base} (#{List.last(parts)}"
else
# if it still has multiple parenthesis, just capitalize the first letter
String.capitalize(String.slice(short_title, 0, 1)) <> String.slice(short_title, 1..-1//1)
end
end)
if children_titles == [] do
""
else
Enum.join(children_titles, "; ") <> "."
end
end
end