Skip to content

Восстановление переписки после переподключения - #875

Draft
TThanos3000 wants to merge 1 commit into
feat/dev-chat-message-context-20261113from
feat/dev-chat-reconnect-20261113
Draft

TThanos3000 wants to merge 1 commit into
feat/dev-chat-message-context-20261113from
feat/dev-chat-reconnect-20261113

Conversation

@TThanos3000

Copy link
Copy Markdown
Collaborator

Обычная история личных и проектных чатов возвращает sync_cursor. После обрыва клиент запрашивает messages/changes/?after=<cursor> и применяет upsert или delete по message_id. После каждой примененной страницы сохраняет next_cursor, пока has_more не станет false. На 409 заново загружает обычную историю. Повтор отправки с тем же client_message_id не создает новой ревизии.

Ревизия и изменение сообщения записываются в одной транзакции. Событие удаления возвращает только ID. Чтение изменений проверяет актуальное членство и сохраняет персональные признаки прочтения в возвращаемых сообщениях. Изменение и удаление собственных сообщений через Django-админку используют те же проверки и публикуют события после коммита.

Миграция 0014. Ранее созданные сообщения доступны в обычной истории и попадают в выдачу изменений после последующей правки или мягкого удаления. Синхронизация охватывает отправку, правку и мягкое удаление. Отдельные события прочтения и физическое удаление записей через служебные операции требуют отдельного решения.

Проверки включают восстановление после разрыва, повтор отправки, постраничную выдачу, актуальное членство, действия организатора в админке и параллельные отправки на PostgreSQL. Зависит от #874.

This branch has not been deployed

No deployments
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.

2 participants