Files
docs/development/local-workspace.md
T

8.3 KiB
Raw Blame History

Локальное окружение и восстановление

WealthLedger поставляется как локальное приложение: frontend работает в браузере, backend обслуживает API и обращается к SQLite и внешним источникам. Это описание предпосылок и ограничений работы, без привязки к устройству исходного кода. Production-развёртывание в текущую поставку не входит.

Подготовка backend

Локальная серверная среда использует Node 22 и SQLite. Для работы нужны:

Параметр Назначение и ограничение
Адрес локальной базы Одинаковая база используется при подготовке схемы и работе приложения; относительный адрес зависит от рабочей директории процесса
Разрешённый origin frontend Определяет browser-источник, которому разрешён доступ к API с credentials
Порт API По умолчанию 3000
Секрет подписи сессий Секрет не короче 32 символов; отличается от ключа шифрования подключения
Ключ шифрования подключения 32 байта в base64; требуется для чтения сохранённого T-Bank token
Параметры интеграции Адрес T-Bank, лимит запросов и при необходимости доверенный CA; ограничения

T-Bank token вводится пользователем через интерфейс после входа и не является общим параметром окружения. Существующая база и её ключ шифрования сохраняются при обновлении. До миграции необходима резервная копия; восстановление проверяется на отдельной копии. Потеря или замена ключа не является безвредным сбросом: прежнее подключение нельзя расшифровать новым ключом.

Известное ограничение: проверка новой временной SQLite-базы 12 сентября 2026 года под Node 22 воспроизвела Schema engine error до создания схемы. Полный первый запуск на чистой базе пока не подтверждён; пользовательская база в этой проверке не использовалась. Условия пересмотра — проверка backend.

В development доступна локальная Swagger UI при стандартном порте API. Она показывает контракт, но не доказывает доступность T-Bank и не используется frontend как источник данных во время работы.

Подготовка frontend

Стандартные адреса: API http://localhost:3000, frontend http://localhost:5173. Адрес API в клиенте должен совпадать с работающим сервером, а разрешённый origin backend — с origin браузера. Смена порта требует согласованного изменения адресов. Смесь localhost и 127.0.0.1 меняет границу browser cookie и CORS.

Локальный HTTP предполагает development-режим backend: в других режимах refresh-cookie получает Secure flag и требует защищённого соединения. Поведение сессии описано в Authentication.

Первый сценарий

  1. Пользователь регистрируется или входит. Новый профиль получает сессию; после перезагрузки приложение пытается её восстановить.
  2. В настройках пользователь сохраняет собственный T-Bank Invest token. Успех означает проверенный доступ к брокеру и сохранённое подключение.
  3. В разделе «Счета» доступны отдельный и общий портфель. Отсутствие доступных счетов является допустимым пустым результатом.
  4. «Доходы» показывают полученные выплаты, «События» — будущие.
  5. При выходе локальная сессия и её клиентский кэш очищаются.

Без T-Bank token доступны регистрация, вход и состояние отсутствующего подключения. Это не подтверждает работу финансовых сценариев.

Если запуск или сценарий не работает

Симптом Проверка и безопасное восстановление
Порт занят Адрес действующего процесса или выбранный свободный порт должен совпадать с настройками клиента и разрешённым origin
Ошибка CORS или сессия теряется после reload Согласованность адресов, hostname и режима cookie проверяется на стороне browser и backend
Ошибка подготовки базы Установленный blocker не устраняется удалением пользовательской базы или обходом миграций; сохраняются версия среды и текст ошибки
TBANK_NOT_CONNECTED Подключение создаётся в настройках текущего пользователя
INVALID_TBANK_TOKEN После проверки token и прав у брокера подключение заменяется через настройки
TBANK_UNAVAILABLE, TLS или rate limit Проверяются сеть, лимиты и доверенный CA; проверка TLS сохраняется
НКР/MOEX недоступен при работающих остальных секциях Состояние источника и повторная попытка относятся к конкретной секции; недоступность не означает отсутствия рейтинга
Подключение не читается после смены ключа Восстанавливается прежний ключ из защищённой копии; если он утрачен, собственный token вводится заново через настройки

HTTP-запросы связываются с безопасными журналами через X-Request-ID. Пароли, cookies, Authorization и broker token не включаются в диагностический отчёт. Ограничения журналирования — ADR 008.

Проверка первого изменения

Успешная сборка, запуск и прохождение сценария — разные доказательства. Границы проверки описаны для frontend, backend и HTTP-контракта. Завершённость результата учитывает фактические проверки и остающиеся ограничения.