docs(blockchain): актуализировать MVP-формат и правила изменения протокола

This commit is contained in:
AidarKC
2026-05-19 00:23:10 +03:00
parent c27da63a3e
commit b85643ca33
17 changed files with 83 additions and 21 deletions
@@ -0,0 +1,26 @@
# Каналы: явные вкладки + fallback CreateChannel для legacy-сервера
Статус: `pending`
## Что сделано
- На экране каналов добавлены явные вкладки:
- `Каналы`
- `Чаты`
- `Мои`
- Переключение теперь работает по обычному тапу, без необходимости long-press на кнопке toolbar.
- В `addBlockCreateChannel` добавлен fallback:
- сначала отправляется текущий формат CreateChannel (с description/type/version),
- если сервер возвращает `bad_block_format`, выполняется повтор с legacy-форматом тела (без description/type/version) для совместимости со старым сервером.
## Как проверять
1. Открыть экран каналов и проверить переключение всех трёх вкладок по тапу.
2. Нажимать на строки каналов и убедиться, что переход в канал работает.
3. Создать новый канал и убедиться, что при старом сервере создание не падает с `Некорректный формат блока`.
## Ожидаемый результат
- Вкладки `Каналы/Чаты/Мои` переключаются стабильно.
- Каналы открываются по тапу.
- Создание канала устойчиво к legacy-формату сервера.
@@ -0,0 +1,22 @@
# Fix: CreateChannel версия формата (v3)
Статус: `pending`
## Что исправлено
- Найдена причина `bad_block_format` при создании канала:
UI отправлял тело CreateChannel нового формата (с description/type/version), но с `msgVersion=1`.
- Исправлено на корректный `msgVersion=3` для нового формата.
- Оставлен fallback для старого сервера:
- при `bad_block_format` повтор с legacy-телом и `msgVersion=1`.
## Как проверять
1. Открыть `Каналы` и создать новый канал.
2. Убедиться, что создание проходит без ошибки `Некорректный формат блока`.
3. Проверить, что канал появляется в списке и открывается.
## Ожидаемый результат
- Основной путь работает в едином корректном формате `CreateChannel v3`.
- На старом сервере сохраняется совместимость через fallback.
@@ -0,0 +1,24 @@
# Каналы: новые табы + поиск/просмотр + подписка в канале
- краткое описание фичи:
- На вкладке «Каналы» верхние табы переставлены в порядок: `Чаты`, `Каналы`, `Мои`.
- По умолчанию открывается вкладка `Каналы` (центральная).
- Нижняя кнопка на вкладке `Каналы` переименована: `Найти канал` (вместо `Подписаться на канал`).
- В модальном поиске канала оставлен сценарий выбора по `user/channel` (и по имени канала через существующие подсказки), без использования формата `blockchain:number:hash`.
- В результатах поиска канала добавлена явная кнопка `Просмотреть` для перехода в канал.
- На экране канала кнопка `Подписаться на канал` показывается только если пользователь ещё не подписан.
- После подтверждённой подписки кнопка исчезает (повторный ререндер с обновлённым feed).
- что именно проверять:
- Открыть `Каналы`: убедиться, что порядок табов `Чаты | Каналы | Мои`, активна по умолчанию `Каналы`.
- На `Каналы` проверить нижнюю кнопку `Найти канал`.
- В `Найти канал` выбрать канал и нажать `Просмотреть`: должен открыться экран канала.
- На экране чужого канала (без подписки) нажать `Подписаться на канал`, подтвердить `Ок`.
- Убедиться, что после успешной подписки кнопка `Подписаться на канал` исчезает.
- ожидаемый результат:
- Пользователь находит и открывает канал через `Найти канал``Просмотреть`.
- Подписка выполняется на экране канала и не предлагается повторно сразу после успеха.
- статус:
- pending
@@ -0,0 +1,31 @@
# UI-ошибки в сервер + новый сценарий персонального публичного чата
- краткое описание фичи:
- Добавлена настройка разработчика «Отправлять ошибки на сервер» (по умолчанию выключена), с локальным сохранением.
- При включенной настройке UI-ошибки отправляются в `CallDeliveryReport` с `type=ui_error` и отдельным кодом `UI_RUNTIME_ERROR`.
- После успешной отправки показывается toast: «Ошибка отправлена на сервер · <login> · <время>».
- Для вкладки `Чаты` кнопка переименована в «Новый персональный публичный чат».
- Добавлен отдельный экран создания персонального публичного чата:
- фиксированный `channelType=100`;
- ввод логина второго пользователя;
- поиск/подсказки пользователей;
- создание канала с каноническим логином из сервера;
- опциональное описание;
- предупреждение про публичность и хранение в блокчейне.
- Обновлены правила документации: имена pending-файлов и описания новых фич рекомендованы на русском.
- что именно проверять:
- В `Настройки разработчика` открыть «Отправлять ошибки на сервер», включить и сохранить.
- Сгенерировать UI-ошибку и проверить:
- появляется toast об отправке;
- запись появляется в `logs/call-delivery-events.log` с `type=ui_error`.
- На вкладке `Каналы -> Чаты` проверить новую кнопку «Новый персональный публичный чат».
- Проверить форму создания: подсказки логинов, создание с правильным регистром логина, описание и инфоблок.
- ожидаемый результат:
- UI-ошибки начинают отправляться только при включенной настройке.
- В логах сервера UI-ошибки отделяются по типу `ui_error`.
- Персональный публичный чат создается через отдельный, более понятный пользовательский сценарий.
- статус:
- pending
@@ -0,0 +1,32 @@
# Мультиаккаунты + улучшенный поиск каналов/чатов
- краткое описание фичи:
- Добавлен long-press на кнопку `Профиль` в нижнем тулбаре.
- По удержанию открывается меню с кнопкой `Сменить профиль`.
- Добавлен экран `Сменить профиль`:
- список уже добавленных аккаунтов;
- пометка активного аккаунта;
- переключение на другой аккаунт;
- кнопки `Добавить аккаунт (Войти)` и `Добавить аккаунт (Регистрация)`.
- Сессии нескольких аккаунтов сохраняются локально; при `authorizeSession` аккаунт добавляется/обновляется в списке.
- Выход из текущей сессии теперь удаляет только текущий аккаунт из списка аккаунтов.
- В `Новый персональный публичный чат` разрешён логин длиной 1 символ (тип канала `100`).
- В `Найти канал` улучшен UX:
- кнопка `Найти`;
- поиск пользователей по началу логина;
- понятные сообщения при отсутствии совпадений/каналов.
- что именно проверять:
- Удержать кнопку `Профиль` и открыть `Сменить профиль`.
- Проверить отображение активного аккаунта и переключение на другой.
- Проверить сценарий `Добавить аккаунт` (войти/зарегистрироваться) без вылета из текущего аккаунта.
- Проверить создание персонального публичного чата с логином из 1 символа.
- Проверить поиск каналов по префиксу логина и работу кнопки `Найти`.
- ожидаемый результат:
- Переключение между несколькими аккаунтами работает из UI.
- Поиск каналов стал управляемым и понятным.
- Ограничение 3+ символов для персонального чата снято.
- статус:
- pending
@@ -0,0 +1,38 @@
# Персональный публичный чат: исправление формата блока и обратный канал
- краткое описание фичи:
- Исправлен формат отправки `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