Files
sfera/fulfillment-cabinet-rules.md

21 KiB
Raw Blame History

ПРАВИЛА КАБИНЕТА ФУЛФИЛМЕНТА

📋 Файл создан на основе анализа системы - детальные правила для кабинета фулфилмента


📑 ОГЛАВЛЕНИЕ

  1. 🏭 Общие характеристики кабинета фулфилмента
  2. 🗂️ Основные разделы кабинета
  3. 🔒 Правила доступа фулфилмента
  4. 📋 Критические правила для rules2.md

1. 🏭 ОБЩИЕ ХАРАКТЕРИСТИКИ КАБИНЕТА ФУЛФИЛМЕНТА

1.1 Принципы доступа

  • МАКСИМАЛЬНЫЕ ПРАВА: Фулфилмент имеет доступ ко ВСЕМ разделам системы
  • АДАПТИВНАЯ НАВИГАЦИЯ: Sidebar изменяется в зависимости от user.organization.type === "FULFILLMENT"
  • ЭКСКЛЮЗИВНЫЕ КОМПОНЕНТЫ: Услуги, Сотрудники, Статистика фулфилмента доступны ТОЛЬКО фулфилменту
  • СПЕЦИАЛЬНЫЙ РОУТИНГ: При нажатии "Поставки" → /fulfillment-supplies (не /supplies)

1.2 Архитектурные особенности

  • GraphQL проверки: skip: user?.organization?.type !== 'FULFILLMENT' в запросах
  • Условное отображение: {user?.organization?.type === "FULFILLMENT" && (...)}
  • Адаптивные отступы: getSidebarMargin() для responsive design
  • Полинг данных: Статистика обновляется каждую минуту (pollInterval: 60000)

2. 🗂️ ОСНОВНЫЕ РАЗДЕЛЫ КАБИНЕТА

2.1 🏠 Главная страница (/dashboard)

Компонент: DashboardHome Содержание:

  • Основная информация организации
  • Статус онлайн пользователя
  • Быстрый доступ к основным разделам

2.2 🏭 Склад фулфилмента (/fulfillment-warehouse)

Компонент: FulfillmentWarehouseDashboard

2.2.1 Структура склада по модулям (ОБЯЗАТЕЛЬНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ)

  1. 📦 ПРОДУКТЫ - готовые к отправке товары
  2. 🛒 ТОВАРЫ - базовые товары от поставщиков
    • "На складе" - готовы к обработке
    • "В обработке" - в процессе создания продукта
  3. БРАК - товары с дефектами, требуют утилизации
  4. ↩️ ВОЗВРАТЫ С ПВЗ - возвращенные товары, к обработке
  5. 🎯 РАСХОДНИКИ СЕЛЛЕРОВ - материалы для селлеров
  6. ⚙️ РАСХОДНИКИ ФУЛФИЛМЕНТА - операционные материалы (КЛИКАБЕЛЬНЫЙ модуль)

2.2.2 Система учета склада

Дополнительные значения (показатели движения):

  • ПРИБЫЛО - количество поступивших на склад за период
  • УБЫЛО - количество списанных со склада за период

Основные значения (текущие остатки):

  • ФОРМУЛА: Основные значения = Предыдущие остатки + Прибыло - Убыло
  • ОБНОВЛЕНИЕ: В реальном времени с изменениями за сутки
  • ИСТОЧНИК: GraphQL query GET_FULFILLMENT_WAREHOUSE_STATS

2.2.3 Структура данных склада (3-уровневая иерархия)

🔵 УРОВЕНЬ 1: МАГАЗИНЫ
├── ТехноМир (синий - blue-400/500)
├── Стиль и Комфорт (розовый - pink-400/500)
└── Зелёный Дом (изумрудный - emerald-400/500)
    ↓
🟢 УРОВЕНЬ 2: ТОВАРЫ (зеленый - green-500)
    ↓
🟠 УРОВЕНЬ 3: ВАРИАНТЫ ТОВАРОВ (оранжевый - orange-500)

Цветовое кодирование:

  • Каждый уровень имеет цветной индикатор увеличивающегося размера
  • Цветная левая граница с увеличивающимся отступом и толщиной
  • Скроллбары в цвете уровня
  • Контрастный цвет текста для читаемости

2.2.4 Статистика склада

6 основных карточек статистики:

  1. Продукты - готовые к отправке
  2. Товары - в обработке
  3. Брак - требует утилизации
  4. Возвраты с ПВЗ - к обработке
  5. Расходники селлеров - материалы клиентов
  6. Расходники фулфилмента - операционные материалы

