# ДОМЕН ЛОГИСТИЧЕСКИХ КОМПАНИЙ (LOGIST)

## 🎯 РОЛЬ В ЭКОСИСТЕМЕ SFERA

**Логистическая компания (Logist)** - специализированный участник системы, обеспечивающий доставку товаров от поставщиков к фулфилмент-центрам. Связующее звено в физической цепочке поставок.

### КЛЮЧЕВЫЕ ФУНКЦИИ:

- ✅ Создание логистических маршрутов
- ✅ Расчет стоимости доставки
- ✅ Подтверждение заказов на доставку
- ✅ Исполнение перевозок
- ✅ Координация с поставщиками и получателями

## 🏢 БИЗНЕС-МОДЕЛЬ ЛОГИСТИКИ

### 1. ЭКОНОМИЧЕСКАЯ МОДЕЛЬ

```typescript
enum LogisticsEconomics {
  REVENUE = {
    DELIVERY_SERVICES: 'Услуги доставки', // Основной доход
    VOLUME_PRICING: 'Ценообразование по объему', // Под/над 1м³
    EXPRESS_DELIVERY: 'Экспресс доставка', // Premium услуги
    STORAGE_SERVICES: 'Временное хранение', // Дополнительные услуги
    PACKAGING_SERVICES: 'Упаковочные услуги', // Value-added services
  },

  COSTS = {
    TRANSPORTATION: 'Транспортные расходы', // Топливо, водители
    VEHICLE_MAINTENANCE: 'Обслуживание транспорта', // ТО, ремонт
    INSURANCE: 'Страхование грузов', // Защита от рисков
    ROUTE_OPTIMIZATION: 'Оптимизация маршрутов', // Программное обеспечение
    FACILITY_COSTS: 'Содержание терминалов', // Склады, сортировочные центры
  },
}
```

### 2. ПАРТНЕРСКИЕ СВЯЗИ

```mermaid
graph TD
    A[LOGIST] --> B[WHOLESALE - Точки забора]
    A --> C[FULFILLMENT - Точки доставки]
    A --> D[SELLER - Заказчики доставок]

    B --> E[Забирают товары у поставщиков]
    C --> F[Доставляют товары в ФФ]
    D --> G[Координируют доставки по заявкам]

    H[TRANSPORT PROVIDERS] --> A
    H --> I[Предоставляют транспортные средства]
```

## 🚚 СИСТЕМА МАРШРУТОВ И ЦЕНООБРАЗОВАНИЯ

### СТРУКТУРА ЛОГИСТИЧЕСКИХ МАРШРУТОВ:

```typescript
interface LogisticsRoute {
  // Базовая информация
  id: string
  fromLocation: string // Точка забора (поставщик)
  toLocation: string // Точка доставки (фулфилмент)

  // Ценообразование по объему
  priceUnder1m3: number // Цена для грузов <1м³
  priceOver1m3: number // Цена для грузов >1м³

  // Дополнительная информация
  description?: string // Описание маршрута
  organizationId: string // ID логистической компании

  // Связи с заказами
  routes: SupplyRoute[] // Конкретные поставки по маршруту
}
```

**GraphQL операции:**

```graphql
# Мои логистические маршруты
query GetMyLogistics {
  myLogistics {
    id
    fromLocation
    toLocation
    priceUnder1m3
    priceOver1m3
    description
  }
}

# Логистические партнеры (для других организаций)
query GetLogisticsPartners {
  logisticsPartners {
    id
    name
    type # = LOGIST
  }
}

# Маршруты конкретной логистической компании
query GetOrganizationLogistics($organizationId: ID!) {
  organizationLogistics(organizationId: $organizationId) {
    fromLocation
    toLocation
    priceUnder1m3
    priceOver1m3
  }
}
```

### ЦЕНООБРАЗОВАНИЕ:

```typescript
interface LogisticsPricing {
  // Базовое ценообразование по объему
  volumeBasedPricing: {
    threshold: '1 кубический метр'
    smallVolume: 'priceUnder1m3 - для грузов <1м³'
    largeVolume: 'priceOver1m3 - для грузов >1м³'
    calculation: 'Объем рассчитывается по габаритам груза'
  }

  // Дополнительные факторы ценообразования
  additionalFactors: {
    distance: 'Расстояние между точками маршрута'
    urgency: 'Срочность доставки (обычная/экспресс)'
    handling: 'Особые требования к обращению с грузом'
    season: 'Сезонные коэффициенты'
  }

  // Расчет итоговой стоимости
  finalPrice: {
    basePrice: 'priceUnder1m3 или priceOver1m3'
    modifiers: 'Коэффициенты за дополнительные услуги'
    result: 'Итоговая стоимость доставки'
  }
}
```

