Цей розділ пояснює ключові архітектурні рішення, які були прийняті під час розробки модуля «Рейтинг», а також обґрунтовує їх з точки зору надійності, продуктивності, масштабованості та підтримуваності системи.
F.1. Принципи архітектури модуля
Архітектура модуля «Рейтинг» побудована на таких базових принципах:
- Функціональна сегментація
- Ідемпотентність обчислень
- Дельтова модель оновлень
- Стабільність структури даних
- Відокремлення сирих даних від оброблених
- Прозорість та відновлюваність
- Масштабованість на майбутні модулі
Кожен із цих принципів описано нижче.
F.2. Функціональна сегментація
Рішення
Кожен лист модуля відповідає за свою чітку функцію:
Обгрунтування
- Дані не змішуються між собою.
- Легко відстежувати джерело кожної метрики.
- Зміни в одному модулі не впливають на інші.
- Забезпечується прозорість логіки для Замовника.
F.3. Ідемпотентність обчислень
Рішення
Функції transferProposalData() та transferPrimeriesToResults() побудовані так, що повторний запуск не змінює результатів.
Обгрунтування
- Уникнення дублювання даних.
- Можливість запускати функції кілька разів без ризику.
- Стабільність при інтеграції з зовнішніми системами (ZAPIER).
- Спрощення тестування та підтримки.
***
F.5. Стабільність структури даних
Рішення
Структура листів фіксована і не змінюється.
Обґрунтування
- Код працює стабільно при будь-яких обсягах даних.
- Зміна структури може призвести до критичних помилок.
- Замовник отримує передбачувану модель даних.
- Легко документувати та підтримувати.
***
F.7. Прозорість та відновлюваність
Рішення
Усі дані можна відновити:
- з ZAPIER‑листів,
- з операційних листів,
- з дельт,
- з архівів.
Обгрунтування
- Система не залежить від одного джерела.
- Можна відновити будь-який модуль без втрати інформації.
- Підтримка стає простою та передбачуваною.
F.8. Масштабованість на майбутні модулі
Рішення
Архітектура дозволяє додавати нові листи, метрики та модулі без зміни базової логіки.
Обгрунтування
- Можна додати нові типи голосувань.
- Можна додати нові KR‑метрики.
- Можна інтегрувати зовнішні системи.
- Можна розширити аналітику без переписування коду.
***
F.11. Обґрунтування логіки оновлення Рейтингу
Рішення
Оновлення виконується через:
- читання всіх листів,
- формування дельт,
- додавання дельт до Рейтингу.
Обгрунтування
- забезпечує точність,
- дозволяє відновити систему,
- гарантує стабільність при великих обсягах даних,
- дозволяє легко розширювати модель.