Добавлены кнопки навигации "Главная" и "Экономика" в боковую панель. Реализованы обработчики кликов для перехода на соответствующие страницы. Обновлены стили кнопок для улучшения пользовательского интерфейса в зависимости от состояния навигации.

This commit is contained in:
Veronika Smirnova
2025-08-02 13:13:22 +03:00
parent 3f759e7454
commit a33adda9d7
21 changed files with 3225 additions and 0 deletions

View File

@ -0,0 +1,482 @@
# ПРАВИЛА КАБИНЕТА ФУЛФИЛМЕНТА
> 📋 **Файл создан на основе анализа системы** - детальные правила для кабинета фулфилмента
---
## 📑 ОГЛАВЛЕНИЕ
1. [🏭 Общие характеристики кабинета фулфилмента](#1--общие-характеристики-кабинета-фулфилмента)
2. [🗂️ Основные разделы кабинета](#2--основные-разделы-кабинета)
3. [🔒 Правила доступа фулфилмента](#3--правила-доступа-фулфилмента)
4. [📋 Критические правила для rules2.md](#4--критические-правила-для-rules2md)
---
## 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 Интерфейс сотрудников
**Обязательные поля сотрудника**:
```typescript
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 проверки**:
```typescript
{user?.organization?.type === "FULFILLMENT" && (
// Компоненты доступны только фулфилменту
)}
```
**Эксклюзивные разделы**:
- **Услуги** (`/services`) - создание услуг, логистики, управление расходниками
- **Сотрудники** (`/employees`) - управление персоналом и табелем
- **Статистика фулфилмента** (`/fulfillment-statistics`) - детальная аналитика
### 3.2 Специальная логика роутинга
**При нажатии "Поставки" в sidebar**:
```typescript
const handleSuppliesClick = () => {
switch (user?.organization?.type) {
case "FULFILLMENT":
router.push("/fulfillment-supplies"); // Специальный роут
break;
case "SELLER":
router.push("/supplies");
break;
// ... другие типы
}
};
```
### 3.3 GraphQL проверки доступа
**В Apollo Client запросах**:
```typescript
const { data } = useQuery(GET_MY_SERVICES, {
skip: user?.organization?.type !== "FULFILLMENT", // Пропуск для не-фулфилмента
});
```
**В GraphQL резолверах**:
```typescript
// Проверка типа организации на сервере
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 запросы фулфилмента
```typescript
// Основные запросы
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: Компоненты фулфилмента
```typescript
// Основные dashboard компоненты
FulfillmentWarehouseDashboard; // Склад фулфилмента
FulfillmentStatisticsDashboard; // Статистика
ServicesDashboard; // Услуги (3 вкладки)
EmployeesDashboard; // Сотрудники
SuppliesDashboard; // Поставки фулфилмента
// Специализированные компоненты
ServicesTab, LogisticsTab, SuppliesTab; // Вкладки услуг
EmployeeInlineForm, EmployeeEditInlineForm; // Формы сотрудников
FulfillmentSuppliesTab, FulfillmentConsumablesOrdersTab; // Поставки
```
---
**📅 Создано**: На основе анализа системы Sfera
**🎯 Статус**: Готово к интеграции в rules2.md
**📝 Версия**: 1.0