## 🔄 WORKFLOW ПОСТАВОК ДЛЯ ЛОГИСТИКИ

### РОЛЬ В 8-СТАТУСНОЙ СИСТЕМЕ:

#### 1. ПОДТВЕРЖДЕНИЕ ЛОГИСТИКИ:

```typescript
// Логистика подтверждает возможность доставки
interface LogisticsConfirmation {
  trigger: 'Status: SUPPLIER_APPROVED → LOGISTICS_CONFIRMED'

  responsibilities: [
    'Проверить доступность транспорта',
    'Рассчитать точную стоимость доставки',
    'Определить временные рамки доставки',
    'Подтвердить или отклонить заказ на доставку',
  ]

  // Из кода resolvers.ts
  query: `
    const logisticsOrders = await prisma.supplyOrder.count({
      where: {
        logisticsPartnerId: currentUser.organization.id, // Мы - логистика
        status: {
          in: [
            'CONFIRMED',           // Legacy - подтверждено ФФ
            'SUPPLIER_APPROVED',   // Подтверждено поставщиком
            'LOGISTICS_CONFIRMED'  // Подтверждено нами - нужно забрать
          ]
        }
      }
    })
  `
}
```

#### 2. ИСПОЛНЕНИЕ ДОСТАВКИ:

```typescript
const logisticsExecution = {
  // Подготовка к забору
  LOGISTICS_CONFIRMED: {
    status: 'Готовность к забору товара',
    actions: [
      'Планирование маршрута',
      'Назначение транспорта и водителя',
      'Координация с поставщиком',
      'Подготовка документов',
    ],
  },

  // Забор и транспортировка
  SHIPPED: {
    status: 'Товар в пути',
    responsibilities: [
      'Забрать товар у поставщика',
      'Обеспечить сохранность груза',
      'Отслеживание местоположения',
      'Информирование о прогрессе',
    ],
  },

  // Доставка получателю
  DELIVERED: {
    status: 'Доставка завершена',
    actions: [
      'Доставить товар получателю',
      'Получить подтверждение приемки',
      'Передать документы',
      'Закрыть заказ на доставку',
    ],
  },
}
```

### СЧЕТЧИКИ ЛОГИСТИЧЕСКИХ ЗАКАЗОВ:

```typescript
// Из pendingSuppliesCount - что видит логистика
const logisticsCounters = {
  // Основной счетчик для логистики
  logisticsOrders: 'Заказы требующие действий логистики',

  // Логистика не видит:
  incomingSupplierOrders: 0, // Это для поставщиков
  ourSupplyOrders: 0, // Это для инициаторов заказов
  sellerSupplyOrders: 0, // Это для фулфилмента

  // Логика подсчета для логистики:
  conditions: [
    'logisticsPartnerId = currentUser.organization.id',
    "status IN ['CONFIRMED', 'SUPPLIER_APPROVED', 'LOGISTICS_CONFIRMED']",
  ],

  // Приоритет задач:
  priority: 'logisticsOrders = основной показатель работы',
}
```

## 🛣️ УПРАВЛЕНИЕ МАРШРУТАМИ

### 1. СОЗДАНИЕ И ПЛАНИРОВАНИЕ МАРШРУТОВ:

```typescript
interface RouteManagement {
  // Создание базовых маршрутов
  routeCreation: {
    process: 'Логист создает типовые маршруты доставки'
    parameters: [
      'fromLocation - откуда забираем',
      'toLocation - куда доставляем',
      'priceUnder1m3 - цена для малых грузов',
      'priceOver1m3 - цена для больших грузов',
    ]
  }

  // Привязка к конкретным заказам
  supplyRoutes: {
    model: 'SupplyRoute'
    fields: [
      'supplyOrderId - привязка к заказу поставки',
      'logisticsId - ссылка на базовый маршрут',
      'fromAddress/toAddress - точные адреса',
      'distance - расстояние в км',
      'estimatedTime - время доставки в часах',
      'price - итоговая стоимость',
      'status - статус выполнения маршрута',
    ]
  }

  // Оптимизация маршрутов
  optimization: {
    factors: [
      'Минимизация пробега',
      'Объединение попутных грузов',
      'Учет графика работы складов',
      'Избежание пробок и ограничений',
    ]
  }
}
```

### 2. ОТСЛЕЖИВАНИЕ И КОНТРОЛЬ:

```typescript
interface LogisticsTracking {
  // Статусы выполнения маршрута
  routeStatuses: {
    pending: 'Маршрут запланирован'
    in_progress: 'Выполняется доставка'
    completed: 'Доставка завершена'
    cancelled: 'Маршрут отменен'
  }

  // Мониторинг транспорта
  vehicleTracking: {
    gpsTracking: 'GPS отслеживание местоположения'
    statusUpdates: 'Регулярные обновления статуса'
    etaCalculation: 'Расчет времени прибытия'
    exceptionHandling: 'Обработка нестандартных ситуаций'
  }

  // Документооборот
  documentation: {
    pickupReceipts: 'Квитанции о заборе товара'
    deliveryConfirmations: 'Подтверждения доставки'
    damageReports: 'Акты о повреждениях (если есть)'
    proofOfDelivery: 'Документы подтверждающие доставку'
  }
}
```

## 💼 ОПЕРАЦИОННОЕ УПРАВЛЕНИЕ

### 1. ПЛАНИРОВАНИЕ РЕСУРСОВ:

```typescript
interface ResourcePlanning {
  // Транспортные средства
  fleetManagement: {
    vehicles: 'Собственный/арендованный транспорт'
    capacity: 'Грузоподъемность и объем кузова'
    specialization: 'Рефрижераторы, фургоны, открытые платформы'
    utilization: 'Коэффициент использования транспорта'
  }

  // Человеческие ресурсы
  staffManagement: {
    drivers: 'Водители со всеми разрешениями'
    loaders: 'Грузчики для погрузки/разгрузки'
    dispatchers: 'Диспетчеры для координации'
    schedules: 'График работы персонала'
  }

  // Инфраструктура
  infrastructure: {
    terminals: 'Сортировочные терминалы'
    warehouses: 'Временное хранение грузов'
    equipment: 'Погрузочная техника'
    maintenance: 'Ремонтная база'
  }
}
```

### 2. КАЧЕСТВО ОБСЛУЖИВАНИЯ:

```typescript
interface ServiceQuality {
  // KPI логистики
  performanceMetrics: {
    onTimeDelivery: 'Процент своевременных доставок'
    damageRate: 'Процент поврежденных грузов'
    customerSatisfaction: 'Удовлетворенность клиентов'
    costEfficiency: 'Эффективность затрат'
  }

  // Стандарты обслуживания
  serviceStandards: {
    responseTime: 'Время ответа на заявки'
    pickupTime: 'Время забора груза'
    deliveryWindows: 'Временные окна доставки'
    communication: 'Информирование о статусе'
  }

  // Улучшение процессов
  continuousImprovement: {
    feedback: 'Сбор обратной связи от клиентов'
    analysis: 'Анализ причин задержек и проблем'
    optimization: 'Постоянное улучшение процессов'
    training: 'Обучение персонала'
  }
}
```

## 🔐 ПРАВА ДОСТУПА И БЕЗОПАСНОСТЬ

### ДОСТУП К ДАННЫМ:

```typescript
const logisticsAccess = {
  // ✅ Полный доступ
  own: {
    routes: 'Собственные логистические маршруты',
    orders: 'Заказы на доставку (где мы - логистика)',
    pricing: 'Управление ценами на доставку',
    tracking: 'Отслеживание своих грузов',
    performance: 'Статистика выполнения заказов',
  },

  // ✅ Доступ на чтение (для выполнения работ)
  partners: {
    supplierAddresses: 'Адреса поставщиков для забора',
    fulfillmentAddresses: 'Адреса фулфилментов для доставки',
    orderDetails: 'Детали заказов (объем, вес, особенности)',
    contactInfo: 'Контактная информация для координации',
  },

  // ❌ Запрещенный доступ
  restricted: {
    productDetails: 'Подробности о товарах',
    pricing: 'Цены товаров поставщиков',
    margins: 'Коммерческая информация клиентов',
    competitors: 'Данные других логистических компаний',
  },
}
```

### БЕЗОПАСНОСТЬ ГРУЗОВ:

```typescript
const cargoSecurity = {
  // Ответственность логистики
  responsibility: {
    period: 'От момента забора до момента доставки',
    coverage: 'Полная материальная ответственность',
    insurance: 'Страхование грузов на время перевозки',
    documentation: 'Ведение документов о состоянии груза',
  },

  // Меры безопасности
  securityMeasures: {
    sealing: 'Опломбирование грузов',
    tracking: 'Постоянное отслеживание местоположения',
    accessControl: 'Ограниченный доступ к грузам',
    verification: 'Проверка целостности при доставке',
  },

  // Процедуры при проблемах
  incidentManagement: {
    damageReporting: 'Немедленное сообщение о повреждениях',
    lossInvestigation: 'Расследование случаев потери груза',
    compensation: 'Процедуры возмещения ущерба',
    prevention: 'Меры по предотвращению повторения',
  },
}
```

## 📱 DASHBOARD И ИНТЕРФЕЙСЫ

### ОСНОВНЫЕ РАЗДЕЛЫ КАБИНЕТА:

```typescript
interface LogisticsDashboard {
  sections: {
    orders: 'Активные заказы на доставку' // Основной раздел
    routes: 'Управление маршрутами' // Планирование маршрутов
    tracking: 'Отслеживание транспорта' // Real-time мониторинг
    pricing: 'Управление тарифами' // Ценообразование
    fleet: 'Управление автопарком' // Транспортные средства
    analytics: 'Аналитика и отчеты' // Performance metrics
    partners: 'Партнерские отношения' // Клиенты и поставщики
  }
}
```

### СПЕЦИАЛИЗИРОВАННЫЕ КОМПОНЕНТЫ:

```typescript
const logisticsComponents = [
  // Управление заказами
  'logistics-orders-dashboard.tsx', // Главный dashboard
  'delivery-tracking.tsx', // Отслеживание доставок
  'route-optimization.tsx', // Оптимизация маршрутов

  // Планирование и координация
  'route-planning-interface.tsx', // Планирование маршрутов
  'fleet-management.tsx', // Управление транспортом
  'driver-scheduling.tsx', // Планирование водителей

  // Мониторинг и контроль
  'real-time-tracking.tsx', // Real-time отслеживание
  'performance-analytics.tsx', // Аналитика производительности
  'logistics-statistics.tsx', // Статистика логистики
]
```

### WORKFLOW ИНТЕРФЕЙСЫ:

```typescript
interface LogisticsWorkflowUI {
  // Обработка входящих заявок
  orderProcessingInterface: {
    view: 'Заказы со статусом SUPPLIER_APPROVED'
    actions: ['Подтвердить', 'Отклонить', 'Запросить детали']
    calculations: 'Автоматический расчет стоимости и времени'
  }

  // Планирование доставок
  deliveryPlanningInterface: {
    view: 'Подтвержденные заказы (LOGISTICS_CONFIRMED)'
    tools: 'Карты, планировщик маршрутов, календарь водителей'
    optimization: 'Объединение заказов, оптимизация маршрутов'
  }

  // Исполнение и мониторинг
  executionInterface: {
    view: 'Активные доставки (SHIPPED)'
    tracking: 'GPS мониторинг, статус обновления'
    communication: 'Связь с водителями и клиентами'
  }
}
```

## ⚠️ КРИТИЧЕСКИЕ ПРАВИЛА ДОМЕНА

### 1. ОТВЕТСТВЕННОСТЬ ЗА ГРУЗ

> Логистика **ПОЛНОСТЬЮ ОТВЕТСТВЕННА** за сохранность груза от момента забора до доставки

### 2. ОБЯЗАТЕЛЬНОЕ ПОДТВЕРЖДЕНИЕ

> Логистика **ДОЛЖНА** подтвердить или отклонить заказ на доставку в установленные сроки

### 3. ТОЧНОСТЬ ЦЕНООБРАЗОВАНИЯ

> Цены **ДОЛЖНЫ БЫТЬ ТОЧНЫМИ** и учитывать все факторы (объем, расстояние, сложность)

### 4. СВОЕВРЕМЕННОСТЬ ДОСТАВКИ

> Логистика **ОБЯЗАНА** соблюдать согласованные временные рамки доставки

### 5. ДОКУМЕНТООБОРОТ

> **ВСЕ ОПЕРАЦИИ** должны сопровождаться соответствующими документами

### 6. КОММУНИКАЦИЯ

> **ПОСТОЯННОЕ ИНФОРМИРОВАНИЕ** всех участников о статусе доставки

---

_Извлечено из анализа: GraphQL resolvers, Prisma logistics model, supply route workflow_  
_Дата создания: 2025-08-21_  
_Основано на коде: src/graphql/resolvers.ts, prisma/schema.prisma, logistics patterns_
