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