files
This commit is contained in:
153
logic_full.md
153
logic_full.md
@ -1,153 +0,0 @@
|
||||
# ЛОГИКА ПОСТАВКИ РАСХОДНИКОВ ФУЛФИЛМЕНТА
|
||||
|
||||
> **ВНИМАНИЕ**: Данный файл содержит детальную логику процесса создания поставки расходников фулфилмента.
|
||||
> Любые изменения в этом процессе должны быть согласованы и отражены в основном файле логики системы.
|
||||
|
||||
---
|
||||
|
||||
## 4. ПРОЦЕСС СОЗДАНИЯ ПОСТАВКИ РАСХОДНИКОВ ФУЛФИЛМЕНТА
|
||||
|
||||
### 4.1 Описание процесса
|
||||
|
||||
Фулфилмент-центры могут заказывать расходные материалы для своих операций напрямую у поставщиков. Этот процесс отличается от основного бизнес-процесса тем, что фулфилмент выступает как заказчик, а не как исполнитель услуг.
|
||||
|
||||
**ВАЖНОЕ РАЗЛИЧИЕ**: Расходники фулфилмента - это материалы, которые фулфилмент-центр заказывает для своих внутренних операций (упаковка, хранение, обработка товаров). Они отличаются от расходников селлера, которые селлер заказывает для своих товаров.
|
||||
|
||||
### 4.2 Участники процесса
|
||||
|
||||
- **Фулфилмент-центр** - заказчик расходников
|
||||
- **Поставщик (WHOLESALE)** - поставщик расходных материалов
|
||||
- **Логистическая компания (LOGIST)** - доставка товаров от поставщика к фулфилменту
|
||||
- **Система** - автоматическая обработка заказов
|
||||
|
||||
### 4.3 Этапы процесса создания поставки расходников фулфилмента
|
||||
|
||||
#### Этап 1: Инициация заказа фулфилментом
|
||||
|
||||
1. **Переход к созданию заказа**: Фулфилмент заходит в раздел "Входящие поставки" → "Расходники фулфилмента" → "Создать поставку"
|
||||
2. **Выбор поставщика**: Выбор контрагента с типом "WHOLESALE" из списка партнеров
|
||||
3. **Поиск поставщика**: Возможность поиска по названию, полному названию или ИНН
|
||||
4. **Просмотр каталога**: Просмотр товаров выбранного поставщика
|
||||
|
||||
#### Этап 2: Формирование заказа
|
||||
|
||||
5. **Поиск товаров**: Поиск нужных расходников в каталоге поставщика
|
||||
6. **Выбор количества**: Указание необходимого количества для каждого товара
|
||||
7. **Добавление в корзину**: Товары добавляются в список выбранных расходников фулфилмента
|
||||
8. **Выбор логистики**: Выбор партнера-логиста для доставки товаров от поставщика
|
||||
9. **Расчет стоимости**: Автоматический расчет общей суммы заказа
|
||||
10. **Указание даты доставки**: Выбор желаемой даты поставки
|
||||
|
||||
#### Этап 3: Создание заказа в системе
|
||||
|
||||
11. **Валидация данных**: Проверка заполнения всех обязательных полей
|
||||
12. **Создание SupplyOrder**: Система создает запись заказа поставки со статусом "PENDING"
|
||||
13. **Указание получателя**: fulfillmentCenterId устанавливается как ID текущего фулфилмента
|
||||
14. **Указание логистики**: logisticsPartnerId устанавливается как ID выбранной логистической компании
|
||||
15. **Создание позиций заказа**: Создание SupplyOrderItem для каждого выбранного товара
|
||||
|
||||
#### Этап 4: Автоматическая обработка системой
|
||||
|
||||
16. **Создание расходников**: Система автоматически создает записи Supply со статусом "planned"
|
||||
17. **Установка параметров**:
|
||||
- Статус: "planned" (запланировано, ожидает одобрения)
|
||||
- Категория: из товара или "Расходники"
|
||||
- Минимальный остаток: 10% от заказанного количества
|
||||
- Текущий остаток: 0 (товар еще не поступил)
|
||||
18. **Привязка к организации**: Расходники создаются в организации фулфилмента
|
||||
19. **Отправка уведомления**: Поставщик получает уведомление о новом заказе
|
||||
|
||||
#### Этап 5: Обработка поставщиком
|
||||
|
||||
20. **Получение заявки**: Заказ появляется в кабинете поставщика в разделе "Заявки"
|
||||
21. **Рассмотрение заказа**: Поставщик может принять или отклонить заказ
|
||||
22. **Изменение статуса**: При принятии статус SupplyOrder меняется на "CONFIRMED" (подтвержден поставщиком)
|
||||
23. **Уведомление логистики**: После одобрения поставщиком заявка появляется в кабинете логистической компании
|
||||
|
||||
#### Этап 6: Обработка логистикой
|
||||
|
||||
24. **Получение заявки**: Заказ появляется в кабинете логистики в разделе "Заявки"
|
||||
25. **Рассмотрение заявки**: Логистическая компания может подтвердить или отклонить заявку на доставку
|
||||
26. **Подтверждение логистики**: При принятии логистика подтверждает возможность доставки в указанные сроки
|
||||
27. **Обновление расходников**: Supply переходят в статус "confirmed" (ожидает отгрузки)
|
||||
28. **Подготовка к отгрузке**: Поставщик готовит товар к отправке
|
||||
|
||||
#### Этап 7: Доставка и приемка
|
||||
|
||||
29. **Отгрузка товара** [**ПОСТАВЩИК**]: Поставщик физически отправляет товар логистической компании и **в системе нажимает кнопку "Отправить"** (статус SupplyOrder меняется с "CONFIRMED" на "IN_TRANSIT")
|
||||
30. **Обновление статуса расходников** [**СИСТЕМА**]: Supply переходят в статус "in-transit" (в пути)
|
||||
31. **Транспортировка** [**ЛОГИСТИКА**]: Логистическая компания доставляет товар в фулфилмент-центр
|
||||
32. **Статус "IN_TRANSIT"** [**СИСТЕМА**]: Заказ переходит в статус "в пути"
|
||||
33. **Приемка на фулфилменте** [**ФУЛФИЛМЕНТ**]: Менеджер фулфилмента принимает товар
|
||||
34. **Обновление остатков** [**ФУЛФИЛМЕНТ**]: currentStock обновляется на фактически полученное количество
|
||||
35. **Статус "DELIVERED"** [**ФУЛФИЛМЕНТ**]: Заказ завершается со статусом "доставлен"
|
||||
36. **Обновление расходников** [**СИСТЕМА**]: Supply переходят в статус "in-stock" (на складе)
|
||||
|
||||
### 4.3.1 Результат завершения процесса
|
||||
|
||||
После успешного завершения процесса (статус Supply = "in-stock"):
|
||||
|
||||
37. **Отображение на складе** [**СИСТЕМА**]: Информация о поставке автоматически отображается в разделе **"Склад" → "Статистика расходников фулфилмента"**
|
||||
38. **Отображение в расходниках фулфилмента** [**СИСТЕМА**]: Информация о поставке также отображается в подразделе **"Расходники фулфилмента"**
|
||||
39. **Доступность для использования** [**ФУЛФИЛМЕНТ**]: Расходники становятся доступными для использования в операциях фулфилмент-центра
|
||||
|
||||
**Важно**: Статус "in-stock" (на складе) означает, что расходники физически находятся на складе фулфилмента и готовы к использованию в операционной деятельности.
|
||||
|
||||
### 4.4 Особенности процесса
|
||||
|
||||
#### 4.4.1 Отличия от основного процесса
|
||||
|
||||
- **Прямое взаимодействие**: Фулфилмент напрямую заказывает у поставщика
|
||||
- **Самостоятельная приемка**: Фулфилмент принимает товар на свой склад
|
||||
- **Управление остатками**: Автоматическое управление минимальными остатками
|
||||
- **Без посредников**: Логистика может быть внешней или встроенной
|
||||
|
||||
#### 4.4.2 Типы расходников
|
||||
|
||||
- **Упаковочные материалы**: Коробки, пакеты, скотч
|
||||
- **Защитные материалы**: Пупырчатая пленка, стрейч-пленка
|
||||
- **Маркировочные материалы**: Этикетки, стикеры, маркеры
|
||||
- **Инструменты**: Ножи, степлеры, весы
|
||||
- **Расходные материалы**: Батарейки, картриджи, канцелярия
|
||||
|
||||
#### 4.4.3 Автоматизация
|
||||
|
||||
- **Автоматический расчет минимальных остатков**: 10% от заказанного количества
|
||||
- **Уведомления**: Автоматические уведомления всем участникам процесса
|
||||
- **Обновление данных**: Синхронизация статусов между всеми системами
|
||||
- **Отчетность**: Автоматическое обновление складских отчетов
|
||||
|
||||
### 4.5 Интеграция с основной системой
|
||||
|
||||
- **Единая база контрагентов**: Использование общего справочника партнеров
|
||||
- **Общие товары**: Поставщики управляют единым каталогом товаров
|
||||
- **Единая система уведомлений**: Общий мессенджер для коммуникаций
|
||||
- **Общая отчетность**: Интеграция с общей системой аналитики
|
||||
|
||||
---
|
||||
|
||||
## Статусы в процессе
|
||||
|
||||
### Статусы SupplyOrder (Заказ поставки):
|
||||
|
||||
- **PENDING** - Ожидает подтверждения поставщиком
|
||||
- **CONFIRMED** - Подтвержден поставщиком
|
||||
- **IN_TRANSIT** - В пути (логистика доставляет)
|
||||
- **DELIVERED** - Доставлен на фулфилмент
|
||||
- **CANCELLED** - Отменен
|
||||
|
||||
### Статусы Supply (Расходники):
|
||||
|
||||
- **planned** - Запланировано (ожидает одобрения поставщиком)
|
||||
- **confirmed** - Подтверждено (ожидает отгрузки после одобрения логистикой)
|
||||
- **in-transit** - В пути (товар отгружен логистической компании)
|
||||
- **in-stock** - На складе (товар принят на фулфилменте и отображается в разделах "Склад" и "Расходники фулфилмента")
|
||||
|
||||
---
|
||||
|
||||
**ВАЖНО**: Данный процесс является частью общей системы управления поставками и должен соответствовать общим принципам и правилам, описанным в основном файле логики системы.
|
||||
|
||||
---
|
||||
|
||||
_Документ создан на основе раздела 4 основного файла логики системы_
|
||||
_Статус: СПЕЦИАЛИЗИРОВАННАЯ ЛОГИКА ПРОЦЕССА_
|
788
логика.md
788
логика.md
@ -1,788 +0,0 @@
|
||||
# ЛОГИКА СИСТЕМЫ SFERA V - УПРАВЛЕНИЕ БИЗНЕСОМ
|
||||
|
||||
> **ВНИМАНИЕ**: Данный файл содержит критически важную информацию о логике работы системы.
|
||||
> Любые изменения в этом файле должны производиться только с разрешения владельца проекта.
|
||||
> Файл служит эталонным источником для понимания архитектуры и бизнес-процессов системы.
|
||||
|
||||
---
|
||||
|
||||
## 1. ОБЩАЯ АРХИТЕКТУРА СИСТЕМЫ
|
||||
|
||||
### 1.1 Концепция платформы
|
||||
|
||||
**Sfera V** - это многопользовательская B2B платформа для управления цепочками поставок, объединяющая различные типы бизнеса:
|
||||
|
||||
- **Селлеры** (продавцы на маркетплейсах)
|
||||
- **Фулфилмент-центры** (склады и логистика)
|
||||
- **Поставщики** (оптовые поставщики товаров)
|
||||
- **Логистические компании** (доставка товаров)
|
||||
|
||||
### 1.2 Технологический стек
|
||||
|
||||
- **Frontend**: Next.js 15, React 18, TypeScript
|
||||
- **Backend**: GraphQL API, Apollo Server
|
||||
- **База данных**: PostgreSQL с Prisma ORM
|
||||
- **UI**: TailwindCSS, Shadcn/ui компоненты
|
||||
- **Файловое хранилище**: AWS S3
|
||||
- **Внешние API**: Wildberries, Ozon, DaData, SMS Aero
|
||||
|
||||
---
|
||||
|
||||
## 2. ТИПЫ ОРГАНИЗАЦИЙ И КАБИНЕТЫ
|
||||
|
||||
### 2.1 Типы организаций (OrganizationType)
|
||||
|
||||
```
|
||||
SELLER - Селлер (продавец на маркетплейсах)
|
||||
FULFILLMENT - Фулфилмент-центр
|
||||
LOGIST - Логистическая компания
|
||||
WHOLESALE - Поставщик (оптовик)
|
||||
```
|
||||
|
||||
### 2.2 Структура кабинетов
|
||||
|
||||
#### 2.2.1 Админ-кабинет
|
||||
|
||||
- **Назначение**: Управление системой
|
||||
- **Функции**:
|
||||
- UI Kit (демонстрация компонентов)
|
||||
- Управление пользователями
|
||||
- Управление категориями товаров
|
||||
- Системная аналитика
|
||||
|
||||
#### 2.2.2 Кабинет Селлера
|
||||
|
||||
- **Назначение**: Продажи на маркетплейсах
|
||||
- **Модули**:
|
||||
- Мои поставки (управление заказами)
|
||||
- Склад WB (интеграция с Wildberries)
|
||||
- Статистика продаж
|
||||
- **Интеграции**: Wildberries API, Ozon API
|
||||
|
||||
#### 2.2.3 Кабинет Фулфилмента
|
||||
|
||||
- **Назначение**: Склады и обработка товаров
|
||||
- **Модули**:
|
||||
- Входящие поставки
|
||||
- Управление складом
|
||||
- Услуги фулфилмента
|
||||
- Сотрудники
|
||||
- Статистика операций
|
||||
|
||||
#### 2.2.4 Кабинет Логистики
|
||||
|
||||
- **Назначение**: Транспортные услуги
|
||||
- **Модули**:
|
||||
- Заявки на перевозки
|
||||
- Управление маршрутами
|
||||
|
||||
#### 2.2.5 Кабинет Поставщика
|
||||
|
||||
- **Назначение**: Оптовые продажи
|
||||
- **Модули**:
|
||||
- Каталог товаров
|
||||
- Отгрузки
|
||||
- Управление складом
|
||||
|
||||
### 2.3 Общие модули (доступны всем кабинетам)
|
||||
|
||||
- **Мессенджер**: Коммуникации между участниками
|
||||
- **Партнёры**: Управление контрагентами
|
||||
- **Настройки**: Профиль организации, API ключи
|
||||
|
||||
---
|
||||
|
||||
## 3. ОСНОВНОЙ БИЗНЕС-ПРОЦЕСС ПОСТАВКИ
|
||||
|
||||
### 3.1 Схема процесса
|
||||
|
||||
```
|
||||
Селлер → Маркет → Поставщик → Фулфилмент → Логистика → Селлер
|
||||
```
|
||||
|
||||
### 3.2 Детальные этапы процесса
|
||||
|
||||
#### Этап 1: Создание заявки селлером
|
||||
|
||||
1. **Вход в маркет**: Селлер заходит в раздел "Маркет"
|
||||
2. **Выбор категории**: Выбор нужной категории товаров
|
||||
3. **Выбор товара**: Выбор конкретного продукта из каталога
|
||||
4. **Указание количества**: Определение необходимого объема
|
||||
5. **Выбор услуг**: Выбор услуг фулфилмента и / или расходников фулфилмента и / или расходников селлера
|
||||
6. **Создание заявки**: Формирование заявки на поставку
|
||||
|
||||
#### Этап 2: Обработка заявки системой
|
||||
|
||||
7. **Сохранение у селлера**: Заявка появляется в "Мои поставки" → "Все" → "Товар" и "Товар"
|
||||
8. **Дублирование поставщику**: Заявка автоматически отправляется поставщику
|
||||
|
||||
#### Этап 3: Одобрение поставщиком
|
||||
|
||||
9. **Рассмотрение заявки**: Поставщик видит заявку в разделе "Заявки"
|
||||
10. **Одобрение**: Поставщик одобряет или отклоняет заявку
|
||||
11. **Обновление статуса**: Статус меняется у всех участников
|
||||
|
||||
#### Этап 4: Логистика
|
||||
|
||||
12. **Подготовка к отгрузке**: Поставщик готовит товар к отправке
|
||||
13. **Создание заявки в фулфилмент**: Заявка появляется в кабинете фулфилмента
|
||||
14. **Запрос логистики**: Заявка передается в логистическую компанию
|
||||
15. **Подтверждение логистикой**: Логист подтверждает возможность доставки
|
||||
16. **Физическая доставка**: Транспортировка товара на фулфилмент
|
||||
|
||||
#### Этап 5: Обработка на фулфилменте
|
||||
|
||||
17. **Приемка товара**: Менеджер фулфилмента принимает груз
|
||||
18. **Ввод данных хранения**: Указание места хранения, статус "Принято"
|
||||
19. **Перенос в подготовку**: Товар переходит в раздел "Подготовка"
|
||||
20. **Обновление места хранения**: Указание нового места хранения
|
||||
21. **Перенос в работу**: Товар переходит в подраздел "В работе"
|
||||
22. **Контроль качества**: Проверка количества и качества товара
|
||||
23. **Завершение работ**: При нажатии "Выполнено" товар переходит в "Выполнено"
|
||||
|
||||
#### Этап 6: Завершение
|
||||
|
||||
24. **Обновление статуса у селлера**: Селлер получает уведомление о готовности товара
|
||||
|
||||
---
|
||||
|
||||
## 4. ПРОЦЕСС СОЗДАНИЯ ПОСТАВКИ РАСХОДНИКОВ ФУЛФИЛМЕНТА
|
||||
|
||||
### 4.1 Описание процесса
|
||||
|
||||
Фулфилмент-центры могут заказывать расходные материалы для своих операций напрямую у поставщиков. Этот процесс отличается от основного бизнес-процесса тем, что фулфилмент выступает как заказчик, а не как исполнитель услуг.
|
||||
|
||||
**ВАЖНОЕ РАЗЛИЧИЕ**: Расходники фулфилмента - это материалы, которые фулфилмент-центр заказывает для своих внутренних операций (упаковка, хранение, обработка товаров). Они отличаются от расходников селлера, которые селлер заказывает для своих товаров.
|
||||
|
||||
### 4.2 Участники процесса
|
||||
|
||||
- **Фулфилмент-центр** - заказчик расходников
|
||||
- **Поставщик (WHOLESALE)** - поставщик расходных материалов
|
||||
- **Логистическая компания (LOGIST)** - доставка товаров от поставщика к фулфилменту
|
||||
- **Система** - автоматическая обработка заказов
|
||||
|
||||
### 4.3 Этапы процесса создания поставки расходников фулфилмента
|
||||
|
||||
#### Этап 1: Инициация заказа фулфилментом
|
||||
|
||||
1. **Переход к созданию заказа**: Фулфилмент заходит в раздел "Входящие поставки" → "Расходники фулфилмента" → "Создать поставку"
|
||||
2. **Выбор поставщика**: Выбор контрагента с типом "WHOLESALE" из списка партнеров
|
||||
3. **Поиск поставщика**: Возможность поиска по названию, полному названию или ИНН
|
||||
4. **Просмотр каталога**: Просмотр товаров выбранного поставщика
|
||||
|
||||
#### Этап 2: Формирование заказа
|
||||
|
||||
5. **Поиск товаров**: Поиск нужных расходников в каталоге поставщика
|
||||
6. **Выбор количества**: Указание необходимого количества для каждого товара
|
||||
7. **Добавление в корзину**: Товары добавляются в список выбранных расходников фулфилмента
|
||||
8. **Выбор логистики**: Выбор партнера-логиста для доставки товаров от поставщика
|
||||
9. **Расчет стоимости**: Автоматический расчет общей суммы заказа
|
||||
10. **Указание даты доставки**: Выбор желаемой даты поставки
|
||||
|
||||
#### Этап 3: Создание заказа в системе
|
||||
|
||||
11. **Валидация данных**: Проверка заполнения всех обязательных полей
|
||||
12. **Создание SupplyOrder**: Система создает запись заказа поставки со статусом "PENDING"
|
||||
13. **Указание получателя**: fulfillmentCenterId устанавливается как ID текущего фулфилмента
|
||||
14. **Указание логистики**: logisticsPartnerId устанавливается как ID выбранной логистической компании
|
||||
15. **Создание позиций заказа**: Создание SupplyOrderItem для каждого выбранного товара
|
||||
|
||||
#### Этап 4: Автоматическая обработка системой
|
||||
|
||||
16. **Создание расходников**: Система автоматически создает записи Supply со статусом "planned"
|
||||
17. **Установка параметров**:
|
||||
- Статус: "planned" (запланировано, ожидает одобрения)
|
||||
- Категория: из товара или "Расходники"
|
||||
- Минимальный остаток: 10% от заказанного количества
|
||||
- Текущий остаток: 0 (товар еще не поступил)
|
||||
18. **Привязка к организации**: Расходники создаются в организации фулфилмента
|
||||
19. **Отправка уведомления**: Поставщик получает уведомление о новом заказе
|
||||
|
||||
#### Этап 5: Обработка поставщиком
|
||||
|
||||
20. **Получение заявки**: Заказ появляется в кабинете поставщика в разделе "Заявки"
|
||||
21. **Рассмотрение заказа**: Поставщик может принять или отклонить заказ
|
||||
22. **Изменение статуса**: При принятии статус SupplyOrder меняется на "CONFIRMED" (подтвержден поставщиком)
|
||||
23. **Уведомление логистики**: После одобрения поставщиком заявка появляется в кабинете логистической компании
|
||||
|
||||
#### Этап 6: Обработка логистикой
|
||||
|
||||
24. **Получение заявки**: Заказ появляется в кабинете логистики в разделе "Заявки"
|
||||
25. **Рассмотрение заявки**: Логистическая компания может подтвердить или отклонить заявку на доставку
|
||||
26. **Подтверждение логистики**: При принятии логистика подтверждает возможность доставки в указанные сроки
|
||||
27. **Обновление расходников**: Supply переходят в статус "confirmed" (ожидает отгрузки)
|
||||
28. **Подготовка к отгрузке**: Поставщик готовит товар к отправке
|
||||
|
||||
#### Этап 7: Доставка и приемка
|
||||
|
||||
29. **Отгрузка товара**: Поставщик отправляет товар логистической компании
|
||||
30. **Обновление статуса расходников**: Supply переходят в статус "in-transit" (в пути)
|
||||
31. **Транспортировка**: Логистическая компания доставляет товар в фулфилмент-центр
|
||||
32. **Статус "IN_TRANSIT"**: Заказ переходит в статус "в пути"
|
||||
33. **Приемка на фулфилменте**: Менеджер фулфилмента принимает товар
|
||||
34. **Обновление остатков**: currentStock обновляется на фактически полученное количество
|
||||
35. **Статус "DELIVERED"**: Заказ завершается со статусом "доставлен"
|
||||
36. **Обновление расходников**: Supply переходят в статус "in-stock" (на складе)
|
||||
|
||||
### 4.4 Особенности процесса
|
||||
|
||||
#### 4.4.1 Отличия от основного процесса
|
||||
|
||||
- **Прямое взаимодействие**: Фулфилмент напрямую заказывает у поставщика
|
||||
- **Самостоятельная приемка**: Фулфилмент принимает товар на свой склад
|
||||
- **Управление остатками**: Автоматическое управление минимальными остатками
|
||||
- **Без посредников**: Логистика может быть внешней или встроенной
|
||||
|
||||
#### 4.4.2 Типы расходников
|
||||
|
||||
- **Упаковочные материалы**: Коробки, пакеты, скотч
|
||||
- **Защитные материалы**: Пупырчатая пленка, стрейч-пленка
|
||||
- **Маркировочные материалы**: Этикетки, стикеры, маркеры
|
||||
- **Инструменты**: Ножи, степлеры, весы
|
||||
- **Расходные материалы**: Батарейки, картриджи, канцелярия
|
||||
|
||||
#### 4.4.3 Автоматизация
|
||||
|
||||
- **Автоматический расчет минимальных остатков**: 10% от заказанного количества
|
||||
- **Уведомления**: Автоматические уведомления всем участникам процесса
|
||||
- **Обновление данных**: Синхронизация статусов между всеми системами
|
||||
- **Отчетность**: Автоматическое обновление складских отчетов
|
||||
|
||||
### 4.5 Интеграция с основной системой
|
||||
|
||||
- **Единая база контрагентов**: Использование общего справочника партнеров
|
||||
- **Общие товары**: Поставщики управляют единым каталогом товаров
|
||||
- **Единая система уведомлений**: Общий мессенджер для коммуникаций
|
||||
- **Общая отчетность**: Интеграция с общей системой аналитики
|
||||
|
||||
---
|
||||
|
||||
## 5. МОДЕЛЬ ДАННЫХ
|
||||
|
||||
### 5.1 Основные сущности
|
||||
|
||||
#### 5.1.1 Organization (Организация)
|
||||
|
||||
```sql
|
||||
- id: String (CUID)
|
||||
- inn: String (уникальный)
|
||||
- type: OrganizationType
|
||||
- name, fullName: String
|
||||
- address, addressFull: String
|
||||
- apiKeys: ApiKey[]
|
||||
- employees: Employee[]
|
||||
- products: Product[]
|
||||
- services: Service[]
|
||||
```
|
||||
|
||||
#### 5.1.2 Product (Товар)
|
||||
|
||||
```sql
|
||||
- id: String (CUID)
|
||||
- name: String
|
||||
- article: String
|
||||
- price: Decimal
|
||||
- quantity: Int
|
||||
- type: ProductType (PRODUCT/CONSUMABLE)
|
||||
- categoryId: String
|
||||
- organizationId: String
|
||||
- images: Json
|
||||
```
|
||||
|
||||
#### 5.1.3 Supply (Поставка)
|
||||
|
||||
```sql
|
||||
- id: String (CUID)
|
||||
- name: String
|
||||
- price: Decimal
|
||||
- quantity: Int
|
||||
- status: String (planned/in-transit/delivered/in-stock)
|
||||
- organizationId: String
|
||||
```
|
||||
|
||||
#### 5.1.4 SupplyOrder (Заказ поставки)
|
||||
|
||||
```sql
|
||||
- id: String (CUID)
|
||||
- partnerId: String
|
||||
- status: SupplyOrderStatus
|
||||
- totalAmount: Decimal
|
||||
- deliveryDate: DateTime
|
||||
- items: SupplyOrderItem[]
|
||||
```
|
||||
|
||||
### 5.2 Статусы заказов
|
||||
|
||||
```
|
||||
PENDING - Ожидает подтверждения
|
||||
CONFIRMED - Подтвержден
|
||||
IN_TRANSIT - В пути
|
||||
DELIVERED - Доставлен
|
||||
CANCELLED - Отменен
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. ПРОЦЕССЫ СОЗДАНИЯ ПОСТАВОК СЕЛЛЕРАМИ
|
||||
|
||||
### 5.1 Описание процессов
|
||||
|
||||
Селлеры имеют несколько способов создания поставок в зависимости от источника товаров и типа поставки.
|
||||
|
||||
### 5.2 Типы поставок селлеров
|
||||
|
||||
#### 5.2.1 Поставка через карточки товаров
|
||||
|
||||
**Процесс**: Селлер → Мои поставки → Создать поставку → Карточки
|
||||
|
||||
1. **Выбор типа**: Селлер выбирает "Карточки" как источник товаров
|
||||
2. **Интеграция с WB**: Система загружает карточки товаров из Wildberries API
|
||||
3. **Выбор товаров**: Селлер выбирает нужные карточки из своего каталога WB
|
||||
4. **Настройка количества**: Указание количества для каждой карточки
|
||||
5. **Выбор услуг**: Выбор услуг фулфилмента и расходников
|
||||
6. **Выбор фулфилмента**: Выбор фулфилмент-центра для обработки
|
||||
7. **Указание даты**: Установка даты поставки
|
||||
8. **Создание поставки**: Формирование WildberriesSupply в системе
|
||||
|
||||
#### 5.2.2 Поставка через поставщиков
|
||||
|
||||
**Процесс**: Селлер → Мои поставки → Создать поставку → Поставщик
|
||||
|
||||
1. **Выбор типа**: Селлер выбирает "Поставщик" как источник товаров
|
||||
2. **Выбор поставщика**: Выбор из списка контрагентов типа WHOLESALE
|
||||
3. **Просмотр каталога**: Просмотр товаров выбранного поставщика
|
||||
4. **Выбор товаров**: Добавление товаров в корзину с указанием количества
|
||||
5. **Выбор фулфилмента**: Выбор фулфилмент-центра для доставки
|
||||
6. **Создание заказа**: Формирование SupplyOrder через основной процесс
|
||||
|
||||
#### 5.2.3 Поставка расходников селлера
|
||||
|
||||
**Процесс**: Селлер → Расходники → Создать поставку
|
||||
|
||||
1. **Выбор поставщика**: Выбор поставщика расходников (WHOLESALE)
|
||||
2. **Выбор расходников**: Выбор необходимых расходных материалов **для селлера**
|
||||
3. **Выбор фулфилмента**: Обязательный выбор фулфилмент-центра для доставки
|
||||
4. **Создание заказа**: Формирование SupplyOrder с типом CONSUMABLE
|
||||
|
||||
**Важно**: Расходники селлера отличаются от расходников фулфилмента назначением и получателем. Расходники селлера заказываются селлером для своих товаров, но доставляются в фулфилмент-центр.
|
||||
|
||||
### 5.3 Особенности процессов селлера
|
||||
|
||||
#### 5.3.1 Прямое создание поставки
|
||||
|
||||
- **DirectSupplyCreation**: Создание поставки с выбранными товарами
|
||||
- **Расчет стоимости**: Автоматический расчет общей стоимости товаров и услуг
|
||||
- **Валидация**: Проверка наличия всех обязательных полей
|
||||
- **Интеграция**: Сохранение данных в WildberriesSupply и WildberriesSupplyCard
|
||||
|
||||
#### 5.3.2 Управление объемами и весом
|
||||
|
||||
- **Расчет объема**: Автоматический расчет объема товаров для логистики
|
||||
- **Количество мест**: Определение количества грузовых мест
|
||||
- **Стоимость услуг**: Расчет стоимости услуг фулфилмента и логистики
|
||||
|
||||
---
|
||||
|
||||
## 6. ПРОЦЕССЫ УПРАВЛЕНИЯ ПАРТНЕРАМИ
|
||||
|
||||
### 6.1 Описание системы партнерства
|
||||
|
||||
Система партнерства позволяет организациям находить друг друга, отправлять заявки на сотрудничество и управлять контрагентами.
|
||||
|
||||
### 6.2 Процесс поиска партнеров
|
||||
|
||||
#### 6.2.1 Поиск в маркете
|
||||
|
||||
1. **Переход в маркет**: Организация заходит в раздел "Маркет"
|
||||
2. **Выбор типа партнера**: Выбор вкладки (Фулфилмент, Селлеры, Логистика, Поставщики)
|
||||
3. **Поиск организаций**: Использование SEARCH_ORGANIZATIONS запроса
|
||||
4. **Фильтрация**: Поиск по названию, ИНН, адресу
|
||||
5. **Просмотр карточек**: Изучение информации о потенциальных партнерах
|
||||
|
||||
#### 6.2.2 Отправка заявки на партнерство
|
||||
|
||||
1. **Выбор организации**: Клик на карточку интересующей организации
|
||||
2. **Отправка заявки**: Нажатие кнопки "Отправить заявку"
|
||||
3. **Добавление сообщения**: Опциональное сообщение к заявке
|
||||
4. **Создание запроса**: Система создает CounterpartyRequest со статусом PENDING
|
||||
5. **Уведомление**: Получатель видит входящую заявку в разделе "Партнеры"
|
||||
|
||||
#### 6.2.3 Обработка заявок
|
||||
|
||||
1. **Просмотр заявок**: Заявки отображаются в разделе "Партнеры" → "Мои контрагенты"
|
||||
2. **Принятие заявки**: Изменение статуса на ACCEPTED, создание связи Counterparty
|
||||
3. **Отклонение заявки**: Изменение статуса на REJECTED
|
||||
4. **Автоматическое обновление**: Обновление списков во всех связанных компонентах
|
||||
|
||||
### 6.3 Управление контрагентами
|
||||
|
||||
#### 6.3.1 Типы контрагентов
|
||||
|
||||
- **FULFILLMENT**: Фулфилмент-центры для обработки товаров
|
||||
- **SELLER**: Селлеры для продажи товаров
|
||||
- **LOGIST**: Логистические компании для доставки
|
||||
- **WHOLESALE**: Поставщики товаров и расходников
|
||||
|
||||
#### 6.3.2 Функции управления
|
||||
|
||||
- **Просмотр списка**: Все принятые контрагенты в одном разделе
|
||||
- **Поиск и фильтрация**: Поиск по различным критериям
|
||||
- **Статусы заявок**: Отслеживание входящих и исходящих заявок
|
||||
- **Интеграция с процессами**: Использование контрагентов в поставках
|
||||
|
||||
---
|
||||
|
||||
## 7. ПРОЦЕССЫ УПРАВЛЕНИЯ СКЛАДАМИ
|
||||
|
||||
### 7.1 Типы складских систем
|
||||
|
||||
#### 7.1.1 Собственный склад организации
|
||||
|
||||
**Процесс**: Склад → Управление товарами
|
||||
|
||||
1. **Создание товаров**: Добавление новых товаров в каталог
|
||||
2. **Редактирование**: Изменение характеристик товаров
|
||||
3. **Управление остатками**: Отслеживание количества товаров
|
||||
4. **Категоризация**: Привязка к категориям товаров
|
||||
5. **Медиафайлы**: Загрузка изображений товаров
|
||||
|
||||
#### 7.1.2 Склад Wildberries (для селлеров)
|
||||
|
||||
**Процесс**: Склад WB → Просмотр остатков
|
||||
|
||||
1. **Интеграция с WB API**: Получение данных через Wildberries API
|
||||
2. **Загрузка карточек**: Получение всех карточек товаров селлера
|
||||
3. **Получение аналитики**: Индивидуальные запросы по каждому nmId
|
||||
4. **Комбинирование данных**: Объединение карточек с данными остатков
|
||||
5. **Отображение складов**: Группировка по складам WB
|
||||
6. **Статистика**: Расчет общих показателей по остаткам
|
||||
|
||||
#### 7.1.3 Фулфилмент склады
|
||||
|
||||
**Процесс**: Фулфилмент → Склад → Управление
|
||||
|
||||
1. **Приемка товаров**: Получение товаров от поставщиков
|
||||
2. **Размещение**: Указание места хранения товаров
|
||||
3. **Обработка**: Подготовка товаров к отправке
|
||||
4. **Контроль качества**: Проверка товаров на брак
|
||||
5. **Отгрузка**: Подготовка к отправке селлерам
|
||||
|
||||
### 7.2 Интеграция складских процессов
|
||||
|
||||
#### 7.2.1 Синхронизация остатков
|
||||
|
||||
- **Автоматическое обновление**: Регулярная синхронизация с внешними API
|
||||
- **Кэширование**: Сохранение данных для быстрого доступа
|
||||
- **Уведомления**: Оповещения о критических остатках
|
||||
|
||||
#### 7.2.2 Аналитика складов
|
||||
|
||||
- **Статистика по товарам**: Общее количество, остатки, резерв
|
||||
- **Статистика по складам**: Активные склады, загруженность
|
||||
- **Товары в пути**: Отслеживание товаров в доставке
|
||||
|
||||
---
|
||||
|
||||
## 8. ПРОЦЕССЫ УПРАВЛЕНИЯ СОТРУДНИКАМИ
|
||||
|
||||
### 8.1 Система управления персоналом
|
||||
|
||||
#### 8.1.1 Добавление сотрудников
|
||||
|
||||
1. **Создание профиля**: Ввод основных данных сотрудника
|
||||
2. **Документы**: Загрузка паспортных данных и фотографий
|
||||
3. **Контакты**: Указание телефонов, email, мессенджеров
|
||||
4. **Должность и зарплата**: Установка позиции и оплаты
|
||||
5. **Экстренные контакты**: Контакты на случай чрезвычайных ситуаций
|
||||
|
||||
#### 8.1.2 Управление статусами
|
||||
|
||||
**Статусы сотрудников**:
|
||||
|
||||
- **ACTIVE**: Активно работает
|
||||
- **VACATION**: В отпуске
|
||||
- **SICK**: На больничном
|
||||
- **FIRED**: Уволен
|
||||
|
||||
#### 8.1.3 Система табельного учета
|
||||
|
||||
1. **Создание расписания**: Планирование рабочих дней
|
||||
2. **Отметка статусов**: Ежедневная отметка статуса работы
|
||||
3. **Типы дней**:
|
||||
- **WORK**: Рабочий день (8 часов)
|
||||
- **WEEKEND**: Выходной (0 часов)
|
||||
- **VACATION**: Отпуск (8 часов)
|
||||
- **SICK**: Больничный (8 часов)
|
||||
- **ABSENT**: Отсутствие (0 часов)
|
||||
4. **Автоматический расчет**: Подсчет отработанных часов
|
||||
5. **Отчетность**: Генерация табелей учета рабочего времени
|
||||
|
||||
### 8.2 Интеграция с бизнес-процессами
|
||||
|
||||
- **Назначение ответственных**: Привязка сотрудников к заказам и процессам
|
||||
- **Уведомления**: Система уведомлений для сотрудников
|
||||
- **Права доступа**: Разграничение доступа по ролям
|
||||
|
||||
---
|
||||
|
||||
## 9. ПРОЦЕССЫ ЛОГИСТИКИ
|
||||
|
||||
### 9.1 Управление перевозками
|
||||
|
||||
#### 9.1.1 Создание маршрутов
|
||||
|
||||
1. **Планирование маршрута**: Определение точек отправления и назначения
|
||||
2. **Расчет параметров**: Расстояние, время в пути, стоимость
|
||||
3. **Назначение груза**: Привязка конкретных товаров к маршруту
|
||||
4. **Статусы маршрутов**:
|
||||
- **planned**: Запланировано
|
||||
- **in_transit**: В пути
|
||||
- **delivered**: Доставлено
|
||||
- **cancelled**: Отменено
|
||||
|
||||
#### 9.1.2 Отслеживание доставок
|
||||
|
||||
1. **Мониторинг статусов**: Отслеживание текущего состояния доставок
|
||||
2. **Уведомления**: Автоматические уведомления об изменении статусов
|
||||
3. **Аналитика**: Статистика по доставкам и эффективности
|
||||
4. **Интеграция**: Связь с процессами фулфилмента и поставок
|
||||
|
||||
### 9.2 Типы логистических операций
|
||||
|
||||
- **Доставка от поставщика к фулфилменту**: Входящая логистика
|
||||
- **Доставка от фулфилмента к селлеру**: Исходящая логистика
|
||||
- **Межскладские перемещения**: Внутренняя логистика
|
||||
- **Возвраты**: Обратная логистика
|
||||
|
||||
---
|
||||
|
||||
## 10. СИСТЕМА АУТЕНТИФИКАЦИИ
|
||||
|
||||
### 10.1 Процесс регистрации/входа
|
||||
|
||||
1. **Ввод телефона**: Пользователь вводит номер телефона
|
||||
2. **SMS-код**: Система отправляет код подтверждения через SMS Aero
|
||||
3. **Выбор типа кабинета**: Пользователь выбирает тип организации
|
||||
4. **Ввод ИНН**: Для B2B пользователей обязательно указание ИНН
|
||||
5. **Проверка через DaData**: Автоматическое получение данных организации
|
||||
6. **API ключи маркетплейсов**: Для селлеров - настройка интеграций
|
||||
7. **Подтверждение**: Завершение регистрации
|
||||
|
||||
### 10.2 Типы аутентификации
|
||||
|
||||
- **Пользователи**: JWT токены, хранение в localStorage
|
||||
- **Админы**: Отдельная система с админскими токенами
|
||||
- **API интеграции**: Bearer токены для внешних сервисов
|
||||
|
||||
---
|
||||
|
||||
## 11. ВНЕШНИЕ ИНТЕГРАЦИИ
|
||||
|
||||
### 11.1 Wildberries API
|
||||
|
||||
- **Назначение**: Получение данных по складам и товарам
|
||||
- **Эндпоинты**:
|
||||
- `/ping` - проверка валидности ключа
|
||||
- `/api/v1/seller-info` - информация о продавце
|
||||
- `/api/v1/stocks` - остатки товаров
|
||||
- `/api/v1/warehouses` - список складов
|
||||
|
||||
### 11.2 Ozon API
|
||||
|
||||
- **Назначение**: Интеграция с маркетплейсом Ozon
|
||||
- **Аутентификация**: API ключ + Client ID
|
||||
|
||||
### 11.3 DaData API
|
||||
|
||||
- **Назначение**: Получение информации об организациях по ИНН
|
||||
- **Данные**: Реквизиты, адреса, статусы организаций
|
||||
|
||||
### 11.4 SMS Aero API
|
||||
|
||||
- **Назначение**: Отправка SMS для аутентификации
|
||||
- **Аутентификация**: HTTP Basic Auth (email + API key)
|
||||
|
||||
### 11.5 AWS S3
|
||||
|
||||
- **Назначение**: Хранение файлов (изображения, документы, голосовые сообщения)
|
||||
|
||||
---
|
||||
|
||||
## 12. СИСТЕМА СООБЩЕНИЙ
|
||||
|
||||
### 12.1 Типы сообщений
|
||||
|
||||
```
|
||||
TEXT - Текстовые сообщения
|
||||
VOICE - Голосовые сообщения
|
||||
IMAGE - Изображения
|
||||
FILE - Файлы
|
||||
```
|
||||
|
||||
### 12.2 Функциональность
|
||||
|
||||
- Чаты между организациями
|
||||
- Прикрепление файлов
|
||||
- Голосовые сообщения
|
||||
- История переписки
|
||||
|
||||
---
|
||||
|
||||
## 13. УПРАВЛЕНИЕ СОТРУДНИКАМИ (СТАРОЕ)
|
||||
|
||||
### 13.1 Статусы сотрудников
|
||||
|
||||
```
|
||||
ACTIVE - Активный
|
||||
VACATION - В отпуске
|
||||
SICK - На больничном
|
||||
FIRED - Уволен
|
||||
```
|
||||
|
||||
### 13.2 Система расписания
|
||||
|
||||
```
|
||||
WORK - Рабочий день
|
||||
WEEKEND - Выходной
|
||||
VACATION - Отпуск
|
||||
SICK - Больничный
|
||||
ABSENT - Отсутствие
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 14. СИСТЕМА УСЛУГ И РАСХОДНИКОВ
|
||||
|
||||
### 14.1 Типы продуктов
|
||||
|
||||
```
|
||||
PRODUCT - Основной товар
|
||||
CONSUMABLE - Расходные материалы
|
||||
```
|
||||
|
||||
**ВАЖНОЕ ПРАВИЛО**: В системе существуют два различных типа расходников:
|
||||
|
||||
- **Расходники селлера** - расходные материалы, которые заказывает селлер для своих нужд
|
||||
- **Расходники фулфилмента** - расходные материалы, которые заказывает фулфилмент-центр для своих операций
|
||||
|
||||
Эти типы расходников имеют разные процессы заказа, разных получателей и разное назначение. В системе не должно быть просто "расходники" без указания принадлежности.
|
||||
|
||||
### 14.2 Услуги фулфилмента
|
||||
|
||||
- Приемка товара
|
||||
- Хранение
|
||||
- Упаковка
|
||||
- Отгрузка
|
||||
- Контроль качества
|
||||
|
||||
---
|
||||
|
||||
## 15. СИСТЕМА УВЕДОМЛЕНИЙ И СТАТУСОВ
|
||||
|
||||
### 15.1 Отслеживание изменений
|
||||
|
||||
- Все изменения статусов синхронизируются между кабинетами
|
||||
- Участники процесса получают уведомления о важных событиях
|
||||
- История изменений сохраняется для аудита
|
||||
|
||||
### 15.2 Критические точки процесса
|
||||
|
||||
1. Одобрение заявки поставщиком
|
||||
2. Подтверждение логистикой
|
||||
3. Приемка товара на фулфилменте
|
||||
4. Завершение обработки товара
|
||||
|
||||
---
|
||||
|
||||
## 16. БЕЗОПАСНОСТЬ И ДОСТУПЫ
|
||||
|
||||
### 16.1 Разграничение доступа
|
||||
|
||||
- Каждый тип организации видит только свои разделы
|
||||
- Общие модули (мессенджер, партнеры, настройки) доступны всем
|
||||
- Админ имеет полный доступ к системе
|
||||
|
||||
### 16.2 Защита данных
|
||||
|
||||
- JWT токены с ограниченным временем жизни
|
||||
- Валидация всех входящих данных
|
||||
- Логирование критических операций
|
||||
|
||||
---
|
||||
|
||||
## 17. ИНИЦИАЛИЗАЦИЯ СИСТЕМЫ
|
||||
|
||||
### 17.1 Автоматическая настройка
|
||||
|
||||
При первом запуске система автоматически:
|
||||
|
||||
- Создает админа (admin/admin123)
|
||||
- Инициализирует 20 базовых категорий товаров
|
||||
- Настраивает базовую структуру БД
|
||||
|
||||
### 17.2 Команды управления
|
||||
|
||||
```bash
|
||||
npm run db:seed # Инициализация БД
|
||||
npm run db:reset # Полный сброс БД
|
||||
npm run postinstall # Генерация Prisma Client
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 18. ОСОБЕННОСТИ РЕАЛИЗАЦИИ
|
||||
|
||||
### 18.1 Адаптивность
|
||||
|
||||
- Система поддерживает различные размеры экранов
|
||||
- Мобильная версия для основных функций
|
||||
- Прогрессивные веб-приложения (PWA) возможности
|
||||
|
||||
### 18.2 Производительность
|
||||
|
||||
- Кэширование данных маркетплейсов
|
||||
- Оптимизированные GraphQL запросы
|
||||
- Ленивая загрузка компонентов
|
||||
|
||||
### 18.3 Масштабируемость
|
||||
|
||||
- Модульная архитектура
|
||||
- Возможность добавления новых типов организаций
|
||||
- Расширяемая система интеграций
|
||||
|
||||
---
|
||||
|
||||
## 19. КРИТИЧЕСКИ ВАЖНЫЕ МОМЕНТЫ
|
||||
|
||||
### 19.1 Синхронизация статусов
|
||||
|
||||
Система должна обеспечивать консистентность данных между всеми участниками процесса. При изменении статуса в одном кабинете, изменения должны отражаться во всех связанных кабинетах.
|
||||
|
||||
### 19.2 Обработка ошибок API
|
||||
|
||||
Все внешние интеграции должны иметь fallback механизмы и graceful degradation при недоступности внешних сервисов.
|
||||
|
||||
### 19.3 Аудит операций
|
||||
|
||||
Все критические операции (создание заказов, изменение статусов, финансовые операции) должны логироваться для возможности аудита.
|
||||
|
||||
### 19.4 Разделение типов расходников
|
||||
|
||||
**КРИТИЧЕСКИ ВАЖНО**: В системе должно быть четкое разделение между расходниками селлера и расходниками фулфилмента:
|
||||
|
||||
- **Расходники селлера**: Заказываются селлером, доставляются в фулфилмент-центр, используются для товаров селлера
|
||||
- **Расходники фулфилмента**: Заказываются фулфилмент-центром, доставляются на склад фулфилмента, используются для внутренних операций фулфилмента
|
||||
|
||||
Недопустимо использование общего термина "расходники" без указания принадлежности. Это может привести к ошибкам в учете, доставке и использовании материалов.
|
||||
|
||||
---
|
||||
|
||||
**ВНИМАНИЕ**: Данная логика является основой для всех разработок в системе.
|
||||
Любые изменения в бизнес-процессах должны быть отражены в этом документе.
|
||||
Разработчики должны использовать этот документ как источник истины при реализации новых функций.
|
||||
|
||||
---
|
||||
|
||||
_Документ создан: $(date)_
|
||||
_Версия системы: Sfera V_
|
||||
_Статус: ЗАЩИЩЕН ОТ ИЗМЕНЕНИЙ БЕЗ РАЗРЕШЕНИЯ_
|
Reference in New Issue
Block a user