From 9171dc35f12dee36ef16b2684734773da016faa8 Mon Sep 17 00:00:00 2001 From: Bivekich Date: Fri, 1 Aug 2025 09:45:44 +0300 Subject: [PATCH] files --- описание.md => description.md | 0 logic_full.md | 153 ------- правила.md => rules.md | 0 логика.md | 788 ---------------------------------- 4 files changed, 941 deletions(-) rename описание.md => description.md (100%) delete mode 100644 logic_full.md rename правила.md => rules.md (100%) delete mode 100644 логика.md diff --git a/описание.md b/description.md similarity index 100% rename from описание.md rename to description.md diff --git a/logic_full.md b/logic_full.md deleted file mode 100644 index 9f66f3f..0000000 --- a/logic_full.md +++ /dev/null @@ -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 основного файла логики системы_ -_Статус: СПЕЦИАЛИЗИРОВАННАЯ ЛОГИКА ПРОЦЕССА_ diff --git a/правила.md b/rules.md similarity index 100% rename from правила.md rename to rules.md diff --git a/логика.md b/логика.md deleted file mode 100644 index aacb8a7..0000000 --- a/логика.md +++ /dev/null @@ -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_ -_Статус: ЗАЩИЩЕН ОТ ИЗМЕНЕНИЙ БЕЗ РАЗРЕШЕНИЯ_