Optional ConverseJS/XMPP web integration for chat and structured notification presentation in ShariX Open.

Опциональная веб-интеграция ConverseJS/XMPP для чатов и отображения структурированных уведомлений в ShariX Open.

ShariX Developer 57c2218ae8 Stage 19.7: restore inline Converse layout and smoke coverage 1 month ago
lib 17c67fbce1 Stage 7.4 F Converse notification center 1 month ago
services cb1fe63ac9 Stage 10.1 page registry navigation and communications 1 month ago
static 57c2218ae8 Stage 19.7: restore inline Converse layout and smoke coverage 1 month ago
templates 57c2218ae8 Stage 19.7: restore inline Converse layout and smoke coverage 1 month ago
tests 57c2218ae8 Stage 19.7: restore inline Converse layout and smoke coverage 1 month ago
transports cb1fe63ac9 Stage 10.1 page registry navigation and communications 1 month ago
.gitignore 58dae9a176 Snapshot before Django 5.2 upgrade: backup/django-4.2-final 1 month ago
CODING_POLICY.md 4417a33747 Stage 14.1 progressive UI policy and ownership baseline 1 month ago
LICENSE 4eee31950c stage 16.1 1 month ago
README.md 1b6be5aaa6 Stage 10.2-10.3 onboarding and pricing semantics 1 month ago
RELEASE_POLICY.md 618bf877dc Stage 19.6 release policy and system release projection 1 month ago
__init__.py 3449313705 initial commit 5 months ago
apps.py 3449313705 initial commit 5 months ago
sharix_health.py cb1fe63ac9 Stage 10.1 page registry navigation and communications 1 month ago
sharix_pages.py b5a8487af4 Stage 10.4-10.6 onboarding and navigation completion 1 month ago
sharix_ui_smoke.py 57c2218ae8 Stage 19.7: restore inline Converse layout and smoke coverage 1 month ago
tests_notification_backend.py cb1fe63ac9 Stage 10.1 page registry navigation and communications 1 month ago
urls.py 17c67fbce1 Stage 7.4 F Converse notification center 1 month ago
views.py 17c67fbce1 Stage 7.4 F Converse notification center 1 month ago

README.md

ShariX Converse

Optional web integration for ConverseJS/XMPP in ShariX Open.

The module provides JID/settings helpers and embedded/standalone chat presentation. XMPP is a transport: Order/Ticket lifecycle and durable business state remain in their owning backend/runtime modules.

Foundation compatibility

The module does not create parallel Stage, Participant, Correspondence or Artifact tables. Room lifecycle is controlled through backend/handler contracts; absence of the module must not prevent the core service from starting.

Configuration is supplied through the common EJ_/CONVERSE settings described by the deployment. Canonical migrations, if models are added in future, must be committed to this repository rather than generated by installation scripts.

Web Notification Center

/notifications/ is a presentation-only view over structured XMPP notification messages. It uses the current user's Converse/XMPP session, queries personal MAM history and MAM for rooms already known to Converse, and listens for live XMPP messages. Only JSON envelopes with type=notification and version=1 are rendered.

The web Notification Center does not publish business notifications, run workflow handlers or store a canonical notification inbox. Business code may use the module's transient delivery facade described below. Read/unread state is presentation state in the current browser (localStorage) and is not synchronized between devices. Different domain processes may use different direct/MUC conversations; the page aggregates matching notification envelopes without changing their room topology.

The notification page always uses the in-page Converse client because a cross-origin external iframe cannot expose the user's MAM archive to the Django page. CONVERSE_CLIENT_MODE=external therefore continues to control the support chat only. If prebind is unavailable, the user logs into XMPP in the collapsible connection panel.

Optional limits:

  • CONVERSE_NOTIFICATIONS_PAGE_SIZE — latest MAM messages requested per archive query (default 100, range 10..500);
  • CONVERSE_NOTIFICATIONS_MAX_ROOMS — maximum number of currently known Converse rooms additionally queried through room MAM (default 20, range 1..100).

The XMPP localpart follows the established ShariX account identity: phone_number first, then uid, then username as compatibility fallbacks. The Converse-owned XMPP domain remains CONVERSE_XMPP_HOST, which itself defaults to global EJ_HOST.

Communication backend

sharix_converse is not required to provide a browser notification inbox. Its stable backend role is transient multi-channel delivery. Use sharix_converse.services.dispatch_notification() for explicit XMPP/e-mail delivery. There is no Notification database table or delivery inbox in this contract; business workflows remain owners of retry/time semantics.

The historical Support Chat and MAM Notification Center URLs remain compatible web surfaces, but neither is present in the default PURE menu. A local menu configuration may explicitly enable a registered page when a deployment still needs it.