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:
Veronika Smirnova
2025-08-25 07:52:46 +03:00
parent d05f0a6a93
commit 0e3ffc179c
34 changed files with 5795 additions and 565 deletions

368
README.md
View File

@ -1,18 +1,186 @@
# Sfera V - Управление бизнесом
# 🌐 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/)
### 🏪 Склад 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