Фізична модель збереження зберігання даних
| 🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. | 
В рамках реалізації функціональних вимог, необхідно створити окрему схему NOTIFICATIONS та розширити фізичну модель додатковими таблицями:
- 
NOTIFICATION_TEMPLATE - зберігання даних шаблонів повідомлень 
- 
NOTIFICATION_TEMPLATE_ATTR - зберігання додаткових атрибутів шаблонів в залежності від вимог окремого каналу зв’язку 
- 
INBOX_NOTIFICATION - зберігання in-app повідомлень користувачів для відображення у Кабінеті Громадянина 
1. Структури даних
1.1. Структура даних шаблонів повідомлень (NOTIFICATION_TEMPLATE)
| Поле | Тип | Обмеження | Значення за замовчуванням | Опис | 
|---|---|---|---|---|
| ID | UUID | Primary Key | uuid_generate_v4() | Унікальний автоматично згенерований ідентифікатор запису | 
| NAME | TEXT | Not Null, Unique Constraint* | - | Службова назва шаблону повідомлення | 
| CHANNEL | ENUM | Not Null, Unique Constraint*, [inbox, email, diia] | - | Канал зв’язку для використання шаблону повідомлення | 
| TITLE | TEXT | - | - | Текстовий заголовок повідомлення | 
| CONTENT | TEXT | Not Null | - | Текстовий шаблон тіла повідомлення для подальшого заповнення даними | 
| CHECKSUM | TEXT | Not Null | - | SHA-256 чек-сума, згенерована на вміст поля CONTENT | 
| CREATED_AT | TIMESTAMP | Not Null | now() | Дата/Час створення/публікації шаблону | 
| UPDATED_AT | TIMESTAMP | Not Null | now() | Дата/Час останньої зміни в рамках публікації шаблону | 
| EXT_TEMPLATE_ID | TEXT | Unique Constraint | - | Унікальний ідентифікатор запису у зовнішній системі | 
| EXT_PUBLISHED_AT | TIMESTAMP | - | Дата/Час останньої публікації запису у зовнішню систему | 
1.2. Структура даних атрибутів шаблонів повідомлень (NOTIFICATION_TEMPLATE_ATTR)
| Поле | Тип | Обмеження | Значення за замовчуванням | Опис | 
|---|---|---|---|---|
| ID | UUID | Primary Key | uuid_generate_v4() | Унікальний автоматично згенерований ідентифікатор запису | 
| TEMPLATE_ID | UUID | Not Null, Foreign Key | - | Зв’язок з записом NOTIFICATION_TEMPLATE | 
| NAME | TEXT | Not Null | - | Службова назвав атрибуту | 
| VALUE | TEXT | Not Null | - | Значення атрибуту | 
1.3. Структура даних in-app повідомлень INBOX_NOTIFICATION
| Поле | Тип | Обмеження | Значення за замовчуванням | Опис | 
|---|---|---|---|---|
| ID | UUID | Primary Key | uuid_generate_v4() | Унікальний автоматично згенерований ідентифікатор запису | 
| RECIPIENT_ID | TEXT | Not Null | - | Ідентифікатор користувача, який має отримати повідомлення | 
| SUBJECT | TEXT | Not Null | - | Заголовок повідомлення | 
| MESSAGE | TEXT | Not Null | - | Зміст повідомлення | 
| IS_ACKNOWLEDGED | BOOLEAN | Not Null | false | Статус повідомлення (прочитане/не прочитане) | 
| CREATED_AT | TIMESTAMP | Not Null | now() | Дата/Час створення повідомлення | 
| UPDATED_AT | TIMESTAMP | Not Null | now() | Дата/Час оновлення повідомлення | 
2. Ролі/системні користувачі БД
Для обслуговування операцій взаємодії з БД, необхідно створити ролі/користувачів з визначеними правами доступу для використання відповідними компонентами системи:
| Компонент системи | Роль/Користувач | Привілегії | 
|---|---|---|
| notification-service | notification_service_user | GRANT SELECT, INSERT, UPDATE, DELETE ON NOTIFICATION_TEMPLATE GRANT SELECT, INSERT, UPDATE, DELETE ON NOTIFICATION_TEMPLATE_ATTR GRANT SELECT, INSERT, UPDATE, DELETE ON INBOX_NOTIFICATION |