From 2c2aad1355597a84721bfbeb85030a68ffdaf673c24cee131ab2c8df57b1c478 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Wed, 3 Jun 2026 14:20:45 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=D0=B5=20?= =?UTF-8?q?=D1=84=D0=B8=D1=87=D0=B8=20=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D1=81=D1=91=D0=BD=20QR-=D0=BF=D0=BB=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dev_Docs/Future_Features/README.md | 1 + ...3_подключение_других_устройств_через_qr.md | 45 +++++++++++++++++++ .../2026-05-31_1826_qr_перенос_ключей.md | 25 ----------- .../2026-05-24_1940_solana-user-pda-v2.md | 23 ---------- .../2026-05-24_2035_solana-init-registracii.md | 26 ----------- .../2026-05-25_1545_otchet_private_zaprosov_v_gruppu.md | 26 ----------- .../2026-05-25_1556_voice_otchet_s_audio.md | 23 ---------- .../2026-05-25_2057_voice_timeout_i_oshibki.md | 19 -------- 8 files changed, 46 insertions(+), 142 deletions(-) create mode 100644 Dev_Docs/Future_Features/medium/2026-06-03_подключение_других_устройств_через_qr.md delete mode 100644 Dev_Docs/Pending_Features/2026-05-31_1826_qr_перенос_ключей.md delete mode 100644 Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_1940_solana-user-pda-v2.md delete mode 100644 Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_2035_solana-init-registracii.md delete mode 100644 Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1545_otchet_private_zaprosov_v_gruppu.md delete mode 100644 Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1556_voice_otchet_s_audio.md delete mode 100644 Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_2057_voice_timeout_i_oshibki.md diff --git a/Dev_Docs/Future_Features/README.md b/Dev_Docs/Future_Features/README.md index 09da4a9..2b80f0d 100644 --- a/Dev_Docs/Future_Features/README.md +++ b/Dev_Docs/Future_Features/README.md @@ -36,6 +36,7 @@ - `medium/2026-05-24_1140_репосты_в_каналах_и_тредах.md` - репосты в каналах и тредах. - `medium/2026-05-25_1106_shine_balance_wallet.md` - кошелёк и пополнение баланса сияния через блокчейн. - `medium/2026-05-26_0029_esp32s3_file_storage.md` - ESP32S3 как личное файловое хранилище SHiNE для файлов переписок и вложений. +- `medium/2026-06-03_подключение_других_устройств_через_qr.md` - довести подключение других устройств через QR: сейчас заготовка есть, но сценарий работает нестабильно и его нужно будет отдельно доделать. - `medium/2026-06-02_сессионные_саб_серверы_в_pda.md` - несколько саб-серверов пользователя как типизированные сессии в PDA с версией записи. ### Дальнее будущее diff --git a/Dev_Docs/Future_Features/medium/2026-06-03_подключение_других_устройств_через_qr.md b/Dev_Docs/Future_Features/medium/2026-06-03_подключение_других_устройств_через_qr.md new file mode 100644 index 0000000..61424ab --- /dev/null +++ b/Dev_Docs/Future_Features/medium/2026-06-03_подключение_других_устройств_через_qr.md @@ -0,0 +1,45 @@ +# Подключение других устройств через QR + +- Горизонт: + `medium` +- Ориентир: + позже, не сейчас +- Статус: + `future` + +## Зачем нужна фича + +Нужно нормально довести подключение другого устройства через QR-код. Сейчас есть полуготовая заготовка, но сценарий работает нестабильно и требует отдельной доработки. + +## Что уже есть + +- В UI уже есть экраны: + - `shine-UI/js/pages/connect-device-view.js` + - `shine-UI/js/pages/device-qr-view.js` +- Есть сервис переноса ключей через QR: + - `shine-UI/js/services/qr-key-transfer-service.js` +- Логика частично собрана, но её нельзя считать завершённой или надёжной. + +## Что нужно будет сделать потом + +1. Проверить и довести формат QR-передачи. +2. Проверить сканирование и ручной ввод QR-текста. +3. Проверить перенос `device`, `blockchain`, `root` ключей только по реальному наличию на исходном устройстве. +4. Проверить, что после переноса очищается старая история нужного логина и не ломается вход. +5. Отдельно проверить сценарий без `BarcodeDetector`. +6. Довести экран подтверждения на втором устройстве. + +## Что сейчас важно + +- Не считать эту часть готовой. +- Не возвращать её в активную разработку без отдельной команды пользователя. +- Если вернёмся к задаче, сначала нужно понять, что именно уже работает, а что нет, и потом починить целиком. + +## Что обновить при возврате + +- `Dev_Docs/Pending_Features/README.md` +- `shine-UI/js/pages/connect-device-view.js` +- `shine-UI/js/pages/device-qr-view.js` +- `shine-UI/js/services/qr-key-transfer-service.js` +- документацию по ключам, если формат переноса меняется + diff --git a/Dev_Docs/Pending_Features/2026-05-31_1826_qr_перенос_ключей.md b/Dev_Docs/Pending_Features/2026-05-31_1826_qr_перенос_ключей.md deleted file mode 100644 index 4b1fa24..0000000 --- a/Dev_Docs/Pending_Features/2026-05-31_1826_qr_перенос_ключей.md +++ /dev/null @@ -1,25 +0,0 @@ -# QR-перенос ключей между устройствами - -## Краткое описание - -Добавлен перенос логина и сохранённых на устройстве ключей через QR-код без дополнительного шифрования QR. - -Передаются только те ключи, которые реально есть на устройстве: `device`, `blockchain`, `root`. - -## Что проверить - -- На авторизованном устройстве открыть «Устройства» → «Подключить устройство». -- Убедиться, что недоступные ключи нельзя выбрать. -- Нажать «Показать QR-код» и проверить, что QR содержит текущий логин и выбранные доступные ключи. -- На другом устройстве открыть вход и нажать «Отсканировать QR-код». -- После сканирования проверить экран подтверждения: показывается отсканированный логин и список полученных ключей. -- Нажать «Да» и проверить, что локальная история старого логина очищена, а вход выполнен под логином из QR. -- Проверить ручной ввод QR-текста как запасной сценарий для браузеров без `BarcodeDetector`. - -## Ожидаемый результат - -Новое устройство входит под логином из QR-кода, сохраняет полученные ключи и не показывает локальную историю старого логина. - -## Статус - -pending diff --git a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_1940_solana-user-pda-v2.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_1940_solana-user-pda-v2.md deleted file mode 100644 index 8211810..0000000 --- a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_1940_solana-user-pda-v2.md +++ /dev/null @@ -1,23 +0,0 @@ -# Solana user_pda v2 - -## Краткое описание - -Функции `create_user_pda` и `update_user_pda` в Solana-модуле переведены на блочный формат пользовательской PDA-записи `format_major = 2`. - -## Что проверять - -- Создание `user_pda` через `create_user_pda`. -- Обновление `user_pda` через `update_user_pda`. -- Проверку root-подписи записи. -- Проверку подписи `LastBlockState` ключом `blockchain_public_key`. -- Корректную запись блоков `RootKey`, `DeviceKey`, `BlockchainRegistry`, `ServerProfile`, `AccessServers`, `TrustedState`. -- Рост `paid_limit_bytes`, `used_bytes` и `last_block_number` без возможности уменьшения. -- Совместимость тестового клиента с актуальной IDL после `anchor build`. - -## Ожидаемый результат - -Пользовательская PDA создается и обновляется в формате `format_major = 2`, содержит один основной блокчейн `blockchain_type = 1` с именем `-001`, а неверные подписи или попытки уменьшить счетчики отклоняются программой. - -## Статус - -pending diff --git a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_2035_solana-init-registracii.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_2035_solana-init-registracii.md deleted file mode 100644 index 8c9e868..0000000 --- a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-24_2035_solana-init-registracii.md +++ /dev/null @@ -1,26 +0,0 @@ -# Solana: init регистрации + деплой обязательных программ - -- дата: 2026-05-24 20:35 (Europe/Moscow) -- статус: `pending` - -## Кратко - -Добавлена dev-страница в UI для вызова `init_users_economy_config` программы `shine_users` через подключённый кошелёк Phantom. -Задеплоены и зафиксированы адреса двух обязательных программ регистрации: `shine_users` и `shine_login_guard`. - -## Что проверять вручную - -1. Открыть UI и перейти в `Настройки разработчика`. -2. Нажать `Solana: init регистрации`. -3. Подключить Phantom devnet-кошелёк. -4. Выполнить `init_users_economy_config`. -5. Проверить отображение статуса и хэша транзакции. -6. Повторно нажать init и убедиться, что корректно показывается "уже инициализировано". -7. Выполнить тестовую регистрацию пользователя и убедиться, что CPI-вызов `shine_login_guard` не падает. - -## Ожидаемый результат - -- Первая транзакция выполняется успешно (если PDA ещё не создан). -- Вторая попытка возвращает ожидаемую ошибку о повторной инициализации. -- UI не падает, статус понятный, Program ID отображается корректно. -- Регистрация пользователя проходит с подключённым `shine_login_guard`. diff --git a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1545_otchet_private_zaprosov_v_gruppu.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1545_otchet_private_zaprosov_v_gruppu.md deleted file mode 100644 index 89fff13..0000000 --- a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1545_otchet_private_zaprosov_v_gruppu.md +++ /dev/null @@ -1,26 +0,0 @@ -# Отчёт private-запросов агента в группу - -## Что сделано - -После успешной обработки задачи из личного чата Айдара Telegram-бот агента отправляет итоговую копию в группу `@shine_writing`: - -- первым сообщением исходный запрос; -- вторым сообщением, reply на первое, финальный ответ Codex. - -Промежуточные статусы выполнения в группу не дублируются. - -## Что проверять - -1. Отправить боту личный текстовый запрос. -2. Дождаться полного ответа в личном чате. -3. Проверить, что в `@shine_writing` появилось сообщение с запросом. -4. Проверить, что итоговый ответ опубликован reply на это сообщение. -5. Отправить личный voice-запрос и проверить, что в отчёте есть распознанный текст. - -## Ожидаемый результат - -Личный чат работает как раньше, а группа получает только итоговую пару сообщений по завершённой задаче. - -## Статус - -pending diff --git a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1556_voice_otchet_s_audio.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1556_voice_otchet_s_audio.md deleted file mode 100644 index 9c7d627..0000000 --- a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_1556_voice_otchet_s_audio.md +++ /dev/null @@ -1,23 +0,0 @@ -# Отчёт voice/audio-запросов с исходным файлом - -## Краткое описание - -Публичный отчёт по приватным voice/audio-запросам агента должен отправлять исходный Telegram voice/audio-файл с подписью, где указан распознанный текст. `file_id` не должен показываться пользователям в тексте отчёта. - -## Что проверить - -1. Отправить боту приватный voice-запрос от Айдара. -2. Дождаться обработки Codex. -3. Проверить группу/канал публичных отчётов. -4. Повторить сценарий для audio-файла, если он используется. - -## Ожидаемый результат - -- В публичном отчёте появляется исходное голосовое/audio-сообщение. -- В подписи к нему есть распознанный текст. -- В отчёте нет строки `Голосовой file_id` и самого `file_id`. -- Итоговый ответ Codex отправляется ответом на сообщение с исходным файлом. - -## Статус - -pending diff --git a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_2057_voice_timeout_i_oshibki.md b/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_2057_voice_timeout_i_oshibki.md deleted file mode 100644 index 6f68ec0..0000000 --- a/Dev_Docs/Pending_Features/вроде сделанное/2026-05-25_2057_voice_timeout_i_oshibki.md +++ /dev/null @@ -1,19 +0,0 @@ -# Улучшенная обработка длинных voice/audio - -## Что сделано -- Увеличены и вынесены в `.env` тайм-ауты скачивания Telegram-файла и OpenAI-распознавания. -- Добавлены подробные логи стадий распознавания: старт, скачивание, размер файла, завершение, причина ошибки. -- Ошибки voice/audio теперь показываются пользователю как ошибка распознавания с понятной причиной. - -## Как проверять -- Отправить короткое голосовое сообщение и убедиться, что оно распознаётся и передаётся в Codex. -- Отправить длинное голосовое сообщение и убедиться, что сервис не падает на прежнем коротком тайм-ауте. -- Смоделировать ошибку распознавания или временно указать неверный OpenAI-ключ и проверить текст ошибки в Telegram. - -## Ожидаемый результат -- При успешном распознавании пользователь видит распознанный текст и задача уходит в Codex. -- При ошибке пользователь видит, что не удалось именно распознать voice/audio, и получает конкретную причину. -- В логах сервиса видны стадия и техническая причина сбоя. - -## Статус -pending