2.3 📦 Поставки фулфилмента (/fulfillment-supplies)

Компонент: SuppliesDashboard

2.3.1 Структура: 2 основные вкладки

A) 🛒 ПОСТАВКИ ТОВАРОВ:

  • Детализированные товары ФФ - планы и факты поставок с маршрутами
  • Товары ФФ - общие поставки товаров от селлеров
  • Возвраты с ПВЗ - обработка возвращенных товаров

B) 🔧 ПОСТАВКИ РАСХОДНИКОВ:

  • Заказы расходников - управление заказами от селлеров
  • Расходники селлеров - материалы для клиентов
  • Создание поставок - формирование новых поставок расходников

2.3.2 Workflow поставок товаров

Этапы обработки:

  1. Planned - поставка запланирована
  2. In-transit - товар в пути
  3. Delivered - доставлен на склад
  4. Completed - обработка завершена

Данные поставки:

  • Номер поставки (ФФ-YYYY-XXX)
  • Селлер (организация, магазин, менеджер)
  • Количество позиций и грузовых мест
  • Объем и стоимость поставки
  • Ответственный сотрудник и логистика

2.4 📊 Статистика фулфилмента (/fulfillment-statistics)

Компонент: FulfillmentStatisticsDashboard

2.4.1 Блоки аналитики (сворачиваемые)

1. НАКОПЛЕННАЯ СТАТИСТИКА (allTime: true):

  • Обработано товаров (общий объем)
  • Выявлено брака (всего единиц)
  • Поставок получено
  • Общий доход (за все время)
  • Выполнено заказов (успешных отгрузок)
  • Удовлетворенность клиентов (средний рейтинг)

2. ОТГРУЗКА НА ПЛОЩАДКИ (marketplaces: true):

  • Отправлено на Wildberries
  • Отправлено на Ozon
  • Отправлено на другие площадки

3. АНАЛИТИКА ПРОИЗВОДИТЕЛЬНОСТИ (performance: false):

  • Среднее время обработки (на единицу товара)
  • Уровень брака (от общего объема)
  • Уровень возвратов (возвраты с площадок)
  • Удовлетворенность клиентов

4. МЕТРИКИ СКЛАДА (warehouseMetrics: true):

  • Эффективность склада
  • Оборачиваемость товаров
  • Коэффициент использования

5. УМНЫЕ РЕКОМЕНДАЦИИ (smartRecommendations: true):

  • Автоматические советы по оптимизации
  • Предложения по улучшению процессов

6. БЫСТРЫЕ ДЕЙСТВИЯ (quickActions: true):

  • Часто используемые операции
  • Горячие клавиши для действий

2.4.2 Ключевые показатели в заголовке

  • Общий доход (зеленый - success)
  • Качество (синий - X/5.0 рейтинг)
  • Уровень брака (процент от общего объема)

2.5 🔧 Услуги (/services)

Компонент: ServicesDashboard Условие доступа: user?.organization?.type === "FULFILLMENT"

2.5.1 Структура: 3 обязательные вкладки

A) 🛠️ УСЛУГИ (defaultValue="services"):

  • CRUD операции: создание, редактирование, удаление услуг
  • Управление ценами и описаниями
  • Загрузка изображений услуг (imageUrl)
  • GraphQL: GET_MY_SERVICES, CREATE_SERVICE, UPDATE_SERVICE, DELETE_SERVICE

B) 🚚 ЛОГИСТИКА:

  • Создание маршрутов доставки (откуда → куда)
  • Тарификация: цена до 1м³ и свыше 1м³
  • Группированные локации:
    • Мой фулфилмент (название организации)
    • Рынки (предустановленные)
    • Склады Wildberries
    • Склады Ozon
  • GraphQL: GET_MY_LOGISTICS, CREATE_LOGISTICS, UPDATE_LOGISTICS, DELETE_LOGISTICS

C) 📦 РАСХОДНИКИ:

  • Управление расходниками фулфилмента
  • Интеграция с модулем "Услуги" - селлеры могут использовать в услугах
  • Списание со складских остатков при использовании
  • Стоимость включается в стоимость услуги

2.5.2 Правила логистики

Создание маршрута:

  • Обязательные поля: Название маршрута, Откуда, Куда
  • Ценообразование: Цена до 1м³, Цена свыше 1м³
  • Описание услуг: Дополнительные условия доставки
  • Проверка: Только организации типа FULFILLMENT могут создавать логистику

2.6 👥 Сотрудники (/employees)

Компонент: EmployeesDashboard Условие доступа: user?.organization?.type === "FULFILLMENT"

