Files
sfera/логика.md

789 lines
41 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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

# ЛОГИКА СИСТЕМЫ SFERA 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_
_Статус: ЗАЩИЩЕН ОТ ИЗМЕНЕНИЙ БЕЗ РАЗРЕШЕНИЯ_