Files
sfera-new/docs/presentation-layer/URL_ROUTING_RULES.md
2025-08-30 15:51:41 +03:00

242 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📋 ПРАВИЛА URL И МАРШРУТИЗАЦИИ СИСТЕМЫ SFERA
> **Дата создания**: 28.08.2025
> **Статус**: ✅ Активно
> **Связанные документы**:
> - [COMPONENT_ARCHITECTURE.md](./COMPONENT_ARCHITECTURE.md)
> - [DOMAIN_MODEL.md](../core/DOMAIN_MODEL.md)
> - [SIDEBAR_ARCHITECTURE_RULES.md](./SIDEBAR_ARCHITECTURE_RULES.md)
## 🎯 ОСНОВНЫЕ ПРИНЦИПЫ
### ФОРМУЛА URL
```
/{role}/{domain}/{section}/{view}
```
### КЛЮЧЕВЫЕ ПРАВИЛА
1. **РОЛЕВОЕ РАЗДЕЛЕНИЕ**
- Каждая роль имеет свой базовый путь
- `/seller` - кабинет селлера
- `/fulfillment` - кабинет фулфилмента
- `/wholesale` - кабинет поставщика
- `/logistics` - кабинет логистики
2. **ИЕРАРХИЧЕСКАЯ СТРУКТУРА**
- От общего к частному
- Максимум 4 уровня вложенности
3. **ИМЕНОВАНИЕ**
- Английские термины
- Множественное число для коллекций: `supplies/`, `orders/`
- Единственное число для действий: `create/`
- Дефисы для составных слов: `seller-consumables`
---
## 🏢 URL ПО РОЛЯМ
### 🛒 SELLER (Селлер)
```
/seller/
├── home # Главная селлера
├── supplies/ # Поставки селлера
│ ├── goods/ # Товары селлера → склад ФФ
│ │ ├── cards # Вид: карточки товаров
│ │ └── suppliers # Вид: по поставщикам
│ ├── consumables # Расходники селлера → склад ФФ
│ └── marketplace/ # Поставки на маркетплейсы
│ ├── wildberries # Поставки на WB
│ └── ozon # Поставки на Ozon
├── create/ # Создание поставок
│ ├── goods # Создать поставку товаров
│ └── consumables # Создать поставку расходников
├── statistics # Статистика селлера
├── messenger # Мессенджер
├── economics # Экономика
├── partners # Партнёры
├── market # Маркет
├── exchange # Биржа
└── settings # Настройки
```
**Примеры URL:**
- `/seller/home` - главная страница селлера
- `/seller/supplies/goods/cards` - товары-карточки
- `/seller/supplies/consumables` - расходники селлера
- `/seller/supplies/marketplace/wildberries` - поставки на WB
- `/seller/create/consumables` - создание расходников
### 🏭 FULFILLMENT (Фулфилмент)
```
/fulfillment/
├── home # Главная фулфилмента
├── supplies/ # Входящие поставки на ФФ
│ ├── goods/ # Товары от селлеров
│ │ ├── new # Новые поставки
│ │ ├── receiving # Ожидают приемки
│ │ └── received # Принятые на склад
│ ├── consumables # Расходники ФФ
│ └── seller-consumables # Расходники селлеров (на хранении)
├── warehouse/ # Складские операции
│ ├── supplies # Остатки расходников ФФ
│ ├── seller-consumables # Остатки расходников селлеров
│ └── products # Остатки товаров
├── create/ # Создание заказов ФФ
│ └── consumables # Заказ расходников ФФ
└── statistics # Статистика фулфилмента
```
**Примеры URL:**
- `/fulfillment/home` - главная страница фулфилмента
- `/fulfillment/supplies/goods/receiving` - товары на приемке
- `/fulfillment/supplies/consumables` - расходники ФФ
- `/fulfillment/supplies/seller-consumables` - расходники селлеров
- `/fulfillment/warehouse/supplies` - склад расходников
### 🏪 WHOLESALE (Поставщик)
```
/wholesale/
├── home # Главная поставщика
├── orders/ # Входящие заказы (единый раздел)
│ └── (включает товары + расходники ФФ + расходники селлеров)
├── catalog/ # Каталог товаров поставщика
│ ├── goods # Товары для продажи
│ └── consumables # Расходники
└── statistics # Статистика поставщика
```
**Примеры URL:**
- `/wholesale/home` - главная страница поставщика
- `/wholesale/orders` - все входящие заказы
- `/wholesale/catalog/goods` - каталог товаров
- `/wholesale/catalog/consumables` - каталог расходников
### 🚛 LOGISTICS (Логистика)
```
/logistics/
├── home # 🏠 Главная логистики
├── orders/ # 🚛 Перевозки (логистические заказы)
│ ├── pending # Ожидают подтверждения
│ ├── confirmed # Подтвержденные
│ ├── in-transit # В пути
│ └── delivered # Доставленные
├── messenger # 💬 Мессенджер
├── economics # 💰 Экономика
├── partners # 🤝 Партнёры
├── market # 🏪 Маркет
├── exchange # 📈 Биржа
├── routes # 🗺️ Управление маршрутами
└── settings # ⚙️ Настройки
```
**Примеры URL (в порядке сайдбара):**
- `/logistics/home` - 🏠 главная страница логистики
- `/logistics/orders/pending` - 🚛 ожидающие заказы (перевозки)
- `/logistics/messenger` - 💬 мессенджер логиста
- `/logistics/economics` - 💰 экономика логистической компании
- `/logistics/partners` - 🤝 партнёры логистики
- `/logistics/market` - 🏪 маркет логистических услуг
- `/logistics/exchange` - 📈 биржа логистических услуг
- `/logistics/settings` - ⚙️ настройки профиля
---
## 🔄 РЕДИРЕКТЫ ДЛЯ СОВМЕСТИМОСТИ
Старые URL автоматически перенаправляются на новые:
```typescript
// Старый URL → Новый URL
/supplies → /seller/supplies/goods/cards
/fulfillment-supplies → /fulfillment/supplies/goods/receiving
/supplier-orders → /wholesale/orders
/logistics-orders → /logistics/orders/pending
/home → ролевой редирект на /[role]/home
```
---
## 📏 ТЕХНИЧЕСКИЕ ДЕТАЛИ РЕАЛИЗАЦИИ
### ДЕФОЛТНЫЕ СТРАНИЦЫ
При переходе на корневой URL роли происходит редирект:
```typescript
/seller → /seller/home
/fulfillment → /fulfillment/home
/wholesale → /wholesale/home
/logistics → /logistics/home
```
### СТРУКТУРА ФАЙЛОВ
```
src/app/
├── seller/
│ ├── page.tsx # Редирект на дефолтную страницу
│ ├── supplies/
│ │ ├── page.tsx # Редирект на goods/cards
│ │ ├── goods/
│ │ │ ├── page.tsx # Редирект на cards
│ │ │ ├── cards/page.tsx # Основная страница
│ │ │ └── suppliers/page.tsx
│ │ └── consumables/page.tsx
│ └── create/...
├── fulfillment/...
├── wholesale/...
└── logistics/...
```
### ОБРАБОТКА НАВИГАЦИИ В КОМПОНЕНТАХ
Компоненты определяют активные табы на основе текущего URL:
```typescript
// В supplies-dashboard.tsx
useEffect(() => {
const currentPath = window.location.pathname
if (currentPath.includes('/seller/supplies/goods/cards')) {
setActiveTab('fulfillment')
setActiveSubTab('goods')
setActiveThirdTab('cards')
}
// ... другие проверки
}, [])
```
---
## 🚀 ПРЕИМУЩЕСТВА СИСТЕМЫ
1. **SEO-оптимизация** - понятные и описательные URL
2. **Масштабируемость** - легко добавлять новые разделы
3. **Навигация** - интуитивная структура для пользователей
4. **Аналитика** - точное отслеживание путей пользователей
5. **Поддержка** - четкое соответствие бизнес-логике
---
## ⚠️ ВАЖНЫЕ ЗАМЕЧАНИЯ
1. **V1/V2 автоопределение** - система поставок автоматически определяет версию данных, но URL остается единым
2. **Права доступа** - URL проверяются на уровне middleware для соответствия роли пользователя
3. **Локализация** - URL остаются на английском, перевод только в UI
4. **Sidebar изоляция** - каждая роль имеет отдельный sidebar компонент (см. SIDEBAR_ARCHITECTURE_RULES.md)
---
## 📝 ИСТОРИЯ ИЗМЕНЕНИЙ
| Дата | Версия | Описание | Автор |
|------------|--------|---------------------------------------------|----------|
| 28.08.2025 | 1.0 | Первая версия правил URL | AI |
| 28.08.2025 | 1.1 | Миграция /supplies → /seller | AI |
| 28.08.2025 | 1.2 | Связь с SIDEBAR_ARCHITECTURE_RULES.md | AI |