Files
sfera-new/README.md
Veronika Smirnova 24a6ff74b5 feat: migrate from useAuth to AuthContext for centralized auth state
• Полная миграция 64 компонентов с useAuth на AuthContext
• Исправлена race condition в SMS регистрации
• Улучшена SSR совместимость с таймаутами
• Удалена дублирующая система регистрации
• Обновлена документация архитектуры аутентификации

Технические изменения:
- AuthContext.tsx: централизованная система состояния
- auth-flow.tsx: убрана агрессивная логика logout
- confirmation-step.tsx: исправлена передача телефона
- page.tsx: добавлена синхронизация состояния
- 64 файла: миграция useAuth → useAuthContext

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 17:21:52 +03:00

345 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🌐 Sfera - B2B Marketplace Platform
**Комплексная платформа для управления бизнес-процессами в сфере электронной коммерции**
[![Next.js](https://img.shields.io/badge/Next.js-15.4.1-black?logo=next.js)](https://nextjs.org/)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue?logo=typescript)](https://www.typescriptlang.org/)
[![Prisma](https://img.shields.io/badge/Prisma-6.12.0-2D3748?logo=prisma)](https://www.prisma.io/)
[![GraphQL](https://img.shields.io/badge/GraphQL-16.11.0-E10098?logo=graphql)](https://graphql.org/)
## 🎯 Последние обновления
**⚡ 19.09.2025 - Миграция системы аутентификации**
-**useAuth → AuthContext** - переход на централизованную архитектуру
-**64 компонента** мигрированы
-**Race conditions** исправлены
-**SSR совместимость** улучшена
- 📚 **Документация**: `/docs/presentation-layer/AUTHENTICATION_ARCHITECTURE.md`
## 🏗️ Архитектура системы
Sfera - это многомодульная B2B платформа, объединяющая четыре типа участников:
- **👔 Seller** - Продавцы на маркетплейсах
- **📦 Fulfillment** - Фулфилмент-центры
- **🚛 Logist** - Логистические компании
- **🏪 Wholesale** - Поставщики товаров
## 🚀 Быстрый старт
### Предварительные требования
- Node.js 20+
- PostgreSQL 14+
- npm или yarn
### Установка
```bash
# Клонирование проекта
git clone <repository-url>
cd sfera
# Установка зависимостей
npm install
# Настройка базы данных
cp .env.example .env
# Отредактируйте DATABASE_URL в .env
# Инициализация БД
npx prisma db push
npm run db:seed
# Запуск в режиме разработки
npm run dev
```
Приложение будет доступно по адресу: http://localhost:3000
### 👤 Администратор по умолчанию
При первом запуске автоматически создается администратор:
- **Логин**: `admin`
- **Пароль**: `admin123`
- **Email**: `admin@sferav.com`
⚠️ **ОБЯЗАТЕЛЬНО смените пароль после первого входа для безопасности!**
### 🔄 Автоматическая инициализация БД
**Система умно инициализируется:**
- ✅ Проверяет существующие данные
-Не создает дубликаты при повторном запуске
- ✅ Автоматическая инициализация при первом запуске приложения
- ✅ Создание 20 базовых категорий товаров
- ✅ Настройка администратора системы
## 🔧 Команды разработчика
### 🏃‍♂️ Основные команды
```bash
# Разработка с turbopack
npm run dev
# Сборка для production
npm run build
# Запуск production
npm start
```
### 🗄️ База данных
```bash
# Инициализация БД (создание админа и категорий)
npm run db:seed
# Полный сброс БД и пересоздание данных
npm run db:reset
# Применение миграций и генерация клиента
npx prisma db push
# Prisma Studio
npx prisma studio
```
### 🧹 Качество кода
```bash
# Проверка ESLint
npm run lint
# Исправление ESLint ошибок
npm run lint:fix
# Форматирование Prettier
npm run format
# Проверка форматирования
npm run format:check
```
## 🏛️ Архитектура проекта
### 📁 Структура каталогов
```
src/
├── app/ # Next.js App Router
│ ├── api/ # API endpoints
│ ├── dashboard/ # Дашборды по типам организаций
│ ├── supplies/ # Управление поставками
│ ├── wb-warehouse/ # Склад WB (только для SELLER)
│ ├── employees/ # Система управления персоналом
│ ├── market/ # B2B маркетплейс
│ └── ...
├── components/ # React компоненты
│ ├── dashboard/ # Компоненты дашбордов
│ ├── supplies/ # Компоненты поставок
│ ├── wb-warehouse/ # Компоненты интерфейса склада WB
│ ├── auth/ # Система авторизации
│ └── ui/ # UI Kit на Radix UI
├── graphql/ # GraphQL слой
│ ├── typedefs.ts # GraphQL схема
│ ├── resolvers.ts # Резолверы
│ ├── security/ # Система безопасности
│ └── ...
├── lib/ # Утилиты и конфигурации
│ └── seed-init.ts # Автоматическая инициализация
├── hooks/ # React хуки
├── services/ # Внешние сервисы
│ └── wildberries-service.ts # Интеграция с API WB
└── types/ # TypeScript типы
```
### 🔧 Технологический стек
#### **Frontend**
- **Next.js 15.4.1** - React фреймворк с App Router
- **React 19.1.0** - UI библиотека
- **TypeScript 5** - Типизация
- **Tailwind CSS 4** - Стилизация
- **Radix UI** - Компоненты интерфейса
#### **Backend & API**
- **GraphQL** - API слой с Apollo Server
- **Prisma 6.12.0** - ORM для работы с БД
- **PostgreSQL** - Основная база данных
- **JWT** - Авторизация и безопасность
#### **Интеграции**
- **Wildberries API** - Интеграция с маркетплейсом
- **Ozon API** - Интеграция с маркетплейсом
- **DaData API** - Валидация ИНН организаций и работа с реквизитами
- **SMS Aero** - Отправка SMS-сообщений для авторизации
- **AWS S3** - Хранение файлов
#### **Инфраструктура**
- **Docker** - Контейнеризация
- **Husky** - Git hooks
- **ESLint + Prettier** - Линтинг и форматирование
## 🏪 Новые возможности
### 🛒 **Склад Wildberries для селлеров**
**Доступ:** Только для пользователей с типом организации **SELLER**
Новый раздел позволяет:
- **📊 Просмотр остатков** товаров на всех складах WB в реальном времени
- **📈 Статистика по складам** - общее количество товаров, остатки, товары в пути
- **🔍 Фильтрация и поиск** товаров по названию, артикулу, бренду
- **📋 Детальная информация** по каждому складу отдельно
- **🎨 Красивые карточки товаров** с изображениями и статусами остатков
#### Как использовать:
1. Настройте API ключ Wildberries в разделе "Настройки" → "API"
2. Перейдите в раздел "Склад ВБ" в боковом меню
3. Система автоматически загрузит актуальные остатки с вашего аккаунта WB
#### Технические особенности:
- ✅ Интеграция с официальным API Wildberries
- ✅ Поддержка всех типов складов WB
- ✅ Кэширование данных для быстрой работы
- ✅ Адаптивный дизайн в стиле платформы
## 🔐 Система безопасности
Проект включает комплексную систему безопасности:
- **🛡️ Аудит действий** - Логирование всех операций
- **🔍 Обнаружение угроз** - Автоматическое выявление подозрительной активности
- **🚨 Мониторинг доступа** - Контроль доступа к данным партнеров
- **📊 Security Dashboard** - Панель управления безопасностью
## 📊 Основные модули
### 🏪 **Управление поставками**
- Многоуровневая система заказов
- Интеграция поставщик → логистика → фулфилмент
- Отслеживание статусов поставок
- Управление рецептурами товаров
### 👥 **Система партнерства**
- Реферальная программа
- Автоматическое создание бизнес-партнерств
- Управление контрагентами
- B2B мессенджер
### 📈 **Аналитика и статистика**
- Статистика продаж Wildberries/Ozon
- Анализ рекламных кампаний
- Складская аналитика
- Отчеты по сотрудникам
### 🏭 **Управление складом**
- Система остатков и резервов
- Управление возвратами ПВЗ
- Складская логистика
- Инвентаризация
## 🔌 API и интеграции
### GraphQL API
Основной API построен на GraphQL со следующими возможностями:
- **Аутентификация** через SMS-коды
- **CRUD операции** для всех сущностей
- **Система прав доступа** по типу организации
- **Real-time подписки** для чатов
### Внешние API
- **Wildberries API** - статистика, товары, кампании, остатки склада
- **Ozon API** - интеграция с маркетплейсом
- **DaData API** - валидация ИНН организаций, получение реквизитов компаний
- **SMS Aero** - отправка SMS-кодов для авторизации пользователей
## 🧪 Тестирование и отладка
### Скрипты отладки
```bash
# Анализ данных фулфилмента
node scripts/analyze-fulfillment-supplies.cjs
# Проверка типов поставок
node scripts/check-supply-order-types.cjs
# Очистка тестовых данных
node scripts/clear-fulfillment-data.cjs
```
### Health Check
```bash
# Проверка состояния API
curl http://localhost:3000/api/health
```
## 📚 Документация
Детальная документация проекта находится в:
- **`docs/`** - Новая модульная архитектура документации
- **`legacy-rules/`** - Бизнес-правила и процессы
- **`CLAUDE.md`** - Системные правила разработки
- **`prisma/seed.js`** - Скрипт инициализации БД
## 🐳 Docker
```bash
# Сборка образа
docker build -t sfera .
# Запуск с docker-compose
docker-compose up -d
```
## 🤝 Участие в разработке
### Стиль кода
- **ESLint** - обязательное соблюдение правил
- **Prettier** - автоматическое форматирование
- **TypeScript** - строгая типизация
- **Conventional Commits** - стандарт коммитов
### Git Flow
1. Создание feature-ветки
2. Разработка с соблюдением линтинга
3. Тестирование изменений
4. Pull Request с ревью
## 🔧 Переменные окружения
```bash
# База данных
DATABASE_URL="postgresql://user:pass@localhost:5432/sfera"
# JWT
JWT_SECRET="your-secret-key"
# API ключи маркетплейсов
WB_API_TOKEN="wildberries-token"
OZON_CLIENT_ID="ozon-client-id"
OZON_API_KEY="ozon-api-key"
# DaData API
DADATA_API_KEY="dadata-api-key"
DADATA_SECRET="dadata-secret"
# SMS Aero
SMS_AERO_EMAIL="your-email"
SMS_AERO_API_KEY="sms-aero-api-key"
# S3 для файлов
AWS_ACCESS_KEY_ID="access-key"
AWS_SECRET_ACCESS_KEY="secret-key"
```
## 📞 Поддержка
При возникновении проблем:
1. Проверьте статус систем через `/api/health`
2. Просмотрите логи в `dev.log`
3. Обратитесь к документации в `docs/`
---
**Лицензия:** Частная разработка
**Статус:** Активная разработка
**Версия:** 0.2.0