Аудит та журналювання подій

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис підходу

Усі події відправки повідомлень користувачам системою фіксуються у журналі аудиту з повним контекстом. Для реалізації вимоги необхідно розширити підсистему аудиту наступним чином:

  • Ввести окрему категорію подій аудиту для фіксації службових операцій:

    • EVENT_TYPE = SYSTEM_EVENT

  • Розширити перелік службових операцій:

    • SEND_USER_NOTIFICATION

Детальніше з дизайном підсистеми "Журнал аудиту" можна ознайомитися за посиланням
Приклад налаштувань для публікації подій аудиту через Kafka-топік (на прикладі використання ddm-starter-audit бібліотеки)
audit:
  kafka:
    topic: audit-events
    schemaRegistryUrl: http://kafka-schema-registry:8081

2. Структура події аудиту

Нижче наведено структуру події аудиту та її відповідність структурі та значенням отриманого через Kafka-топік повідомлення про необхідність відправки нотифікації користувачу.

Атрибут Значення

timestamp

now()

application_name

"notification-service"

name

"SEND_USER_NOTIFICATION"

type

"SYSTEM_EVENT"

request_id

<MDC.traceId>

source_system

<context.system>

source_application

<context.application>

source_business_process

<context.businessProcess>

source_business_process_definition_id

<context.businessProcessDefinitionId>

source_business_process_instance_id

<context.businessProcessInstanceId>

source_business_activity

<context.businessActivity>

source_business_activity_id

<context.businessActivityInstanceId>

context

<JSON-представлення деталей операції та результату її виконання>

2.1. Структура контексту події аудиту для каналів зв’язку

JSON-представлення деталей події для фіксації відправки поштового повідомлення
{
  "notification": {
    "channel:": "email",
    "subject": "<Заголовок повідомлення>",
    "message": "<Повідомлення>",
    "recipient": {
      "id": "<Ідентифікатор користувача - optional>",
      "email": "<Поштова адреса користувача>"
    }
  }
}
JSON-представлення деталей події для фіксації відправки повідомлення в inbox кабінету
{
  "notification": {
    "channel:": "inbox",
    "subject": "<Заголовок повідомлення>",
    "message": "<Повідомлення>",
    "recipient": {
      "id": "<Ідентифікатор користувача>"
    }
  }
}
JSON-представлення деталей події для фіксації відправки повідомлення в мобільний додаток Дія
{
  "notification": {
    "channel:": "diia",
    "externalTemplateId": "<Ідентифікатор шаблону>",
    "templateName": "<Службова назва шаблону>",
    "distributionId": "<Ідентифікатор розсилки>",
    "recipient": {
      "id": "<Ідентифікатор користувача>",
      "rnokpp": "<ІПН користувача>",
      "parameters": [
        {
          "key": "<key>",
          "value": "<value>"
        }
      ]
    }
  }
}