SHA256
chore: зафиксированы все текущие изменения проекта
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# Репосты в каналах и тредах
|
||||
|
||||
- Статус:
|
||||
`future`
|
||||
|
||||
- Горизонт:
|
||||
`medium`
|
||||
|
||||
- Ориентир:
|
||||
1-2 месяца
|
||||
|
||||
- Решение от 2026-05-24:
|
||||
Репосты временно убраны из активной разработки. Фича уже была частично реализована, но не доведена до финальной проверки. Чтобы она не мешала запуску проекта, пользовательский вход в репосты отключён в UI, а сервер больше не принимает новые `TEXT_REPOST` через `AddBlock`.
|
||||
|
||||
## Что должна делать фича
|
||||
|
||||
Репост должен позволять взять сообщение из канала или треда и опубликовать его в один из своих каналов с комментарием.
|
||||
|
||||
Ожидаемый пользовательский сценарий после возврата к задаче:
|
||||
|
||||
1. Пользователь открывает сообщение в канале или треде.
|
||||
2. Нажимает `Репост`.
|
||||
3. Выбирает один из своих каналов.
|
||||
4. Добавляет комментарий.
|
||||
5. Отправляет репост.
|
||||
6. В целевом канале появляется новый пост-репост.
|
||||
7. У репоста есть переход к исходному сообщению через действие `Оригинал`.
|
||||
|
||||
## Что уже есть в коде
|
||||
|
||||
- В блокчейн-формате зарезервирован и описан подтип `TEXT_REPOST (30)`.
|
||||
- Парсер блокчейна умеет распознавать тело репоста как `TextLineBody`.
|
||||
- В UI есть функция сборки тела репоста:
|
||||
`shine-UI/js/services/auth-service.js`, `makeTextRepostBodyBytes`.
|
||||
- В UI есть клиентская операция:
|
||||
`shine-UI/js/services/auth-service.js`, `addBlockRepost`.
|
||||
- В экране канала был обработчик репоста:
|
||||
`shine-UI/js/pages/channel-view.js`, `onRepost`.
|
||||
- В экране треда был обработчик репоста:
|
||||
`shine-UI/js/pages/channel-thread-view.js`, `onRepost`.
|
||||
- Серверная выдача каналов и тредов частично учитывает `TEXT_REPOST` и target-поля:
|
||||
`targetBlockchainName`, `targetBlockNumber`, `targetBlockHash`.
|
||||
- В списке подписок `TEXT_REPOST` считается публикацией канала.
|
||||
|
||||
## Что сейчас отключено
|
||||
|
||||
- В `shine-UI/js/pages/channel-view.js` кнопка `Репост` больше не создаётся и не добавляется в список действий сообщения.
|
||||
- В `shine-UI/js/pages/channel-thread-view.js` кнопка `Репост` больше не создаётся и не добавляется в список действий ответа/сообщения треда.
|
||||
- В `shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java` добавлена явная временная блокировка:
|
||||
если новый блок имеет `type=1` и `subType=TEXT_REPOST (30)`, `AddBlock` возвращает ошибку `repost_disabled`.
|
||||
|
||||
## Что осталось активным намеренно
|
||||
|
||||
- Константа `TEXT_REPOST (30)` остаётся в коде и документации как зарезервированный формат.
|
||||
- Парсер блокчейна продолжает знать формат `TEXT_REPOST`, чтобы не потерять уже написанную основу и не ломать потенциальное чтение старых тестовых данных.
|
||||
- Код формирования репоста в `auth-service.js` не удалён: его можно будет использовать как основу при возвращении к задаче.
|
||||
- Код отображения target-полей и перехода к оригиналу не удалён: он нужен для будущей проверки и возможной совместимости с уже созданными тестовыми блоками.
|
||||
|
||||
## Почему это не лежит в Pending_Features
|
||||
|
||||
`Dev_Docs/Pending_Features/` предназначена для фич, которые уже реализованы и ждут ручной проверки.
|
||||
|
||||
Репосты сейчас не подходят под этот статус: они не должны проверяться как готовая фича, потому что пользовательский сценарий временно закрыт, а серверная запись новых репостов заблокирована. Поэтому старый pending-файл удалён, а задача перенесена сюда как будущая.
|
||||
|
||||
## Что сделать при возврате к реализации
|
||||
|
||||
1. Решить, остаётся ли формат `TEXT_REPOST (30)` финальным.
|
||||
2. Если формат меняется, заранее предупредить пользователя и получить отдельное подтверждение на изменение блокчейн-формата.
|
||||
3. Вернуть UI-кнопки репоста в:
|
||||
- `shine-UI/js/pages/channel-view.js`;
|
||||
- `shine-UI/js/pages/channel-thread-view.js`.
|
||||
4. Снять временную блокировку `repost_disabled` в:
|
||||
`shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java`.
|
||||
5. Проверить `auth-service.js`:
|
||||
- `makeTextRepostBodyBytes`;
|
||||
- `addBlockRepost`;
|
||||
- актуализацию вершины блокчейна перед `AddBlock`;
|
||||
- корректность target-полей исходного сообщения.
|
||||
6. Проверить серверное чтение:
|
||||
- `GetChannelMessages`;
|
||||
- `GetMessageThread`;
|
||||
- отображение `targetBlockchainName`, `targetBlockNumber`, `targetBlockHash`.
|
||||
7. Добавить или обновить тесты на успешный репост и отказ некорректных target-полей.
|
||||
8. Обновить документацию:
|
||||
- `Dev_Docs/Blockchain/11_TEXT_Blocks.md`;
|
||||
- `Dev_Docs/Blockchain/CHANGELOG.md`;
|
||||
- `Dev_Docs/API/04_Add_Block_to_Blockchain_API.md`;
|
||||
- документы API чтения каналов/тредов, если изменятся поля ответа.
|
||||
9. После реализации перенести задачу из `Dev_Docs/Future_Features/` в `Dev_Docs/Pending_Features/` как фичу, требующую ручной проверки.
|
||||
|
||||
## Минимальный чек-лист ручной проверки в будущем
|
||||
|
||||
1. Репост из сообщения канала в свой канал.
|
||||
2. Репост из ответа в треде в свой канал.
|
||||
3. Ошибка при попытке репоста в чужой канал.
|
||||
4. Переход `Оригинал` из репоста к исходному сообщению.
|
||||
5. Корректное отображение комментария к репосту.
|
||||
6. Корректная работа после перезагрузки страницы.
|
||||
7. Отсутствие поломки обычных постов, ответов, лайков и отправки ссылки.
|
||||
@@ -0,0 +1,62 @@
|
||||
# Кошелёк и пополнение баланса сияния
|
||||
|
||||
- Горизонт:
|
||||
`medium`
|
||||
- Ориентир:
|
||||
среднесрочно
|
||||
- Статус:
|
||||
`proposal`
|
||||
|
||||
## Кратко
|
||||
|
||||
Нужно добавить кошелёк для внутреннего баланса сияния и пополнение этого баланса через блокчейн-логику проекта. Задача связана с регистрацией пользователя и будущим учётом баланса.
|
||||
|
||||
## Предполагаемый сценарий
|
||||
|
||||
1. Пользователь регистрируется и получает/подключает нужные кошельки.
|
||||
2. В интерфейсе появляется баланс сияния.
|
||||
3. Пользователь открывает пополнение баланса сияния.
|
||||
4. Система создаёт или принимает блокчейн-операцию пополнения.
|
||||
5. После подтверждения баланса UI обновляет значение.
|
||||
|
||||
## Что нужно продумать
|
||||
|
||||
1. Что именно является единицей баланса сияния.
|
||||
2. Где хранится состояние баланса: в существующем блокчейне SHiNE, Solana-модуле или комбинированно.
|
||||
3. Какая операция отвечает за пополнение.
|
||||
4. Нужно ли делать отдельную регистрацию кошелька сияния или использовать существующую регистрацию пользователя.
|
||||
5. Как баланс восстанавливается после перезагрузки клиента.
|
||||
6. Какие права нужны для пополнения и списания.
|
||||
7. Нужна ли история операций баланса.
|
||||
|
||||
## Вопросы перед реализацией
|
||||
|
||||
1. Пополнение баланса сияния должно идти через основной блокчейн SHiNE или через Solana-программу.
|
||||
2. Нужна ли конвертация из SOL/AR в сияние.
|
||||
3. Кто может выпускать или начислять сияние.
|
||||
4. Нужно ли поддерживать перевод сияния между пользователями.
|
||||
5. Нужны ли лимиты, комиссии или статусы подтверждения.
|
||||
6. Какой экран должен показывать баланс: регистрация, профиль, кошелёк или отдельная страница.
|
||||
7. Нужно ли отображать неподтверждённый баланс отдельно от подтверждённого.
|
||||
|
||||
## Важное ограничение
|
||||
|
||||
Если для баланса сияния потребуется новый формат блокчейн-блока или изменение существующего формата, перед реализацией нужно отдельно предупредить пользователя и получить явное подтверждение на изменение формата блокчейна.
|
||||
|
||||
Если потребуется новый серверный API или изменение существующих `op`, перед реализацией нужно отдельно предупредить пользователя и получить явное подтверждение на изменение API.
|
||||
|
||||
## Документы, которые обновить при реализации
|
||||
|
||||
- `Dev_Docs/Blockchain/`, если появятся или изменятся блоки баланса.
|
||||
- `Dev_Docs/Blockchain/CHANGELOG.md`, если меняется блокчейн-формат.
|
||||
- `Dev_Docs/API/`, если меняется серверный API.
|
||||
- `Dev_Docs/Pending_Features/` - добавить файл ручной проверки после реализации.
|
||||
- Документацию Solana-регистрации, если баланс будет связан с Solana-модулем.
|
||||
|
||||
## Минимальная проверка в будущем
|
||||
|
||||
1. Новый пользователь видит корректный начальный баланс.
|
||||
2. Пополнение создаёт правильную операцию.
|
||||
3. Баланс обновляется после подтверждения.
|
||||
4. После перезагрузки UI баланс остаётся корректным.
|
||||
5. Ошибочные или повторные операции не начисляют баланс дважды.
|
||||
Reference in New Issue
Block a user