SHiNE-server/TODO_Будущие_доработки.md

3.4 KiB
Raw Blame History

TODO: Будущие доработки

1) Полный переход на ReceiveOutcomingMessage

  • Сейчас в UI используется ReceiveOutcomingMessage с fallback на SendMessagePair.
  • Fallback нужен только временно для совместимости со старыми серверами.
  • После обновления всех серверов:
  • убрать вызов SendMessagePair из UI,
  • убрать регистрацию SendMessagePair на сервере (оставить только ReceiveOutcomingMessage).

2) Реальная мультисерверная доставка

  • Сейчас фактически предполагается 1 сервер на пользователя.
  • Нужно реализовать штатную мультисерверную схему:
  • пересылка исходящих сообщений между серверами пользователя A,
  • пересылка входящих сообщений между серверами пользователя B,
  • дедупликация на уровне БД для затухания дублей.

3) Надёжная доставка при перезапуске сервера

  • Сейчас возможен сценарий: запись уже сохранена в БД, но сервер не успел переслать дальше из-за перезапуска.
  • Нужно добавить механизм «store + guaranteed forward»:
  • очередь/аутбокс для межсерверной пересылки,
  • фоновый ретрай до подтверждения отправки,
  • корректная остановка (graceful shutdown) с дожатием критичных задач.

4) Политика идемпотентности

  • Сохранить принцип: пара (incoming, outgoing) пишется одной транзакцией, либо обе, либо ни одной.
  • Не допускать частичного состояния, при котором в БД есть только один блок пары.

5) Наблюдаемость и аналитика

  • Добавить метрики по доставке:
  • количество дублей,
  • количество успешных вставок пар,
  • доля доставок в WS/push,
  • количество ретраев межсерверной пересылки.

6) Ограничение текущих звонков (важно)

  • Сейчас звонки работают только в рамках одного сигнального сервера (или единого контура, где обе стороны уже подключены).
  • Сценарий «пользователь A на своих серверах, пользователь B на других серверах» пока не поддержан.
  • TODO на будущее:
  • временная межсерверная авторизация/сессия для старта звонка,
  • отправка сигнальных сообщений между разными серверами пользователей,
  • аккуратное завершение временной сессии после установления/завершения звонка.