2.6.1 Структура: 2 основные вкладки

A) 👥 СОТРУДНИКИ (defaultValue="combined"):

Управление персоналом:

  • CRUD операции: создание, редактирование, удаление сотрудников
  • Статусы сотрудников: ACTIVE, VACATION, SICK, FIRED
  • Формы добавления: Компактная (showCompactForm) / Полная форма
  • Поиск и фильтрация по имени, должности, статусу

Табель рабочего времени:

  • Навигация по месяцам: текущий год/месяц с кнопками ←/→
  • Отметки по дням: статус дня и количество отработанных часов
  • GraphQL: GET_EMPLOYEE_SCHEDULE, UPDATE_EMPLOYEE_SCHEDULE
  • Данные: {date, hoursWorked, employee: {id}}

B) 📋 ОТЧЕТЫ (value="reports"):

  • Сводные отчеты по сотрудникам за период
  • Экспорт данных табеля
  • Аналитика рабочего времени

2.6.2 Интерфейс сотрудников

Обязательные поля сотрудника:

interface Employee {
  firstName: string; // Имя
  lastName: string; // Фамилия
  middleName?: string; // Отчество
  position: string; // Должность
  phone: string; // Телефон
  email?: string; // Email
  status: "ACTIVE" | "VACATION" | "SICK" | "FIRED";
  salary?: number; // Зарплата
  hireDate: string; // Дата найма
  // ... дополнительные поля
}

Валидация данных:

  • Имя/Фамилия: минимум 2 символа, только буквы/пробелы/дефисы
  • Телефон: обязательный, формат +7 (999) 123-45-67
  • Email: валидация формата при заполнении
  • Должность: минимум 2 символа

2.7 🌐 Универсальные разделы

2.7.1 🛒 Маркет (/market)

  • Просмотр товаров всех поставщиков
  • Создание заказов у поставщиков
  • Управление корзиной и избранным

2.7.2 🤝 Партнеры (/partners)

  • Управление контрагентами всех типов
  • Входящие/исходящие заявки на сотрудничество

2.7.3 💬 Мессенджер (/messenger)

  • Внутренняя связь между организациями
  • Поддержка файлов, изображений, голосовых сообщений

2.7.4 ⚙️ Настройки (/settings)

  • Профиль организации и пользователя
  • API ключи маркетплейсов (WB, Ozon)
  • Банковские реквизиты

3. 🔒 ПРАВИЛА ДОСТУПА ФУЛФИЛМЕНТА

3.1 Эксклюзивный доступ (только фулфилмент)

TypeScript проверки:

{user?.organization?.type === "FULFILLMENT" && (
  // Компоненты доступны только фулфилменту
)}

Эксклюзивные разделы:

  • Услуги (/services) - создание услуг, логистики, управление расходниками
  • Сотрудники (/employees) - управление персоналом и табелем
  • Статистика фулфилмента (/fulfillment-statistics) - детальная аналитика

3.2 Специальная логика роутинга

При нажатии "Поставки" в sidebar:

const handleSuppliesClick = () => {
  switch (user?.organization?.type) {
    case "FULFILLMENT":
      router.push("/fulfillment-supplies"); // Специальный роут
      break;
    case "SELLER":
      router.push("/supplies");
      break;
    // ... другие типы
  }
};

3.3 GraphQL проверки доступа

В Apollo Client запросах:

const { data } = useQuery(GET_MY_SERVICES, {
  skip: user?.organization?.type !== "FULFILLMENT", // Пропуск для не-фулфилмента
});

В GraphQL резолверах:

// Проверка типа организации на сервере
if (currentUser.organization.type !== "FULFILLMENT") {
  throw new GraphQLError("Доступно только для фулфилмент центров");
}

4. 📋 КРИТИЧЕСКИЕ ПРАВИЛА ДЛЯ RULES2.MD

4.1 🔴 КРИТИЧЕСКИЕ ПРАВИЛА (обязательны к добавлению)

ПРАВИЛО FF-01: Структура склада фулфилмента

  • ОБЯЗАТЕЛЬНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ модулей: ПРОДУКТ→ТОВАР→БРАК→ВОЗВРАТЫ→РАСХОДНИКИСЕЛЛЕРОВ→РАСХОДНИКИФУЛФИЛМЕНТА
  • ЗАПРЕЩЕНО: Изменение порядка модулей
  • ОБЯЗАТЕЛЬНО: Модуль "Расходники фулфилмента" должен быть кликабельным

