SHiNE-server/Dev_Docs/Pending_Features/2026-05-14_1945_персональный-чат-формат-блока-и-обратный-канал.md

39 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Персональный публичный чат: исправление формата блока и обратный канал
- краткое описание фичи:
- Исправлен формат отправки `CreateChannel` из UI: для создания канала теперь используется версия body `1`, совместимая с серверным парсером.
- Убрана ошибка `AddBlock: Некорректный формат блока (BAD_BLOCK_FORMAT)` при создании персонального публичного чата (тип `100`) на актуальном сервере.
- В `channel-view` для персонального чата добавлена клиентская склейка диалога:
- основной канал `A -> B` (владелец `A`, имя канала `B`, тип `100`);
- зеркальный канал `B -> A` (владелец `B`, имя канала `A`, тип `100`);
- сообщения обоих каналов показываются в одном диалоге, отсортированном по времени.
- Если зеркальный канал не найден, показывается уведомление в шапке канала о том, что у собеседника пока не создан ответный чат.
- Исправлена ошибка `Идентификатор канала не готов` при добавлении сообщения в ряде сценариев (например, «мои сторис»): отправка теперь использует фактически загруженный селектор канала, а не только параметры маршрута.
- Улучшен резолв канала при открытии из поиска/прямой ссылки:
- сначала попытка по `ownerBlockchainName + channelName`;
- fallback по `ownerLogin + channelName`;
- дополнительный fallback через `GetUser(owner)` с сопоставлением `blockchainName`.
Это снижает число ложных `Канал не найден` при открытии сторис/каналов других пользователей.
- В форме «Создать канал» (вкладка «Мои») удалён выбор типа канала: создаётся только публичный канал `type=1` с полями «название + описание».
- Минимальная длина названия канала изменена с `3` на `1` (новый диапазон: `1..32`).
- Перед записью сообщения в канал UI теперь получает актуальное состояние линии канала (последний блок в линии) и строит `TEXT_POST` от свежего `prevLine`, что убирает постоянные конфликты состояния (`bad_prev_line_hash` / `line_err_prev_hash_mismatch`) при добавлении в свои сторис/каналы.
- что именно проверять:
- Создать персональный публичный чат через UI (`Каналы -> Чаты -> Новый персональный публичный чат`) и убедиться, что ошибка `BAD_BLOCK_FORMAT` больше не появляется.
- Открыть созданный персональный чат `A -> B`, написать сообщение.
- С аккаунта `B` создать зеркальный чат `B -> A`, отправить ответ.
- Снова открыть чат у `A` и проверить, что в одном экране видны и исходящие, и входящие сообщения из зеркального канала.
- Проверить, что при отсутствии зеркального канала в шапке отображается предупреждение.
- Вкладка «Мои сторис»: открыть канал и отправить сообщение кнопкой «Добавить сообщение» — ошибка про неготовый идентификатор не должна появляться.
- Вкладка «Найти канал»: открыть чужой сторис/канал по формату `user/channel` и убедиться, что канал открывается (если реально существует и доступен в выдаче).
- ожидаемый результат:
- Персональный публичный чат создаётся без ошибки формата блока.
- При наличии зеркального канала переписка отображается единым диалогом.
- При отсутствии зеркального канала пользователь видит явное уведомление.
- В «мои сторис» сообщение добавляется без ошибки `Идентификатор канала не готов`.
- Открытие чужих каналов из поиска/ссылки работает стабильнее без ложного `Канал не найден`.
- статус:
- pending