E-Commerce
JoyCity Enterprise Platform
Бизнес-платформа для управления операциями на маркетплейсе Wildberries, созданная для сотрудников компании, работающих с несколькими аккаунтами WB Seller (юридическими лицами). Система состоит из четырёх сервисов — API на Rust/Axum, фронтенд на Next.js, реверс-прокси на Python/FastAPI для портала WB Seller и фоновый сервис синхронизации данных на Rust — всё оркестрировано через Docker Swarm за Traefik с автоматическим SSL.
Аутентификация и контроль доступа
Двухтокенная JWT-система (2ч access + 30д refresh) с HttpOnly кросс-доменными cookies, автоматическим прозрачным обновлением токенов и поддержкой мультисессий с возможностью отзыва. 10+ ролей с защитой администратора на уровне базы данных, предотвращающей манипуляции с ролью ADMIN через API. wb-proxy делегирует все криптографические операции бэкенду через внутренний API, защищённый общим секретным ключом.
Управление пользователями и аккаунтами
Полный CRUD для пользователей с назначением ролей, сменой пароля, редактированием имени и загрузкой аватара (обработка на клиенте до 512×512 JPEG, хранение в S3). Поддержка нескольких аккаунтов WB Seller (юрлиц), каждый со своим набором учётных данных портала WB и API-ключом. Двойная валидация учётных данных — WB cookies через прокси + API-ключ через бэкенд — перед созданием аккаунта. Пользователь привязан к одному аккаунту в каждый момент времени.
Назначение артикулов
Ежемесячное назначение артикулов (nmId) по пользователям с валидацией по синхронизированным данным заказов. Поддержка массового импорта из Excel. Артикулы определяют, что каждый пользователь видит в отфильтрованном портале WB Seller. Инвалидация кэша через общий Redis при изменении назначений.
Фильтрованный прокси WB Seller
Реверс-прокси на wb-seller.{domain}, позволяющий менеджерам работать с реальным UI портала WB Seller, но видеть только назначенные им артикулы. Фильтрует JSON-ответы, Excel-экспорты, заказы, остатки, поставки, аналитику, отзывы, скидки, отчёты и рекламные кампании CMP. Вычисляет персональный агрегированный финансовый баланс из локально синхронизированных данных отчётов. Обрабатывает URL-перезапись по 15+ поддоменам WB, JS-инъекции для браузерных перезаписей, кэширование статики и автоматическое обновление WB-токенов.
Синхронизация данных WB
Фоновый сервис на Rust, непрерывно синхронизирующий заказы, продажи и детализированные финансовые отчёты из WB Statistics API для всех зарегистрированных аккаунтов продавцов. Хранит данные as-is без трансформаций. Обрабатывает rate limiting, пагинацию, инкрементальную синхронизацию, изоляцию ошибок по аккаунтам и дедупликацию.
KPI-рейтинг и логистика
Платформа ранжирует менеджеров по KPI-метрикам на основе данных Wildberries и выполняет планирование логистических операций офис-склад.
Инфраструктура и DevOps
Бэкап PostgreSQL в AWS S3 по запросу из UI. Swagger UI на /api/swagger-ui под ролью SWAGGER. Мониторинг Prometheus + Grafana с экспортёрами для PostgreSQL и Redis, плюс метрики Traefik. GitLab CI/CD с zero-downtime rolling updates через Docker Swarm с автоматическим откатом при провале health check. HTTPS-only с HSTS, заголовками безопасности и non-root контейнерами.
Ключевые особенности
- 4-сервисная архитектура — Rust API + Next.js фронтенд + Python прокси + Rust sync worker
- Фильтрованный портал WB — реальный UI Wildberries с видимостью артикулов по пользователям
- Двухтокенный JWT — HttpOnly кросс-доменная авторизация с прозрачным обновлением
- 6-ролевой RBAC — защита администратора на уровне БД
- Фоновая синхронизация — непрерывный сбор заказов, продаж и финансовых отчётов
- KPI-рейтинг — метрики эффективности менеджеров из данных WB
- Массовый импорт из Excel — ежемесячное назначение артикулов с инвалидацией кэша
- Zero-downtime деплой — rolling updates Docker Swarm с авто-откатом
- Тёмная/светлая тема — переключаемая пользователем через Tailwind CSS
- EN/RU локализация — полная интернационализация фронтенда