# 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 на будущее: - временная межсерверная авторизация/сессия для старта звонка, - отправка сигнальных сообщений между разными серверами пользователей, - аккуратное завершение временной сессии после установления/завершения звонка.