
- Разделение rules-complete.md на специализированные файлы - Создание interaction-integrity-rules.md с методологией работы Claude Code - Создание wholesale-cabinet-rules.md с техническими деталями кабинета поставщика - Обновление CLAUDE.md с новой структурой навигации по правилам - Добавление автоматических триггеров для различных типов задач 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
11 KiB
ПРАВИЛА КАБИНЕТА ПОСТАВЩИКА (WHOLESALE)
⚠️ ВАЖНО: Это файл с техническими деталями кабинета поставщика. Общие бизнес-правила находятся в rules-complete.md
Когда использовать этот файл:
- Работа с компонентами
/warehouse
,/supplier-orders
- GraphQL запросы для поставщиков
- UI/UX специфика кабинета поставщика
- Технические детали реализации
1. 🏪 СТРУКТУРА КАБИНЕТА ПОСТАВЩИКА
1.1 Основные разделы
ПОСТАВЩИК (WHOLESALE
) имеет доступ к следующим разделам:
- Склад (
/warehouse
) - управление товарами и расходниками - Поставки (
/supplies
) - обработка заказов от селлеров - Маркет (
/market
) - просмотр глобального каталога - Партнеры (
/partners
) - управление контрагентами - Мессенджер (
/messenger
) - связь с партнерами - Настройки (
/settings
) - профиль и API ключи - Экономика (
/economics
) - финансовая аналитика
1.2 Навигация и роутинг
При входе в систему:
switch (user?.organization?.type) {
case 'WHOLESALE':
router.push('/supplies') // Направляем на страницу поставок
break
}
Специальная логика роутинга:
📖 Бизнес-логика роутинга: См. rules-complete.md#4-система-ролей-и-доступов
2. 🎨 UI/UX КОМПОНЕНТЫ
2.1 Dashboard компоненты
Основные компоненты кабинета:
WarehouseDashboard
- главный компонент складаSupplierOrdersDashboard
- управление заказамиWholesaleEconomicsPage
- экономическая аналитикаWholesaleHomePage
- домашняя страница поставщика
Wrapper-компоненты:
HomePageWrapper
- маршрутизация по типам организацийEconomicsPageWrapper
- адаптивная экономика по кабинетам
Специализированные компоненты:
SupplierOrderCard
- карточка заказа для поставщикаSupplierOrdersContent
- контент страницы заказовSupplierOrdersSearch
- поиск по заказамSupplierOrdersTabs
- табы (активные/завершенные)SupplierOrderStats
- статистика и аналитика заказов
2.2 Карточка поставщика в интерфейсе
Структура карточки:
<div className="supplier-card glass-card">
<div className="flex items-start gap-2">
{/* Аватар организации */}
<OrganizationAvatar organization={supplier} size="sm" />
<div className="flex-1 min-w-0">
{/* Название поставщика */}
<h4 className="text-white font-medium text-sm truncate">{supplier.name || supplier.fullName}</h4>
{/* ИНН и рынок */}
<div className="flex items-center gap-2 mt-1">
<p className="text-white/60 text-xs font-mono">ИНН: {supplier.inn}</p>
{supplier.market && <Badge className="market-badge">{getMarketLabel(supplier.market)}</Badge>}
</div>
</div>
</div>
</div>
Визуальные правила:
- Аватар: Размер
sm
, слева от текста - Название: Приоритет
name
надfullName
- ИНН: Моноширинный шрифт, цвет
text-white/60
- Рынок: Badge компонент с индивидуальными цветами
2.3 Поисковый интерфейс
<Input
placeholder="Поиск поставщиков..."
className="bg-white/5 border-white/10 text-white placeholder:text-white/50 pl-10 h-9"
onChange={(e) => handleSearch(e.target.value)}
/>
2.4 Цветовые схемы рынков
📖 Полная палитра цветов: См. visual-design-rules.md
Примеры для рынков:
- "Садовод" (
sadovod
):bg-green-500/20 text-green-300 border-green-500/30
- "ТЯК Москва" (
tyak-moscow
):bg-blue-500/20 text-blue-300 border-blue-500/30
3. 📊 ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ
📖 Бизнес-правила: См. rules-complete.md#10-кабинет-поставщика для правил создания товаров, обязательных полей и статистики
4. 🛠️ GRAPHQL API
4.1 Основные запросы (Queries)
Получение товаров поставщика:
query GetMyProducts {
myProducts {
id
name
article
price
quantity
organization {
id
name
market # Физический рынок поставщика
}
}
}
Получение заказов:
query GetSupplierOrders {
supplyOrders(where: { partnerId: $myOrgId }) {
id
status
totalAmount
organization {
name # Заказчик
}
}
}
Получение партнеров:
query GetMyCounterparties {
myCounterparties {
id
name
type
market
fullName
inn
}
}
4.2 Мутации (Mutations)
Создание товара:
mutation CreateProduct($input: ProductInput!) {
createProduct(input: $input) {
success
product {
id
article
organization {
id
name
}
}
}
}
Обработка заказов поставщиком:
mutation ApproveSupplyOrder($orderId: ID!) {
approveSupplyOrder(id: $orderId) {
success
order {
id
status
organization {
id
name
}
}
}
}
mutation RejectSupplyOrder($orderId: ID!, $reason: String) {
rejectSupplyOrder(id: $orderId, reason: $reason) {
success
message
}
}
Отгрузка заказов:
mutation ShipSupplyOrder($orderId: ID!) {
shipSupplyOrder(id: $orderId) {
success
order {
id
status # SHIPPED -> IN_TRANSIT
organization {
id
name
}
}
}
}
4.3 Правила партнерства
КРИТИЧЕСКОЕ ПРАВИЛО: Поставщики в формах берутся ТОЛЬКО из партнеров с типом WHOLESALE
// ✅ ПРАВИЛЬНО
const suppliers = await useQuery(GET_MY_COUNTERPARTIES, {
variables: { type: 'WHOLESALE' },
})
// ❌ НЕПРАВИЛЬНО
const suppliers = await useQuery(GET_SUPPLY_SUPPLIERS)
📖 Система партнерства: См. rules-complete.md#13-система-партнерства-и-контрагентов
5. 📁 ТЕХНИЧЕСКИЕ КОМПОНЕНТЫ
📖 Архитектура рынков: См. rules-complete.md#10-кабинет-поставщика для бизнес-логики принадлежности к рынкам
5.1 Расположение компонентов
src/components/
├── warehouse/ # Компоненты склада
│ ├── warehouse-dashboard.tsx
│ ├── product-card.tsx
│ ├── product-form.tsx
│ └── warehouse-statistics.tsx
├── supplier-orders/ # Компоненты заказов
│ ├── supplier-orders-dashboard.tsx
│ ├── supplier-order-card.tsx
│ └── supplier-orders-tabs.tsx
└── economics/ # Экономика
└── wholesale-economics-page.tsx
5.2 Страницы (Pages)
src/app/
├── warehouse/
│ └── page.tsx # Страница склада
├── supplier-orders/
│ └── page.tsx # Страница заказов
└── [общие страницы] # См. rules-complete.md
6. 🚨 ТЕХНИЧЕСКИЕ ПРАВИЛА И ОГРАНИЧЕНИЯ
📖 Workflow поставок: См. rules-complete.md#5-workflow-поставок для бизнес-процессов
6.1 Обязательные проверки:
- Проверка типа организации:
organization.type === 'WHOLESALE'
- Валидация прав доступа на уровне GraphQL резолверов
- Контроль остатков при подтверждении заказов
6.2 Правила безопасности доступа:
Контроль на уровне компонентов:
{user?.organization?.type === "WHOLESALE" && (
<WarehouseDashboard />
)}
Проверки в GraphQL резолверах:
// Проверка что пользователь - поставщик
if (context.user.organization.type !== 'WHOLESALE') {
throw new Error('Access denied: Wholesale access required')
}
// Проверка доступа к своим товарам
const product = await prisma.product.findFirst({
where: {
id: productId,
organizationId: context.user.organizationId,
},
})
6.3 Запрещено:
- Создавать товары с типами
DEFECT
илиFINISHED_PRODUCT
- Изменять статусы заказов минуя workflow
- Показывать данные других поставщиков
📖 Критические запреты: См. rules-complete.md#17-критические-запреты
Последнее обновление: Декабрь 2024 Связанные файлы:
- rules-complete.md - Общие бизнес-правила
- visual-design-rules.md - Визуальные правила