Conversation
Инфраструктура подключения:
- VITE_USE_MOCKS=true/false — переключение мок/реальный бэк в .env
- BACKEND_URL — адрес бэка, подставляется в nginx через envsubst в рантайме (без пересборки образа)
- VITE_API_URL намеренно пустой в docker — nginx сам проксирует /api/* → бэк
Новые файлы:
- .env.example — шаблон с описанием каждой переменной
- deploy/.env.example — шаблон для разработчиков бэка
- src/vite-env.d.ts — типы для import.meta.env.*
Изменения в API-слое:
- api/client.ts: BASE читается из VITE_API_URL (fallback → '/api'), добавлен ApiError со статус-кодом, обработка 401 → Token.clear() + redirect
- main.tsx: мок подключается только при VITE_USE_MOCKS=true (dynamic import, в prod-бандл не попадает)
- vite.config.ts: dev proxy с rewrite — /api/auth/login → /login, /api/profile → /profile
Docker:
- Dockerfile: ARG/ENV для VITE_USE_MOCKS, VITE_API_URL, VITE_ENV перед npm run build + CMD с envsubst
- docker-compose.yml: build args из .env, BACKEND_URL пробрасывается в nginx
- deploy/docker-compose.yaml: добавлен frontend-сервис с app-net network
Типы и сторы:
- types/index.ts: AuthResponse под реальный контракт бэка (access_token, refresh_token, profile), User — clientNumber/contractNumber/isReadOnly
- auth-store.ts: Token.set(response.access_token)
- все 8 сторов: добавлено error: string | null + set({ error, loading: false }) в catch
Фиксы совместимости (TypeScript-ошибки из-за расхождения типов после патчей):
- mock-fetch.ts: поля sender/body/createdAt/deposit приведены к типам
- Notifications.tsx: typeConfig fallback для неизвестных типов
- Payments.tsx: ключ typeConfig payment → deposit
- NetworkStatus.tsx: добавлен ключ info в typeConfig
- Profile/Header/Support/SpeedTest: исправлены имена полей под новые типы
Не реализовано (оставлено на следующий этап):
- отдельный nginx-сервис в deploy/docker-compose.yaml
- систематический перенос прямых fetch() из Claude Code среза через api/client.ts
…mments
Два непокрытых бага в сторах и чистка AI-шума.
Исправления:
- profile-store.ts: catch молча глотал ошибку fetch — добавлен error state
catch { set({ loading: false }) }
→ catch (e: unknown) { set({ error: e instanceof Error ? e.message : '...', loading: false }) }
- speedtest-store.ts: аналогичный баг в двух местах
fetch → catch без error state
run → catch без error state
Оба исправлены по тому же паттерну
Рефакторинг:
- Удалены AI-шумовые комментарии из src/**/*.{ts,tsx}:
пустые //, декоративные разделители /* ── X ── */,
закомментированный старый код, однострочники дублирующие код
- Сохранены: JSDoc, TODO/FIXME, @ts-ignore, WHY-комментарии с контекстом
sudo-odner
self-requested a review
April 1, 2026 13:27
sudo-odner
reviewed
Apr 1, 2026
sudo-odner
reviewed
Apr 1, 2026
sudo-odner
approved these changes
Apr 1, 2026
stepan41k
approved these changes
Apr 2, 2026
|
|
||
| location /api/ { | ||
| add_header 'Access-Control-Allow-Origin' 'http://localhost:3000' always; | ||
| add_header 'Access-Control-Allow-Origin' 'http://localhost' always; |
Collaborator
There was a problem hiding this comment.
Nginx работает как API gateway – принимает все входящие запросы с интернета (пока на http://localhost == http://localhost:80) и наш сайт который так же работет и слушает на 80 порту. Когда от лица сайта мы хотим получить данные с сервера мы кидаем запрос с http://localhost, если в header будет http://localhost:3000 то CORS не даст сделать запрос на сервер, так как http://localhost(наш сайт) != http://localhost:3000.
Ты упоминал, что когда локально тестировал свои приложения у тебя работало на :3000 – это скорее всего из-за npm run dev который запускает на http://localhost:3000, а не на http://localhost
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MR: Связка сервисов и настройка взаимодействия
Frontend (xlurr)
VITE_*черезARG/ENV. Подготовлены.env.example.Backend: миграции и БД (stepan41k)
Backend — миграции, конфиг и деплой (sudo-odner)
CONFIG_PATH. Настройки FireBird передаются через ENV.