Інформаційні моделі відображають структуру даних, їх зв’язки та логіку обробки у системі.
Знаходиться в середині Процедур
У системі «Прозорро.Продажі» визначено ключові сутності:
Процедура (Procedure)
Унікальний ідентифікатор обʼєкта
Опис та характеристики лоту
Стартова ціна
Мінімальний крок ставки
Статус (активний, завершений, скасований тощо)
Ставка (Bid)
Дані учасника (в т.ч. контактні дані)
Сума закритої цінової пропозиції
Дата і час подачі ставки
Кваліфікація (Award)
Дані учасника (в т.ч. контактні дані)
Сума пропозиції за результатами аукціону
Опис обʼєкту торгів (items)
Контрактинг (Contract)
Дані учасника (в т.ч. контактні дані)
Остаточна сума по договору
Опис обʼєкту торгів (items)
Скасування (Cancellation)
Інформація щодо скасування процедури
Опис обʼєкту торгів (items)
Інтерфейси системи забезпечують взаємодію користувачів, зовнішніх сервісів та інших інформаційних систем.
Веб-платформа (UI)
Кабінет адміністратора (управління аукціонами)
Кабінет організатора торгів (створення лотів)
Кабінет учасника (подання ставок, перегляд статусу)
Панель аналітики та звітності
Мобільний інтерфейс
Спрощений функціонал для учасників торгів
Оповіщення про статус аукціонів
REST API використовується для інтеграції із зовнішніми системами.
API для взаємодії з державними реєстрами
ЄДРПОУ (перевірка учасників)
Державний реєстр речових прав (перевірка об’єктів продажу)
Податкова служба (перевірка фінансового стану)
API для фінансових операцій
Інтеграція з банками та платіжними системами
Перевірка депозитів
Контроль за транзакціями
API для звітності та аналітики
Взаємодія з контролюючими органами
Формування автоматизованих звітів
База даних системи реалізована на основі NoSQL-рішень, таких як MongoDB (для зберігання основних об'єктів системи) та Elasticsearch (для повнотекстового пошуку та аналітики). Обрана архітектура дозволяє ефективно працювати з великими обсягами даних та забезпечує масштабованість, гнучкість і високу швидкодію.
| Колекція | Опис |
|---|---|
procedure (MongoDB) | Зберігає об’єкти процедур, включаючи метадані, статуси, етапи проведення, тощо. |
registry (MongoDB) | Містить об’єкти реєстрів оренди, приватизації тощо |
jobber (MongoDB) | Об’єкти, пов’язані з фоновими задачами, чергами на обробку, планувальниками. |
notifications (MongoDB) | Події та повідомлення, які надсилаються користувачам або службам. |
auction (MongoDB) | Дані, що стосуються аукціонів: ставки, учасники, результати, лоти. |
swiftStorage | Служба зберігання документів – файлові об’єкти, пов’язані з процедурами. |
Elasticsearch | Індекси для реалізації повнотекстового пошуку по процедурах, учасниках, документах. |
У MongoDB зв’язки реалізовані через посилання (reference) між об’єктами шляхом зберігання ідентифікаторів:
Колекція procedure містить посилання на:
пов’язані документи у swiftStorage,
події у notifications,
об’єкти аукціону з auction.
Колекція auction містить посилання на:
учасників та ставки, які можуть зберігатись у піддокументах або окремих колекціях.
Колекція jobber пов’язана з процедурами або іншими задачами, які вона обслуговує.
Колекція notifications може мати поля entity_id та entity_type, які дозволяють пов’язати повідомлення з будь-яким об’єктом у системі (наприклад, процедурою чи аукціоном).
Зв’язки типово реалізуються через ідентифікатори (_id) без застосування вкладених JOIN-запитів, що забезпечує високу продуктивність.
Індексація ключових полів:
Основні поля, за якими здійснюється пошук або фільтрація (наприклад, procedure.status, procedure.createdAt, auction.procedure_id, notifications.user_id), індексуються для прискорення виконання запитів.
Розділення БД на модулі (шардінг або окремі бази):
Для підвищення масштабованості й продуктивності, дані розділяються за логічними модулями (наприклад, registry, auction, notifications), а також можуть бути фізично рознесені між базами/серверами.
Кешування запитів:
Часто використовувані дані (наприклад, списки категорій, типів процедур, попередні пошуки) кешуються у Redis або Memcached, що суттєво зменшує навантаження на основну БД.
Логування операцій:
Усі запити, зміни та критичні події логуються у спеціальну колекцію або зовнішній лог-сервіс. Логи включають інформацію про користувача, час виконання, дію та результат, що забезпечує аудит та інформаційну безпеку.