SHA256
Добавить кошелек блокчейна и озвучивание агента
This commit is contained in:
@@ -99,11 +99,24 @@
|
||||
"blockchainName": "anya-001",
|
||||
"solanaKey": "BASE64_32_PUBLIC_KEY",
|
||||
"blockchainKey": "BASE64_32_PUBLIC_KEY",
|
||||
"deviceKey": "BASE64_32_PUBLIC_KEY"
|
||||
"deviceKey": "BASE64_32_PUBLIC_KEY",
|
||||
"serverLastGlobalNumber": 128,
|
||||
"serverLastGlobalHash": "4f...ab",
|
||||
"serverBlockchainSizeBytes": 45212,
|
||||
"serverBlockchainSizeLimitBytes": 100000,
|
||||
"serverBlocksCount": 129
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Дополнительные серверные поля в `GetUser`:
|
||||
|
||||
- `serverLastGlobalNumber` — номер последнего блока в пользовательском блокчейне на сервере;
|
||||
- `serverLastGlobalHash` — hash последнего блока (hex-строка 64 символа);
|
||||
- `serverBlockchainSizeBytes` — текущий размер пользовательского блокчейна на сервере в байтах;
|
||||
- `serverBlockchainSizeLimitBytes` — текущий лимит размера блокчейна на сервере в байтах;
|
||||
- `serverBlocksCount` — количество блоков в пользовательском блокчейне на сервере;
|
||||
|
||||
### Успешный ответ: пользователя нет
|
||||
|
||||
```json
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
| Операция | Раздел документации | Кратко |
|
||||
| --- | --- | --- |
|
||||
| `AddUser` | `01_User_Registration_API.md` | отключено (`410 / ADD_USER_DISABLED`) |
|
||||
| `GetUser` | `01_User_Registration_API.md` | чтение/проверка пользователя |
|
||||
| `GetUser` | `01_User_Registration_API.md` | чтение/проверка пользователя + server-состояние его блокчейна |
|
||||
| `SearchUsers` | `01_User_Registration_API.md` | поиск логинов по префиксу |
|
||||
| `AuthChallenge` | `02_Authentication_API.md` | challenge для создания новой сессии |
|
||||
| `CreateAuthSession` | `02_Authentication_API.md` | создание новой авторизованной сессии |
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
# Кошелёк: лимит/закрепление блокчейна Сияния
|
||||
|
||||
- статус: `pending`
|
||||
|
||||
## Кратко что сделано
|
||||
|
||||
- На экране `Кошелёк -> Блокчейн Сияния` добавлены 2 слоя данных:
|
||||
- фактическое состояние цепочки на сервере (`кол-во блоков`, `размер`, `крайний блок`, `hash`, `размер крайнего блока`);
|
||||
- закреплённое состояние в Solana PDA (`лимит`, `использовано`, `остаток`, `крайний блок`, `hash`).
|
||||
- Добавлены действия:
|
||||
- `Закрепить в Solana` — обновляет PDA до текущего состояния серверной цепочки;
|
||||
- `Увеличить лимит` — увеличивает `paid_limit_bytes` в PDA с учётом цены из economy PDA.
|
||||
- Если `rootKey`/`blockchainKey` не сохранены локально, экран запрашивает пароль, восстанавливает ключи через стандартную derivation-логику и предлагает сохранить их в зашифрованный контейнер.
|
||||
|
||||
## Что проверять вручную
|
||||
|
||||
1. Открыть `Кошелёк -> Блокчейн Сияния` под авторизованным пользователем.
|
||||
2. Проверить, что в блоке "Фактическое состояние на сервере" отображаются:
|
||||
- число блоков;
|
||||
- размер цепочки;
|
||||
- номер/хэш крайнего блока;
|
||||
- размер крайнего блока.
|
||||
3. Проверить, что в блоке "Закреплено в Solana" отображаются:
|
||||
- лимит;
|
||||
- израсходовано;
|
||||
- остаток;
|
||||
- номер/хэш крайнего закреплённого блока.
|
||||
4. Нажать `Закрепить в Solana` и убедиться, что:
|
||||
- приходит успешная транзакция;
|
||||
- после обновления Solana-показатели подтягиваются до серверных (или максимально близко по актуальному состоянию).
|
||||
5. Нажать `Увеличить лимит`, ввести значение кратное шагу, подтвердить списание и проверить:
|
||||
- лимит увеличился;
|
||||
- отображение цены/списания соответствует economy PDA.
|
||||
6. Повторить пункты 4-5 в сценарии, когда `rootKey`/`blockchainKey` не сохранены, и проверить:
|
||||
- появляется запрос пароля;
|
||||
- после ввода пароля операции выполняются;
|
||||
- предложение сохранить ключи показывается.
|
||||
|
||||
## Ожидаемый результат
|
||||
|
||||
- Экран корректно разделяет "фактическое состояние на сервере" и "закреплённое в Solana".
|
||||
- Обе операции (`Закрепить в Solana`, `Увеличить лимит`) выполняются без ошибок при валидных данных.
|
||||
- Восстановление ключей через пароль работает, а без нужных ключей операция не выполняется молча.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Озвучивание ответов агента
|
||||
|
||||
## Что сделано
|
||||
|
||||
В локальный Telegram-бот-сервис агента-кодера добавлены персональные настройки озвучивания финальных ответов:
|
||||
|
||||
- `/voice_on` включает озвучивание для текущего Telegram-пользователя;
|
||||
- `/voice_off` выключает озвучивание для текущего Telegram-пользователя;
|
||||
- `/voice_status` показывает текущее состояние;
|
||||
- если озвучивание включено, после текстового финального ответа сервис генерирует voice-файл через OpenAI TTS и отправляет его в Telegram;
|
||||
- длинные ответы делятся на несколько фрагментов озвучки.
|
||||
|
||||
## Что проверять
|
||||
|
||||
1. Перезапустить `shine-agent-bot-coder`.
|
||||
2. Отправить `/voice_status` и убедиться, что по умолчанию озвучивание выключено.
|
||||
3. Отправить `/voice_on`.
|
||||
4. Дать простую задачу агенту и проверить, что пришёл полный текстовый ответ и voice-файл с тем же ответом.
|
||||
5. Отправить `/voice_off`.
|
||||
6. Дать ещё одну простую задачу и проверить, что приходит только текст.
|
||||
7. При возможности проверить второго whitelist-пользователя: его настройка должна быть независимой.
|
||||
|
||||
## Ожидаемый результат
|
||||
|
||||
Настройка хранится персонально по username и сохраняется после перезапуска сервиса. При включённой настройке Telegram получает текстовый ответ и дополнительное voice-сообщение с озвучкой. При выключенной настройке поведение остаётся прежним.
|
||||
|
||||
## Статус
|
||||
|
||||
pending
|
||||
Reference in New Issue
Block a user