feat(fulfillment-supplies): миграция формы создания поставок расходников на v2 систему
- Обновлена форма создания поставок расходников фулфилмента для использования v2 GraphQL API - Заменена мутация CREATE_SUPPLY_ORDER на CREATE_FULFILLMENT_CONSUMABLE_SUPPLY - Обновлена структура input данных под новый формат v2 - Сделано поле логистики опциональным - Добавлено поле notes для комментариев к поставке - Обновлены refetchQueries на новые v2 запросы - Исправлены TypeScript ошибки в интерфейсах - Удалена дублирующая страница consumables-v2 - Сохранен оригинальный богатый UI интерфейс формы (819 строк) - Подтверждена работа с новой таблицей FulfillmentConsumableSupplyOrder Технические изменения: - src/components/fulfillment-supplies/create-fulfillment-consumables-supply-v2.tsx - основная форма - src/components/fulfillment-supplies/fulfillment-supplies-layout.tsx - обновлена навигация - Добавлены недостающие поля quantity и ordered в интерфейсы продуктов - Исправлены импорты и зависимости Результат: форма полностью интегрирована с v2 системой поставок, которая использует отдельные таблицы для каждого типа поставок согласно новой архитектуре. 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
368
README.md
368
README.md
@ -1,18 +1,186 @@
|
||||
# Sfera V - Управление бизнесом
|
||||
# 🌐 Sfera - B2B Marketplace Platform
|
||||
|
||||
Платформа для управления различными типами бизнеса: фулфилмент, селлеры, логистика, оптовики.
|
||||
**Комплексная платформа для управления бизнес-процессами в сфере электронной коммерции**
|
||||
|
||||
## Новые возможности
|
||||
[](https://nextjs.org/)
|
||||
[](https://www.typescriptlang.org/)
|
||||
[](https://www.prisma.io/)
|
||||
[](https://graphql.org/)
|
||||
|
||||
### 🏪 Склад Wildberries для селлеров
|
||||
## 🏗️ Архитектура системы
|
||||
|
||||
Новый раздел для селлеров, позволяющий:
|
||||
Sfera - это многомодульная B2B платформа, объединяющая четыре типа участников:
|
||||
|
||||
- **Просмотр остатков** товаров на всех складах WB в реальном времени
|
||||
- **Статистика по складам** - общее количество товаров, остатки, товары в пути
|
||||
- **Фильтрация и поиск** товаров по названию, артикулу, бренду
|
||||
- **Детальная информация** по каждому складу отдельно
|
||||
- **Красивые карточки товаров** с изображениями и статусами остатков
|
||||
- **👔 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"
|
||||
@ -20,73 +188,149 @@
|
||||
3. Система автоматически загрузит актуальные остатки с вашего аккаунта WB
|
||||
|
||||
#### Технические особенности:
|
||||
- Интеграция с официальным API Wildberries
|
||||
- Поддержка всех типов складов WB
|
||||
- Кэширование данных для быстрой работы
|
||||
- Адаптивный дизайн в стиле платформы
|
||||
- ✅ Интеграция с официальным API Wildberries
|
||||
- ✅ Поддержка всех типов складов WB
|
||||
- ✅ Кэширование данных для быстрой работы
|
||||
- ✅ Адаптивный дизайн в стиле платформы
|
||||
|
||||
## База данных и инициализация
|
||||
## 🔐 Система безопасности
|
||||
|
||||
### 🛠 Команды для работы с БД
|
||||
Проект включает комплексную систему безопасности:
|
||||
|
||||
- `npm run db:seed` - Инициализация БД (создание админа и категорий)
|
||||
- `npm run db:reset` - Полный сброс БД и пересоздание данных
|
||||
- `npm run postinstall` - Генерация Prisma Client
|
||||
- **🛡️ Аудит действий** - Логирование всех операций
|
||||
- **🔍 Обнаружение угроз** - Автоматическое выявление подозрительной активности
|
||||
- **🚨 Мониторинг доступа** - Контроль доступа к данным партнеров
|
||||
- **📊 Security Dashboard** - Панель управления безопасностью
|
||||
|
||||
### 👤 Администратор по умолчанию
|
||||
## 📊 Основные модули
|
||||
|
||||
При первом запуске автоматически создается админ:
|
||||
- **Логин**: `admin`
|
||||
- **Пароль**: `admin123`
|
||||
- **Email**: `admin@sferav.com`
|
||||
### 🏪 **Управление поставками**
|
||||
- Многоуровневая система заказов
|
||||
- Интеграция поставщик → логистика → фулфилмент
|
||||
- Отслеживание статусов поставок
|
||||
- Управление рецептурами товаров
|
||||
|
||||
⚠️ **Обязательно смените пароль после первого входа!**
|
||||
### 👥 **Система партнерства**
|
||||
- Реферальная программа
|
||||
- Автоматическое создание бизнес-партнерств
|
||||
- Управление контрагентами
|
||||
- B2B мессенджер
|
||||
|
||||
### 📂 Категории товаров
|
||||
### 📈 **Аналитика и статистика**
|
||||
- Статистика продаж Wildberries/Ozon
|
||||
- Анализ рекламных кампаний
|
||||
- Складская аналитика
|
||||
- Отчеты по сотрудникам
|
||||
|
||||
Автоматически создается 20 базовых категорий:
|
||||
- Одежда и обувь, Косметика и парфюмерия, Дом и сад
|
||||
- Детские товары, Спорт и отдых, Электроника
|
||||
- И другие популярные категории...
|
||||
### 🏭 **Управление складом**
|
||||
- Система остатков и резервов
|
||||
- Управление возвратами ПВЗ
|
||||
- Складская логистика
|
||||
- Инвентаризация
|
||||
|
||||
### 🔄 Автоматическая инициализация
|
||||
## 🔌 API и интеграции
|
||||
|
||||
База данных инициализируется автоматически при:
|
||||
- Первом запуске приложения
|
||||
- Запуске команды `npm run db:seed`
|
||||
- Сбросе БД через `npm run db:reset`
|
||||
### GraphQL API
|
||||
Основной API построен на GraphQL со следующими возможностями:
|
||||
- **Аутентификация** через SMS-коды
|
||||
- **CRUD операции** для всех сущностей
|
||||
- **Система прав доступа** по типу организации
|
||||
- **Real-time подписки** для чатов
|
||||
|
||||
Система умно проверяет существующие данные и не создает дубликаты.
|
||||
### Внешние API
|
||||
- **Wildberries API** - статистика, товары, кампании, остатки склада
|
||||
- **Ozon API** - интеграция с маркетплейсом
|
||||
- **DaData API** - валидация ИНН организаций, получение реквизитов компаний
|
||||
- **SMS Aero** - отправка SMS-кодов для авторизации пользователей
|
||||
|
||||
## Структура проекта
|
||||
|
||||
- `src/app/wb-warehouse/` - Страница склада WB
|
||||
- `prisma/seed.js` - Скрипт инициализации БД
|
||||
- `src/lib/seed-init.ts` - Автоматическая инициализация
|
||||
- `src/components/wb-warehouse/` - Компоненты интерфейса склада
|
||||
- `src/services/wildberries-service.ts` - Интеграция с API WB
|
||||
|
||||
## Технологии
|
||||
|
||||
- Next.js 15
|
||||
- React 18
|
||||
- TypeScript
|
||||
- GraphQL
|
||||
- Prisma
|
||||
- TailwindCSS
|
||||
- Shadcn/ui
|
||||
|
||||
## Установка и запуск
|
||||
## 🧪 Тестирование и отладка
|
||||
|
||||
### Скрипты отладки
|
||||
```bash
|
||||
npm install
|
||||
npm run dev
|
||||
# Анализ данных фулфилмента
|
||||
node scripts/analyze-fulfillment-supplies.cjs
|
||||
|
||||
# Проверка типов поставок
|
||||
node scripts/check-supply-order-types.cjs
|
||||
|
||||
# Очистка тестовых данных
|
||||
node scripts/clear-fulfillment-data.cjs
|
||||
```
|
||||
|
||||
## API интеграции
|
||||
### Health Check
|
||||
```bash
|
||||
# Проверка состояния API
|
||||
curl http://localhost:3000/api/health
|
||||
```
|
||||
|
||||
- Wildberries API для получения остатков и информации о складах
|
||||
- DaData для работы с организациями
|
||||
- SMS Aero для отправки SMS
|
||||
## 📚 Документация
|
||||
|
||||
Доступ к разделу "Склад ВБ" имеют только пользователи с типом организации "SELLER".
|
||||
Детальная документация проекта находится в:
|
||||
- **`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
|
Reference in New Issue
Block a user