ПРАВИЛО FF-02: Права доступа фулфилмента

  • ЭКСКЛЮЗИВНЫЙ ДОСТУП: Услуги, Сотрудники, Статистика фулфилмента
  • ПРОВЕРКА: user?.organization?.type === "FULFILLMENT"
  • GraphQL: skip: user?.organization?.type !== 'FULFILLMENT'

ПРАВИЛО FF-03: Система учета склада

  • ДВОЙНОЙ УЧЕТ: Основные значения + дополнительные значения
  • ФОРМУЛА: Основные = Предыдущие остатки + Прибыло - Убыло
  • ОБНОВЛЕНИЕ: Статистика в реальном времени с изменениями за сутки

ПРАВИЛО FF-04: Workflow создания продукта

  • ПРОЦЕСС: Товары "на складе" → "в обработке" → ПРОДУКТ "готов к отправке"
  • ПЛАН/ФАКТ: Корректировка статистики при выявлении расхождений
  • ОБЯЗАТЕЛЬНО: Фиксация брака в процессе работы (вкладка "В работе")

4.2 🟡 ВАЖНЫЕ ПРАВИЛА (рекомендуются к добавлению)

ПРАВИЛО FF-05: Модуль услуг фулфилмента

  • СТРУКТУРА: 3 обязательные вкладки (Услуги, Логистика, Расходники)
  • ЛОГИСТИКА: Создание маршрутов только фулфилментом
  • РАСХОДНИКИ: Интеграция с модулем "Услуги", списание со склада

ПРАВИЛО FF-06: Управление сотрудниками

  • СТАТУСЫ: 4 обязательных статуса (ACTIVE, VACATION, SICK, FIRED)
  • ТАБЕЛЬ: Месячная навигация с отметками по дням
  • ВАЛИДАЦИЯ: Строгие правила валидации полей сотрудника

ПРАВИЛО FF-07: Специальный роутинг

  • ПОСТАВКИ: Фулфилмент → /fulfillment-supplies (не /supplies)
  • УСЛОВНОЕ ОТОБРАЖЕНИЕ: Разные компоненты для разных типов организаций

4.3 🟢 ПОЛЕЗНЫЕ ПРАВИЛА (опциональны)

ПРАВИЛО FF-08: UI/UX паттерны фулфилмента

  • ЦВЕТОВАЯ СХЕМА: 3-уровневая иерархия с цветовым кодированием
  • СВОРАЧИВАЕМЫЕ БЛОКИ: Статистика с состояниями expandedSections
  • АДАПТИВНОСТЬ: getSidebarMargin() для responsive design

ПРАВИЛО FF-09: Статистика и аналитика

  • 6 ОСНОВНЫХ БЛОКОВ: Накопленная, Площадки, Производительность, Склад, Рекомендации, Действия
  • REAL-TIME: Обновление каждую минуту (pollInterval: 60000)
  • КЛЮЧЕВЫЕ ПОКАЗАТЕЛИ: Доход, Качество, Уровень брака в заголовке

📎 ПРИЛОЖЕНИЯ

Приложение A: GraphQL запросы фулфилмента

// Основные запросы
GET_MY_SERVICES; // Услуги фулфилмента
GET_MY_LOGISTICS; // Логистические маршруты
GET_MY_EMPLOYEES; // Сотрудники организации
GET_FULFILLMENT_WAREHOUSE_STATS; // Статистика склада
GET_WAREHOUSE_PRODUCTS; // Товары на складе
GET_MY_FULFILLMENT_SUPPLIES; // Расходники фулфилмента

// Мутации
CREATE_SERVICE, UPDATE_SERVICE, DELETE_SERVICE;
CREATE_LOGISTICS, UPDATE_LOGISTICS, DELETE_LOGISTICS;
CREATE_EMPLOYEE, UPDATE_EMPLOYEE, DELETE_EMPLOYEE;

Приложение B: Компоненты фулфилмента

// Основные dashboard компоненты
FulfillmentWarehouseDashboard; // Склад фулфилмента
FulfillmentStatisticsDashboard; // Статистика
ServicesDashboard; // Услуги (3 вкладки)
EmployeesDashboard; // Сотрудники
SuppliesDashboard; // Поставки фулфилмента

// Специализированные компоненты
ServicesTab, LogisticsTab, SuppliesTab; // Вкладки услуг
EmployeeInlineForm, EmployeeEditInlineForm; // Формы сотрудников
FulfillmentSuppliesTab, FulfillmentConsumablesOrdersTab; // Поставки

📅 Создано: На основе анализа системы Sfera
🎯 Статус: Готово к интеграции в rules2.md
📝 Версия: 1.0