Skip to content

feat(system_settings): apply changes without page refresh (WTEL-10322) - #497

Open
casual-dev1234 wants to merge 1 commit into
mainfrom
feat/WTEL-10322/apply-system-settings-live
Open

feat(system_settings): apply changes without page refresh (WTEL-10322)#497
casual-dev1234 wants to merge 1 commit into
mainfrom
feat/WTEL-10322/apply-system-settings-live

Conversation

@casual-dev1234

Copy link
Copy Markdown
Contributor

Publish a domain-wide system_settings websocket event on setting create/update/patch so every logged-in user in the domain applies the change without refreshing the page.

engine emits system_settings.{domainId} on the app exchange; the per-domain queue binds it (no user_id) and the hub broadcasts a system_settings ws event to all sessions. The payload carries only the changed setting names; clients re-fetch through the existing API.

Publish a domain-wide system_settings websocket event on setting create/update/patch so every logged-in user in the domain applies the change without refreshing the page.

engine emits system_settings.{domainId} on the app exchange; the per-domain queue binds it (no user_id) and the hub broadcasts a system_settings ws event to all sessions. The payload carries only the changed setting names; clients re-fetch through the existing API.
@webitel-review

webitel-review Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

🤖 Webitel Code Review

Цей пул-реквест додає механізм сповіщення клієнтів через WebSocket про зміни в системних налаштуваннях (system settings). Тепер при створенні, оновленні або частковому оновленні (patch) системного налаштування генерується подія в чергу повідомлень RabbitMQ, яка потім транслюється всім активним WebSocket-з'єднанням відповідного домену. Також було спрощено та узагальнено логіку порівняння значень налаштувань за допомогою глибокого порівняння розпарсеного JSON, що дозволяє уникнути помилкових спрацьовувань при зміні форматування або порядку ключів.

📋 Walkthrough (9 файл(и/ів))
Файл Зміни
app/system_setting.go Додано надсилання сповіщень про зміну системних налаштувань через MessageQueue та спрощено перевірку зміни значень.
app/web_hub.go Додано обробку подій зміни системних налаштувань з черги домену та їх розсилку всім активним WebSocket-з'єднанням.
model/system_settings.go Додано структуру SystemSettingsChange, метод порівняння значень ValueEquals та конструктор WebSocket-події.
model/system_settings_test.go Додано модульні тести для перевірки порівняння значень налаштувань та серіалізації подій.
model/websocket_message.go Додано нову константу типу події WebsocketSystemSettingsEvent.
mq/layered_mq.go Додано метод SendSystemSettingsChange до шару черги повідомлень.
mq/mq.go Розширено інтерфейси черги повідомлень новими методами для системних налаштувань.
mq/rabbit/client.go Реалізовано публікацію подій зміни системних налаштувань в RabbitMQ.
mq/rabbit/domain_queue.go Додано підписку, парсинг та маршрутизацію подій системних налаштувань у черзі домену.

Знахідки

  • [low] app/system_setting.go:183 — Зміна логіки в PublishSysSettingEventContext тепер генерує події регенерації для абсолютно всіх системних налаштувань, тоді як раніше вони генерувалися лише для обмеженого списку (наприклад, 2FA, звукові сповіщення тощо). Переконайтеся, що споживачі цих подій готові до обробки подій від будь-яких інших налаштувань і це не призведе до зайвого навантаження.
🔗 Cross-repo callers змінених символів (5)
  • ToJSONcall_center/mq/rabbit/agent.go:12
  • ToJSONcall_center/mq/rabbit/queue.go:17
  • ToJSONcrypto/encoding/jsonc/jsonc.go:195
  • ToJSONengine/app/appointments.go:28
  • ToJSONim-providers-service/internal/whatsapp/webhook/events/events.base.go:45

Index-grounded review across the Webitel codebase. Знахідки можуть бути неточними — перевіряйте перед застосуванням.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant