Создание logist-cabinet-rules.md и оптимизация rules-complete.md
## Что создано: - logist-cabinet-rules.md - технические правила кабинета логистики по стандартизированной структуре - Добавлена система тарификации с примерами UI - Интерфейсы управления заявками и отслеживания доставок - GraphQL API для логистики (queries, mutations, subscriptions) ## Что изменено в rules-complete.md: - Раздел 12 "Кабинет логистики" сокращен до краткого описания со ссылкой на специализированный файл - Убрано ~80 строк дублирующего контента - Сохранена вся бизнес-логика workflow и статусов ## Что обновлено в CLAUDE.md: - Добавлен logist-cabinet-rules.md в список кабинет-специфичных правил - Добавлены автоматические триггеры для логистических задач Файл следует стандартизированной структуре wholesale-cabinet-rules.md и обеспечивает модульность системы правил. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -9,6 +9,7 @@
|
|||||||
### Специфичные правила по кабинетам:
|
### Специфичные правила по кабинетам:
|
||||||
|
|
||||||
- **`wholesale-cabinet-rules.md`** - при работе с кабинетом поставщика
|
- **`wholesale-cabinet-rules.md`** - при работе с кабинетом поставщика
|
||||||
|
- **`logist-cabinet-rules.md`** - при работе с кабинетом логистики
|
||||||
- **`visual-design-rules.md`** - при работе с UI/UX
|
- **`visual-design-rules.md`** - при работе с UI/UX
|
||||||
|
|
||||||
### Правила взаимодействия:
|
### Правила взаимодействия:
|
||||||
@ -18,6 +19,7 @@
|
|||||||
### Автоматическая активация:
|
### Автоматическая активация:
|
||||||
|
|
||||||
- Упоминание "поставщик", "wholesale", "/warehouse", "/supplier-orders" → читать wholesale-cabinet-rules.md
|
- Упоминание "поставщик", "wholesale", "/warehouse", "/supplier-orders" → читать wholesale-cabinet-rules.md
|
||||||
|
- Упоминание "логистика", "доставка", "logist", "/logistics-requests", "/routes" → читать logist-cabinet-rules.md
|
||||||
- Упоминание "дизайн", "UI", "компонент", "стиль" → читать visual-design-rules.md
|
- Упоминание "дизайн", "UI", "компонент", "стиль" → читать visual-design-rules.md
|
||||||
|
|
||||||
## 🚨 ЕДИНСТВЕННЫЙ ИСТОЧНИК ПРАВИЛ
|
## 🚨 ЕДИНСТВЕННЫЙ ИСТОЧНИК ПРАВИЛ
|
||||||
|
513
logist-cabinet-rules.md
Normal file
513
logist-cabinet-rules.md
Normal file
@ -0,0 +1,513 @@
|
|||||||
|
# ПРАВИЛА КАБИНЕТА ЛОГИСТИКИ (LOGIST)
|
||||||
|
|
||||||
|
> ⚠️ **ВАЖНО**: Это файл с техническими деталями кабинета логистики.
|
||||||
|
> Общие бизнес-правила находятся в **[rules-complete.md](./rules-complete.md)**
|
||||||
|
|
||||||
|
## Когда использовать этот файл:
|
||||||
|
|
||||||
|
- Работа с компонентами `/logistics-requests`, `/routes`
|
||||||
|
- GraphQL запросы для логистики
|
||||||
|
- UI/UX специфика кабинета логистики
|
||||||
|
- Технические детали реализации доставок
|
||||||
|
|
||||||
|
## 1. 🚚 СТРУКТУРА КАБИНЕТА ЛОГИСТИКИ
|
||||||
|
|
||||||
|
### 1.1 Основные разделы
|
||||||
|
|
||||||
|
**ЛОГИСТИКА (`LOGIST`)** имеет доступ к следующим разделам:
|
||||||
|
|
||||||
|
- **Заявки** (`/logistics-requests`) - управление заявками на доставку
|
||||||
|
- **Маршруты** (`/routes`) - планирование маршрутов
|
||||||
|
- **В пути** (`/in-transit`) - отслеживание грузов
|
||||||
|
- **История** (`/delivery-history`) - архив доставок
|
||||||
|
- **Партнеры** (`/partners`) - управление контрагентами
|
||||||
|
- **Мессенджер** (`/messenger`) - связь с партнерами
|
||||||
|
- **Настройки** (`/settings`) - профиль и настройки
|
||||||
|
- **Экономика** (`/economics`) - финансовая аналитика
|
||||||
|
|
||||||
|
### 1.2 Навигация и роутинг
|
||||||
|
|
||||||
|
#### При входе в систему:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
switch (user?.organization?.type) {
|
||||||
|
case 'LOGIST':
|
||||||
|
router.push('/logistics-requests') // Направляем на страницу заявок
|
||||||
|
break
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Специальная логика роутинга:
|
||||||
|
|
||||||
|
> 📖 **Бизнес-логика роутинга**: См. [rules-complete.md#4-система-ролей-и-доступов](./rules-complete.md#4--система-ролей-и-доступов)
|
||||||
|
|
||||||
|
## 2. 🎨 UI/UX КОМПОНЕНТЫ
|
||||||
|
|
||||||
|
### 2.1 Dashboard компоненты
|
||||||
|
|
||||||
|
#### Основные компоненты кабинета:
|
||||||
|
|
||||||
|
- `LogisticsRequestsDashboard` - главный компонент заявок
|
||||||
|
- `RoutesManager` - управление маршрутами
|
||||||
|
- `DeliveryTracker` - отслеживание доставок
|
||||||
|
- `LogisticsEconomicsPage` - экономическая аналитика
|
||||||
|
|
||||||
|
#### Wrapper-компоненты:
|
||||||
|
|
||||||
|
- `HomePageWrapper` - маршрутизация по типам организаций
|
||||||
|
- `EconomicsPageWrapper` - адаптивная экономика по кабинетам
|
||||||
|
|
||||||
|
#### Специализированные компоненты:
|
||||||
|
|
||||||
|
- `LogisticsRequestCard` - карточка заявки на доставку
|
||||||
|
- `RouteCard` - карточка маршрута
|
||||||
|
- `DeliveryStatusTracker` - трекер статуса доставки
|
||||||
|
- `LogisticsStats` - статистика доставок
|
||||||
|
|
||||||
|
### 2.2 Карточка заявки на доставку
|
||||||
|
|
||||||
|
#### Структура карточки:
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
<div className="logistics-request-card glass-card">
|
||||||
|
<div className="flex items-start justify-between">
|
||||||
|
{/* Основная информация */}
|
||||||
|
<div className="flex-1">
|
||||||
|
<h4 className="text-white font-medium">Заявка #{request.number}</h4>
|
||||||
|
<p className="text-white/60 text-sm mt-1">
|
||||||
|
{request.fromLocation} → {request.toLocation}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Статус */}
|
||||||
|
<Badge className={getStatusColor(request.status)}>{getStatusLabel(request.status)}</Badge>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Детали доставки */}
|
||||||
|
<div className="mt-4 space-y-2">
|
||||||
|
<div className="flex justify-between text-sm">
|
||||||
|
<span className="text-white/60">Вес:</span>
|
||||||
|
<span className="text-white">{request.weight} кг</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex justify-between text-sm">
|
||||||
|
<span className="text-white/60">Объем:</span>
|
||||||
|
<span className="text-white">{request.volume} м³</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 Интерфейс отслеживания
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
<div className="delivery-tracker">
|
||||||
|
<div className="flex items-center justify-between mb-4">
|
||||||
|
<h3 className="text-white font-semibold">Статус доставки</h3>
|
||||||
|
<Badge className="bg-yellow-500/20 text-yellow-300">В пути</Badge>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Прогресс доставки */}
|
||||||
|
<div className="relative">
|
||||||
|
<div className="absolute left-4 top-0 bottom-0 w-0.5 bg-white/20"></div>
|
||||||
|
{deliverySteps.map((step, index) => (
|
||||||
|
<div key={step.id} className="flex items-center gap-4 mb-4">
|
||||||
|
<div
|
||||||
|
className={`
|
||||||
|
w-8 h-8 rounded-full flex items-center justify-center
|
||||||
|
${step.completed ? 'bg-green-500' : 'bg-white/10'}
|
||||||
|
`}
|
||||||
|
>
|
||||||
|
{step.completed ? '✓' : index + 1}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-white text-sm">{step.label}</p>
|
||||||
|
<p className="text-white/60 text-xs">{step.time}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 3. 📊 ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ
|
||||||
|
|
||||||
|
> 📖 **Бизнес-правила**: См. [rules-complete.md#12-кабинет-логистики](./rules-complete.md#12--кабинет-логистики) для правил workflow и процессов
|
||||||
|
|
||||||
|
### 3.1 Основные функции логистики
|
||||||
|
|
||||||
|
**РОЛЬ В СИСТЕМЕ**: Управление доставками и транспортировкой
|
||||||
|
|
||||||
|
**КЛЮЧЕВЫЕ ФУНКЦИИ**:
|
||||||
|
|
||||||
|
- **ПОДТВЕРЖДЕНИЕ**: Возможности доставки поставок
|
||||||
|
- **ПЛАНИРОВАНИЕ**: Оптимальных маршрутов
|
||||||
|
- **УПРАВЛЕНИЕ**: Транспортом и водителями
|
||||||
|
- **ОТСЛЕЖИВАНИЕ**: Мониторинг грузов в пути
|
||||||
|
|
||||||
|
### 3.2 Workflow для логистики
|
||||||
|
|
||||||
|
#### **ЭТАП 1: Получение заявки**
|
||||||
|
|
||||||
|
1. Логистика получает уведомление о новой поставке
|
||||||
|
2. Заявка появляется в разделе "Заявки" кабинета логистики
|
||||||
|
3. Логист изучает детали поставки (объем, вес, маршрут)
|
||||||
|
|
||||||
|
#### **ЭТАП 2: Подтверждение доставки**
|
||||||
|
|
||||||
|
4. Логист нажимает кнопку "Одобрить"
|
||||||
|
5. Статус поставки меняется на `LOGISTICS_CONFIRMED`
|
||||||
|
6. Уведомления отправляются всем участникам
|
||||||
|
|
||||||
|
#### **ЭТАП 3: Получение груза**
|
||||||
|
|
||||||
|
7. Логистика приезжает к поставщику
|
||||||
|
8. Поставщик передает товар и документы
|
||||||
|
9. В системе отмечается "Груз получен"
|
||||||
|
10. Статус меняется на `IN_TRANSIT`
|
||||||
|
|
||||||
|
#### **ЭТАП 4: Доставка**
|
||||||
|
|
||||||
|
11. Логистика доставляет товар на фулфилмент-центр
|
||||||
|
12. В кабинете логистики нажимают "Доставлено"
|
||||||
|
13. Фулфилмент принимает товар и отмечает "Принято"
|
||||||
|
|
||||||
|
### 3.3 Система тарификации
|
||||||
|
|
||||||
|
**ПАРАМЕТРЫ ТАРИФИКАЦИИ**:
|
||||||
|
|
||||||
|
- **Тариф до 1м³** - базовая стоимость для малых грузов
|
||||||
|
- **Тариф свыше 1м³** - стоимость для крупных грузов
|
||||||
|
- **Маршруты доставки** - от точки отправления до точки назначения
|
||||||
|
- **Описание услуг** - дополнительные условия доставки
|
||||||
|
|
||||||
|
**РАСЧЕТ СТОИМОСТИ**:
|
||||||
|
|
||||||
|
- Автоматический расчет стоимости доставки по объему груза
|
||||||
|
- Отображение примерной стоимости при создании заказа
|
||||||
|
- Учет специфики маршрута и условий доставки
|
||||||
|
|
||||||
|
#### Пример интерфейса тарификации:
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
<div className="tariff-calculator glass-card p-4">
|
||||||
|
<h3 className="text-white font-semibold mb-4">Расчет стоимости доставки</h3>
|
||||||
|
|
||||||
|
<div className="space-y-3">
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-white/60">Объем груза:</span>
|
||||||
|
<span className="text-white font-medium">{volume} м³</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex justify-between">
|
||||||
|
<span className="text-white/60">Базовый тариф:</span>
|
||||||
|
<span className="text-white">{volume <= 1 ? tariffUnder1m3 : tariffOver1m3} ₽/м³</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="border-t border-white/10 pt-3">
|
||||||
|
<div className="flex justify-between text-lg">
|
||||||
|
<span className="text-white font-semibold">Итого:</span>
|
||||||
|
<span className="text-green-400 font-bold">{calculateTotal(volume, tariff)} ₽</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.4 Управление заявками
|
||||||
|
|
||||||
|
**РАЗДЕЛЫ КАБИНЕТА ЛОГИСТИКИ**:
|
||||||
|
|
||||||
|
- **НОВЫЕ ЗАЯВКИ** - поступившие заявки на доставку
|
||||||
|
- **В РАБОТЕ** - принятые к исполнению заявки
|
||||||
|
- **ВЫПОЛНЕННЫЕ** - завершенные доставки
|
||||||
|
- **ОТКЛОНЕННЫЕ** - заявки, которые не могут быть выполнены
|
||||||
|
|
||||||
|
**ИНФОРМАЦИЯ О ЗАЯВКЕ**:
|
||||||
|
|
||||||
|
- Детали груза (объем, вес, габариты)
|
||||||
|
- Маршрут доставки (откуда - куда)
|
||||||
|
- Срочность доставки
|
||||||
|
- Особые требования к транспортировке
|
||||||
|
- Контактная информация участников
|
||||||
|
|
||||||
|
#### Интерфейс управления заявками:
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
<Tabs defaultValue="new" className="w-full">
|
||||||
|
<TabsList className="grid w-full grid-cols-4 bg-white/5">
|
||||||
|
<TabsTrigger value="new" className="data-[state=active]:bg-white/10">
|
||||||
|
Новые
|
||||||
|
<Badge className="ml-2 bg-blue-500/20">{newCount}</Badge>
|
||||||
|
</TabsTrigger>
|
||||||
|
<TabsTrigger value="in-progress" className="data-[state=active]:bg-white/10">
|
||||||
|
В работе
|
||||||
|
<Badge className="ml-2 bg-yellow-500/20">{inProgressCount}</Badge>
|
||||||
|
</TabsTrigger>
|
||||||
|
<TabsTrigger value="completed" className="data-[state=active]:bg-white/10">
|
||||||
|
Выполненные
|
||||||
|
</TabsTrigger>
|
||||||
|
<TabsTrigger value="rejected" className="data-[state=active]:bg-white/10">
|
||||||
|
Отклоненные
|
||||||
|
</TabsTrigger>
|
||||||
|
</TabsList>
|
||||||
|
|
||||||
|
<TabsContent value="new" className="mt-4">
|
||||||
|
<div className="grid gap-4">
|
||||||
|
{newRequests.map((request) => (
|
||||||
|
<LogisticsRequestCard key={request.id} request={request} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</TabsContent>
|
||||||
|
</Tabs>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. 🛠️ GRAPHQL API
|
||||||
|
|
||||||
|
### 4.1 Основные запросы (Queries)
|
||||||
|
|
||||||
|
#### Получение заявок на доставку:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetLogisticsRequests {
|
||||||
|
logisticsRequests(where: { status: PENDING }) {
|
||||||
|
id
|
||||||
|
number
|
||||||
|
fromLocation
|
||||||
|
toLocation
|
||||||
|
weight
|
||||||
|
volume
|
||||||
|
status
|
||||||
|
supply {
|
||||||
|
id
|
||||||
|
totalAmount
|
||||||
|
organization {
|
||||||
|
name # Заказчик
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получение активных маршрутов:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetActiveRoutes {
|
||||||
|
routes(where: { status: ACTIVE }) {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
driver {
|
||||||
|
name
|
||||||
|
phone
|
||||||
|
}
|
||||||
|
deliveries {
|
||||||
|
id
|
||||||
|
status
|
||||||
|
estimatedTime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получение статистики:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetLogisticsStats {
|
||||||
|
logisticsStats {
|
||||||
|
totalDeliveries
|
||||||
|
activeDeliveries
|
||||||
|
completedToday
|
||||||
|
averageDeliveryTime
|
||||||
|
onTimeRate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Мутации (Mutations)
|
||||||
|
|
||||||
|
#### Подтверждение доставки:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
mutation ConfirmLogistics($supplyId: ID!) {
|
||||||
|
confirmLogistics(supplyId: $supplyId) {
|
||||||
|
success
|
||||||
|
supply {
|
||||||
|
id
|
||||||
|
status # Изменится на LOGISTICS_CONFIRMED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Обновление статуса доставки:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
mutation UpdateDeliveryStatus($deliveryId: ID!, $status: DeliveryStatus!) {
|
||||||
|
updateDeliveryStatus(id: $deliveryId, status: $status) {
|
||||||
|
success
|
||||||
|
delivery {
|
||||||
|
id
|
||||||
|
status
|
||||||
|
updatedAt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Создание маршрута:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
mutation CreateRoute($input: RouteInput!) {
|
||||||
|
createRoute(input: $input) {
|
||||||
|
success
|
||||||
|
route {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
driver {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
deliveries {
|
||||||
|
id
|
||||||
|
fromLocation
|
||||||
|
toLocation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 Подписки (Subscriptions)
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
subscription DeliveryTracking($deliveryId: ID!) {
|
||||||
|
deliveryUpdates(deliveryId: $deliveryId) {
|
||||||
|
id
|
||||||
|
status
|
||||||
|
currentLocation
|
||||||
|
estimatedArrival
|
||||||
|
events {
|
||||||
|
type
|
||||||
|
timestamp
|
||||||
|
description
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. 📁 ТЕХНИЧЕСКИЕ КОМПОНЕНТЫ
|
||||||
|
|
||||||
|
### 5.1 Расположение компонентов
|
||||||
|
|
||||||
|
```
|
||||||
|
src/components/
|
||||||
|
├── logistics/ # Компоненты логистики
|
||||||
|
│ ├── logistics-requests-dashboard.tsx
|
||||||
|
│ ├── logistics-request-card.tsx
|
||||||
|
│ ├── route-manager.tsx
|
||||||
|
│ └── delivery-tracker.tsx
|
||||||
|
├── routes/ # Компоненты маршрутов
|
||||||
|
│ ├── route-card.tsx
|
||||||
|
│ ├── route-planner.tsx
|
||||||
|
│ └── driver-assignment.tsx
|
||||||
|
└── economics/ # Экономика
|
||||||
|
└── logistics-economics-page.tsx
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5.2 Страницы (Pages)
|
||||||
|
|
||||||
|
```
|
||||||
|
src/app/
|
||||||
|
├── logistics-requests/
|
||||||
|
│ └── page.tsx # Страница заявок
|
||||||
|
├── routes/
|
||||||
|
│ └── page.tsx # Страница маршрутов
|
||||||
|
├── in-transit/
|
||||||
|
│ └── page.tsx # Активные доставки
|
||||||
|
└── delivery-history/
|
||||||
|
└── page.tsx # История доставок
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. 🚨 ТЕХНИЧЕСКИЕ ПРАВИЛА И ОГРАНИЧЕНИЯ
|
||||||
|
|
||||||
|
> 📖 **Workflow поставок**: См. [rules-complete.md#5-workflow-поставок](./rules-complete.md#5--workflow-поставок) для бизнес-процессов
|
||||||
|
|
||||||
|
### 6.1 Обязательные проверки:
|
||||||
|
|
||||||
|
- Проверка типа организации: `organization.type === 'LOGIST'`
|
||||||
|
- Валидация прав доступа на уровне GraphQL резолверов
|
||||||
|
- Проверка возможности доставки (вес, объем, расстояние)
|
||||||
|
- Контроль статусов перед изменением
|
||||||
|
|
||||||
|
### 6.2 Правила безопасности доступа:
|
||||||
|
|
||||||
|
#### Контроль на уровне компонентов:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
{user?.organization?.type === "LOGIST" && (
|
||||||
|
<LogisticsRequestsDashboard />
|
||||||
|
)}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Проверки в GraphQL резолверах:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Проверка что пользователь - логистика
|
||||||
|
if (context.user.organization.type !== 'LOGIST') {
|
||||||
|
throw new Error('Access denied: Logistics access required')
|
||||||
|
}
|
||||||
|
|
||||||
|
// Проверка доступа к заявкам
|
||||||
|
const request = await prisma.logisticsRequest.findFirst({
|
||||||
|
where: {
|
||||||
|
id: requestId,
|
||||||
|
organizationId: context.user.organizationId,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6.3 Запрещено:
|
||||||
|
|
||||||
|
- Изменять статусы поставок минуя workflow
|
||||||
|
- Подтверждать доставки без физического получения груза
|
||||||
|
- Показывать данные других логистических компаний
|
||||||
|
- Изменять данные после завершения доставки
|
||||||
|
|
||||||
|
### 6.4 Правила статусов доставки:
|
||||||
|
|
||||||
|
- `LOGISTICS_CONFIRMED` → только после проверки возможности
|
||||||
|
- `IN_TRANSIT` → только после физического получения груза
|
||||||
|
- `DELIVERED` → требует подтверждения от фулфилмента
|
||||||
|
|
||||||
|
### 6.5 Правила логистики
|
||||||
|
|
||||||
|
**ОБЯЗАТЕЛЬНО**:
|
||||||
|
|
||||||
|
- Своевременное подтверждение заявок
|
||||||
|
- Соблюдение сроков доставки
|
||||||
|
- Бережная транспортировка товаров
|
||||||
|
- Уведомление о статусе доставки
|
||||||
|
- Документальное оформление приема/передачи груза
|
||||||
|
|
||||||
|
**ЗАПРЕЩЕНО**:
|
||||||
|
|
||||||
|
- Принятие заявок без подтверждения возможности выполнения
|
||||||
|
- Нарушение сроков доставки без уведомления
|
||||||
|
- Повреждение товаров при транспортировке
|
||||||
|
- Передача груза без документального оформления
|
||||||
|
- Изменение маршрута без согласования
|
||||||
|
|
||||||
|
**ИНТЕГРАЦИЯ С ПАРТНЕРАМИ**:
|
||||||
|
|
||||||
|
- Логистика видит только партнеров-поставщиков и фулфилмент-центры
|
||||||
|
- Выбор логистики осуществляется из списка партнеров типа `LOGIST`
|
||||||
|
- Все взаимодействия фиксируются в системе уведомлений
|
||||||
|
|
||||||
|
> 📖 **Критические запреты**: См. [rules-complete.md#17-критические-запреты](./rules-complete.md#17--критические-запреты)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Последнее обновление**: Август 2025
|
||||||
|
**Связанные файлы**:
|
||||||
|
|
||||||
|
- [rules-complete.md](./rules-complete.md) - Общие бизнес-правила
|
||||||
|
- [visual-design-rules.md](./visual-design-rules.md) - Визуальные правила
|
@ -113,7 +113,7 @@
|
|||||||
| ----------------------- | -------------------------------------------------------------------------------------- | --------------------------------------------- |
|
| ----------------------- | -------------------------------------------------------------------------------------- | --------------------------------------------- |
|
||||||
| **Типы предметов** | [2](#2--типизация-предметов) | PRODUCT, CONSUMABLE, DEFECT, FINISHED_PRODUCT |
|
| **Типы предметов** | [2](#2--типизация-предметов) | PRODUCT, CONSUMABLE, DEFECT, FINISHED_PRODUCT |
|
||||||
| **Кабинет фулфилмента** | [11](#11--кабинет-фулфилмента-полная-документация) | Склад, Услуги, Сотрудники, 6 модулей |
|
| **Кабинет фулфилмента** | [11](#11--кабинет-фулфилмента-полная-документация) | Склад, Услуги, Сотрудники, 6 модулей |
|
||||||
| **Workflow поставок** | [5](#5--workflow-поставок) | 8 статусов, уведомления, логистика |
|
| **Workflow поставок** | [5](#5--workflow-поставок) | 8 статусов, уведомления, роль логистики |
|
||||||
| **GraphQL запросы** | [18](#18--graphql-и-typescript-правила), [24](#24--технические-приложения) | Резолверы, мутации, типизация |
|
| **GraphQL запросы** | [18](#18--graphql-и-typescript-правила), [24](#24--технические-приложения) | Резолверы, мутации, типизация |
|
||||||
| **Система партнерства** | [13](#13--система-партнерства-и-контрагентов) | Counterparty, WHOLESALE, заявки |
|
| **Система партнерства** | [13](#13--система-партнерства-и-контрагентов) | Counterparty, WHOLESALE, заявки |
|
||||||
| **Рынки и маркет** | [10.1](#101-разделение-понятий-рынок-vs-маркет), [18.7](#187-правила-рынков-и-маркета) | РЫНОК ≠ МАРКЕТ, Organization.market |
|
| **Рынки и маркет** | [10.1](#101-разделение-понятий-рынок-vs-маркет), [18.7](#187-правила-рынков-и-маркета) | РЫНОК ≠ МАРКЕТ, Organization.market |
|
||||||
@ -2309,90 +2309,16 @@ type Supply {
|
|||||||
|
|
||||||
## 12. 🚚 КАБИНЕТ ЛОГИСТИКИ
|
## 12. 🚚 КАБИНЕТ ЛОГИСТИКИ
|
||||||
|
|
||||||
### 12.1 Основные функции логистики
|
> 📖 **Технические детали кабинета**: См. [logist-cabinet-rules.md](./logist-cabinet-rules.md) для компонентов, GraphQL, UI/UX и всех технических деталей реализации
|
||||||
|
|
||||||
**РОЛЬ В СИСТЕМЕ**: Управление доставками и транспортировкой
|
**КРАТКАЯ РОЛЬ В СИСТЕМЕ**: Управление доставками и транспортировкой
|
||||||
|
|
||||||
**ОСНОВНЫЕ ФУНКЦИИ**:
|
**КЛЮЧЕВЫЕ ФУНКЦИИ**:
|
||||||
|
|
||||||
- **ПОДТВЕРЖДЕНИЕ ДОСТАВКИ**: Подтверждение возможности доставки поставок
|
- Подтверждение возможности доставки поставок
|
||||||
- **ТРАНСПОРТИРОВКА**: Организация и выполнение доставки товаров
|
- Организация и выполнение доставки товаров
|
||||||
- **КОНТРОЛЬ МАРШРУТОВ**: Управление логистическими маршрутами
|
- Управление логистическими маршрутами
|
||||||
- **ОТСЛЕЖИВАНИЕ**: Мониторинг грузов в пути
|
- Мониторинг грузов в пути
|
||||||
|
|
||||||
### 12.2 Workflow для логистики
|
|
||||||
|
|
||||||
#### **ЭТАП 1: Получение заявки**
|
|
||||||
|
|
||||||
1. Логистика получает уведомление о новой поставке
|
|
||||||
2. Заявка появляется в разделе "Заявки" кабинета логистики
|
|
||||||
3. Логист изучает детали поставки (объем, вес, маршрут)
|
|
||||||
|
|
||||||
#### **ЭТАП 2: Подтверждение доставки**
|
|
||||||
|
|
||||||
4. Логист нажимает кнопку "Одобрить"
|
|
||||||
5. Статус поставки меняется на `LOGISTICS_CONFIRMED`
|
|
||||||
6. Уведомления отправляются всем участникам
|
|
||||||
|
|
||||||
#### **ЭТАП 3: Забор товара**
|
|
||||||
|
|
||||||
7. Логист приезжает к поставщику за товаром
|
|
||||||
8. Поставщик отгружает товар логисту
|
|
||||||
9. Поставщик отмечает "Отправлено"
|
|
||||||
10. Статус меняется на `SHIPPED`, затем `IN_TRANSIT`
|
|
||||||
|
|
||||||
#### **ЭТАП 4: Доставка**
|
|
||||||
|
|
||||||
11. Логистика доставляет товар на фулфилмент-центр
|
|
||||||
12. В кабинете логистики нажимают "Доставлено"
|
|
||||||
13. Фулфилмент принимает товар и отмечает "Принято"
|
|
||||||
|
|
||||||
### 12.3 Система тарификации
|
|
||||||
|
|
||||||
**ПАРАМЕТРЫ ТАРИФИКАЦИИ**:
|
|
||||||
|
|
||||||
- **Тариф до 1м³** - базовая стоимость для малых грузов
|
|
||||||
- **Тариф свыше 1м³** - стоимость для крупных грузов
|
|
||||||
- **Маршруты доставки** - от точки отправления до точки назначения
|
|
||||||
- **Описание услуг** - дополнительные условия доставки
|
|
||||||
|
|
||||||
**РАСЧЕТ СТОИМОСТИ**:
|
|
||||||
|
|
||||||
- Автоматический расчет стоимости доставки по объему груза
|
|
||||||
- Отображение примерной стоимости при создании заказа
|
|
||||||
- Учет специфики маршрута и условий доставки
|
|
||||||
|
|
||||||
### 12.4 Управление заявками
|
|
||||||
|
|
||||||
**РАЗДЕЛЫ КАБИНЕТА ЛОГИСТИКИ**:
|
|
||||||
|
|
||||||
- **НОВЫЕ ЗАЯВКИ** - поступившие заявки на доставку
|
|
||||||
- **В РАБОТЕ** - принятые к исполнению заявки
|
|
||||||
- **ВЫПОЛНЕННЫЕ** - завершенные доставки
|
|
||||||
- **ОТКЛОНЕННЫЕ** - заявки, которые не могут быть выполнены
|
|
||||||
|
|
||||||
**ИНФОРМАЦИЯ О ЗАЯВКЕ**:
|
|
||||||
|
|
||||||
- Детали груза (объем, вес, габариты)
|
|
||||||
- Маршрут доставки (откуда - куда)
|
|
||||||
- Срочность доставки
|
|
||||||
- Особые требования к транспортировке
|
|
||||||
- Контактная информация участников
|
|
||||||
|
|
||||||
### 12.5 Правила логистики
|
|
||||||
|
|
||||||
**ОБЯЗАТЕЛЬНО**:
|
|
||||||
|
|
||||||
- Своевременное подтверждение заявок
|
|
||||||
- Соблюдение сроков доставки
|
|
||||||
- Бережная транспортировка товаров
|
|
||||||
- Уведомление о статусе доставки
|
|
||||||
|
|
||||||
**ЗАПРЕЩЕНО**:
|
|
||||||
|
|
||||||
- Принятие заявок без подтверждения возможности выполнения
|
|
||||||
- Нарушение сроков доставки без уведомления
|
|
||||||
- Повреждение товаров при транспортировке
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user