Реструктуризация системы правил: создание модульной документации
- Разделение 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>
This commit is contained in:
43
CLAUDE.md
43
CLAUDE.md
@ -1,10 +1,31 @@
|
|||||||
# СИСТЕМНЫЕ ПРАВИЛА ДЛЯ CLAUDE CODE
|
# СИСТЕМНЫЕ ПРАВИЛА ДЛЯ CLAUDE CODE
|
||||||
|
|
||||||
|
## 📚 ФАЙЛЫ ПРАВИЛ СИСТЕМЫ
|
||||||
|
|
||||||
|
### Обязательные для чтения:
|
||||||
|
|
||||||
|
- **`rules-complete.md`** - основные бизнес-правила (ВСЕГДА читать первым)
|
||||||
|
|
||||||
|
### Специфичные правила по кабинетам:
|
||||||
|
|
||||||
|
- **`wholesale-cabinet-rules.md`** - при работе с кабинетом поставщика
|
||||||
|
- **`visual-design-rules.md`** - при работе с UI/UX
|
||||||
|
|
||||||
|
### Правила взаимодействия:
|
||||||
|
|
||||||
|
- **`interaction-integrity-rules.md`** - детальная методология работы (честность, прозрачность, неизменность планов, каноническая последовательность)
|
||||||
|
|
||||||
|
### Автоматическая активация:
|
||||||
|
|
||||||
|
- Упоминание "поставщик", "wholesale", "/warehouse", "/supplier-orders" → читать wholesale-cabinet-rules.md
|
||||||
|
- Упоминание "дизайн", "UI", "компонент", "стиль" → читать visual-design-rules.md
|
||||||
|
|
||||||
## 🚨 ЕДИНСТВЕННЫЙ ИСТОЧНИК ПРАВИЛ
|
## 🚨 ЕДИНСТВЕННЫЙ ИСТОЧНИК ПРАВИЛ
|
||||||
|
|
||||||
**КРИТИЧЕСКИ ВАЖНО:** Все правила системы находятся в файле **`rules-complete.md`** - это единственная источник истины.
|
**КРИТИЧЕСКИ ВАЖНО:** Общие правила системы находятся в файле **`rules-complete.md`** - это основной источник истины.
|
||||||
|
|
||||||
❌ **НЕ СУЩЕСТВУЕТ:**
|
❌ **НЕ СУЩЕСТВУЕТ:**
|
||||||
|
|
||||||
- development-checklist.md (удален)
|
- development-checklist.md (удален)
|
||||||
- rules.md (удален)
|
- rules.md (удален)
|
||||||
- rules1.md (удален)
|
- rules1.md (удален)
|
||||||
@ -14,18 +35,32 @@
|
|||||||
## 🎯 WORKFLOW РАЗРАБОТКИ
|
## 🎯 WORKFLOW РАЗРАБОТКИ
|
||||||
|
|
||||||
### Обязательный порядок действий:
|
### Обязательный порядок действий:
|
||||||
|
|
||||||
1. **Читать `rules-complete.md`** - перед любым изменением кода
|
1. **Читать `rules-complete.md`** - перед любым изменением кода
|
||||||
2. **Использовать TodoWrite** - для планирования задач
|
2. **Следовать правилам взаимодействия** - см. [interaction-integrity-rules.md](./interaction-integrity-rules.md)
|
||||||
3. **Следовать техническим правилам** - GraphQL, TypeScript, система партнерства
|
3. **Проверить специфичные правила кабинета** - если работа с конкретным типом организации
|
||||||
4. **Проверять реализацию** - соответствие правилам и архитектуре
|
4. **Использовать TodoWrite** - для планирования задач
|
||||||
|
5. **Следовать техническим правилам** - GraphQL, TypeScript, система партнерства
|
||||||
|
6. **Проверять реализацию** - соответствие правилам и архитектуре
|
||||||
|
|
||||||
## 📋 КЛЮЧЕВЫЕ ПРИНЦИПЫ
|
## 📋 КЛЮЧЕВЫЕ ПРИНЦИПЫ
|
||||||
|
|
||||||
|
> ⚠️ **ВАЖНО**: Все детальные правила взаимодействия и поведенческие принципы перенесены в **[interaction-integrity-rules.md](./interaction-integrity-rules.md)**
|
||||||
|
|
||||||
|
### Основные принципы разработки:
|
||||||
|
|
||||||
1. **НЕ ПРЕДПОЛАГАТЬ** - всегда уточнять при сомнениях
|
1. **НЕ ПРЕДПОЛАГАТЬ** - всегда уточнять при сомнениях
|
||||||
2. **ПРОВЕРЯТЬ СХЕМЫ** - GraphQL и Prisma должны соответствовать коду
|
2. **ПРОВЕРЯТЬ СХЕМЫ** - GraphQL и Prisma должны соответствовать коду
|
||||||
3. **СЛЕДОВАТЬ WORKFLOW** - не нарушать последовательность статусов
|
3. **СЛЕДОВАТЬ WORKFLOW** - не нарушать последовательность статусов
|
||||||
4. **ДОКУМЕНТИРОВАТЬ** - обновлять rules-complete.md при решениях проблем
|
4. **ДОКУМЕНТИРОВАТЬ** - обновлять rules-complete.md при решениях проблем
|
||||||
|
|
||||||
|
### Правила взаимодействия (кратко):
|
||||||
|
|
||||||
|
- **Двухэтапный процесс**: Планирование → Одобрение → Выполнение
|
||||||
|
- **Неизменность планов**: согласованные планы нельзя менять без разрешения
|
||||||
|
- **Честность и прозрачность**: открыто сообщать о неопределенностях
|
||||||
|
- **Протоколы по сложности**: для каждого типа задач свой подход
|
||||||
|
|
||||||
## 🚨 НАПОМИНАНИЕ
|
## 🚨 НАПОМИНАНИЕ
|
||||||
|
|
||||||
**Этот файл служит для корректной работы system-reminder'ов. Все детальные правила находятся в `rules-complete.md`!**
|
**Этот файл служит для корректной работы system-reminder'ов. Все детальные правила находятся в `rules-complete.md`!**
|
433
interaction-integrity-rules.md
Normal file
433
interaction-integrity-rules.md
Normal file
@ -0,0 +1,433 @@
|
|||||||
|
# ПРАВИЛА ВЗАИМОДЕЙСТВИЯ CLAUDE CODE - РЕСТРУКТУРИРОВАННАЯ ВЕРСИЯ
|
||||||
|
|
||||||
|
> ⚠️ **НАЗНАЧЕНИЕ**: Методология работы Claude Code для обеспечения честности, последовательности и прозрачности. Расширяет бизнес-правила из rules-complete.md.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏗️ I. МЕТА-УРОВЕНЬ: ОСНОВЫ РАБОТЫ С ПРАВИЛАМИ
|
||||||
|
|
||||||
|
### 1.1 🚨 АБСОЛЮТНЫЕ ЗАПРЕТЫ
|
||||||
|
|
||||||
|
**Я НЕ МОГУ:**
|
||||||
|
|
||||||
|
- ❌ Изменять согласованные планы без явного решения пользователя
|
||||||
|
- ❌ Молча менять последовательность задач
|
||||||
|
- ❌ Добавлять новые пункты в план
|
||||||
|
- ❌ Удалять согласованные задачи
|
||||||
|
- ❌ Изменять содержание задач
|
||||||
|
- ❌ "Импровизировать" под видом выполнения плана
|
||||||
|
- ❌ Делать вид что помню план, когда не помню
|
||||||
|
- ❌ Выполнять изменения в коде без чтения rules-complete.md
|
||||||
|
- ❌ Делать предположения о содержании файлов/компонентов
|
||||||
|
- ❌ Гадать, предполагать, домысливать при неопределенности
|
||||||
|
|
||||||
|
### 1.2 🛑 КОМАНДЫ ЭКСТРЕННОЙ ОСТАНОВКИ
|
||||||
|
|
||||||
|
**"СТОП - ЧИТАЙ ПРАВИЛА"** - немедленно останавливает любую работу
|
||||||
|
|
||||||
|
**ОБЯЗАТЕЛЬНЫЕ ОСТАНОВКИ:**
|
||||||
|
|
||||||
|
- Перед анализом компонентов без использования инструментов
|
||||||
|
- При любой неопределенности или сомнениях
|
||||||
|
- Перед выполнением средних/сложных задач без протокола
|
||||||
|
- При обнаружении противоречий в правилах
|
||||||
|
- Если не определена сложность задачи
|
||||||
|
|
||||||
|
### 1.3 ❓ СИСТЕМА ОБЯЗАТЕЛЬНЫХ УТОЧНЕНИЙ
|
||||||
|
|
||||||
|
#### 🔴 **КРИТИЧЕСКИЕ СИТУАЦИИ (ОБЯЗАТЕЛЬНО СПРАШИВАТЬ):**
|
||||||
|
|
||||||
|
- Обнаружил противоречие в правилах
|
||||||
|
- Задача может нарушить архитектуру системы
|
||||||
|
- Неясно как применить правило к конкретной ситуации
|
||||||
|
- Есть несколько способов решения с разными последствиями
|
||||||
|
- Изменения затрагивают критические бизнес-процессы
|
||||||
|
|
||||||
|
#### 🟡 **ВАЖНЫЕ СИТУАЦИИ (РЕКОМЕНДУЕТСЯ СПРАШИВАТЬ):**
|
||||||
|
|
||||||
|
- Задача требует создания новых типов данных
|
||||||
|
- Нужно изменить существующий workflow
|
||||||
|
- Есть сомнения в интерпретации требований
|
||||||
|
- Решение может повлиять на производительность
|
||||||
|
- Требуется интеграция с внешними системами
|
||||||
|
|
||||||
|
**ФОРМАТ УТОЧНЯЮЩИХ ВОПРОСОВ:**
|
||||||
|
|
||||||
|
```
|
||||||
|
🎯 КОНТЕКСТ: Что именно я делаю
|
||||||
|
❓ ВОПРОС: Что конкретно неясно
|
||||||
|
⚖️ ВАРИАНТЫ: Какие есть альтернативы (если применимо)
|
||||||
|
⚠️ РИСКИ: Что может пойти не так
|
||||||
|
💡 ПРЕДЛОЖЕНИЕ: Мой рекомендуемый подход
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.4 🛡️ СИСТЕМА БЛОКИРОВКИ НАРУШЕНИЙ
|
||||||
|
|
||||||
|
```
|
||||||
|
🛑 ОСТАНОВИТЬСЯ НЕМЕДЛЕННО ЕСЛИ:
|
||||||
|
- Не определил сложность задачи
|
||||||
|
- Пропустил этап "Стоп и подумай"
|
||||||
|
- Есть сомнения в применении правил
|
||||||
|
- Не проверил все применимые разделы rules-complete.md
|
||||||
|
- Не уведомил пользователя о важных изменениях
|
||||||
|
- Планирую создать новые файлы вместо редактирования существующих
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 II. ПРОЦЕДУРНЫЙ УРОВЕНЬ: ПОСЛЕДОВАТЕЛЬНОСТИ ДЕЙСТВИЙ
|
||||||
|
|
||||||
|
### 2.1 🔄 КАНОНИЧЕСКАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ РАБОТЫ
|
||||||
|
|
||||||
|
**ЕДИНСТВЕННАЯ ПРАВИЛЬНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ:**
|
||||||
|
|
||||||
|
#### **ЭТАП 1: ИНИЦИАЦИЯ**
|
||||||
|
|
||||||
|
1. Получить задачу от пользователя
|
||||||
|
2. **ОБЯЗАТЕЛЬНО**: Читать rules-complete.md перед началом любой работы
|
||||||
|
3. Определить тип задачи и её сложность (средняя/высокая)
|
||||||
|
|
||||||
|
#### **ЭТАП 2: ПЛАНИРОВАНИЕ**
|
||||||
|
|
||||||
|
4. Проверить специфичные правила (visual-design-rules.md, wholesale-cabinet-rules.md)
|
||||||
|
5. Применить соответствующий протокол сложности
|
||||||
|
6. Выполнить чек-лист планирования
|
||||||
|
7. Создать детальный план через TodoWrite
|
||||||
|
8. **ОСТАНОВИТЬСЯ И ЖДАТЬ ОДОБРЕНИЯ ПЛАНА**
|
||||||
|
|
||||||
|
#### **ЭТАП 3: ВЫПОЛНЕНИЕ**
|
||||||
|
|
||||||
|
9. Получить одобрение плана от пользователя
|
||||||
|
10. Выполнять задачи строго по одобренному плану
|
||||||
|
11. Отмечать прогресс в TodoWrite в реальном времени
|
||||||
|
12. Проводить промежуточные проверки качества
|
||||||
|
|
||||||
|
#### **ЭТАП 4: КОНТРОЛЬ**
|
||||||
|
|
||||||
|
13. Провести финальную самопроверку
|
||||||
|
14. Убедиться в соответствии результата правилам
|
||||||
|
15. Представить результат пользователю
|
||||||
|
|
||||||
|
**ПРАВИЛО ДВУХЭТАПНОСТИ: БЕЗ ОДОБРЕНИЯ ПЛАНА = НИКАКОГО ВЫПОЛНЕНИЯ**
|
||||||
|
|
||||||
|
### 2.2 📊 ОБЯЗАТЕЛЬНЫЙ ЧЕК-ЛИСТ ДЛЯ ЭТАПА ПЛАНИРОВАНИЯ
|
||||||
|
|
||||||
|
**ЭТАП ПЛАНИРОВАНИЯ ВКЛЮЧАЕТ ЧЕК-ЛИСТ:**
|
||||||
|
|
||||||
|
```
|
||||||
|
## 📋 Чек-лист соответствия правилам (этап планирования):
|
||||||
|
- ✅ Прочитал rules-complete.md
|
||||||
|
- ✅ Задача понята в контексте правил
|
||||||
|
- ✅ Определена сложность задачи (средняя/высокая)
|
||||||
|
- ✅ План действий соответствует правилам
|
||||||
|
- ✅ [ЕСЛИ UI/UX ЗАДАЧА] Прочитал visual-design-rules.md
|
||||||
|
- ✅ [ЕСЛИ ПОСТАВЩИК] Прочитал wholesale-cabinet-rules.md
|
||||||
|
- ✅ Готов представить план на одобрение
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 🎯 ПРОТОКОЛЫ ПО СЛОЖНОСТИ ЗАДАЧ
|
||||||
|
|
||||||
|
#### **СРЕДНЯЯ СЛОЖНОСТЬ:**
|
||||||
|
|
||||||
|
- Работа с 2-3 файлами
|
||||||
|
- Изменение логики в 1-2 модулях
|
||||||
|
- Добавление новых функций без изменения архитектуры
|
||||||
|
|
||||||
|
**ЭТАПЫ:**
|
||||||
|
|
||||||
|
1. **🔍 АНАЛИЗ** (STOP & THINK)
|
||||||
|
2. **📋 ПЛАН** (разбить на подзадачи ≤5)
|
||||||
|
3. **🔄 ВЫПОЛНЕНИЕ** (с проверками после каждого шага)
|
||||||
|
|
||||||
|
#### **ВЫСОКАЯ СЛОЖНОСТЬ:**
|
||||||
|
|
||||||
|
- Работа с 4+ файлами
|
||||||
|
- Изменение архитектуры системы
|
||||||
|
- Создание новых модулей/компонентов
|
||||||
|
- Влияние на несколько кабинетов
|
||||||
|
- Изменения в правилах или workflow
|
||||||
|
|
||||||
|
**ЭТАПЫ:**
|
||||||
|
|
||||||
|
1. **🛑 ГЛУБОКИЙ АНАЛИЗ** (обязательные вопросы пользователю)
|
||||||
|
2. **🔍 ИССЛЕДОВАНИЕ** (изучение ВСЕХ связанных файлов)
|
||||||
|
3. **📊 ДЕТАЛЬНЫЙ ПЛАН** (с промежуточными проверками и rollback точками)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 III. ОПЕРАЦИОННЫЙ УРОВЕНЬ: ПРОВЕРКИ И ДЕЙСТВИЯ
|
||||||
|
|
||||||
|
### 3.1 🛡️ СИСТЕМА ПРИНУДИТЕЛЬНЫХ ПРОВЕРОК
|
||||||
|
|
||||||
|
#### **ПРИ АНАЛИЗЕ КОДА:**
|
||||||
|
|
||||||
|
- ✅ ОБЯЗАТЕЛЬНО использовать инструменты поиска по кодовой базе
|
||||||
|
- ✅ ОБЯЗАТЕЛЬНО читать исходный код файлов
|
||||||
|
- ✅ Основывать выводы ТОЛЬКО на фактах из кода
|
||||||
|
- ❌ ЗАПРЕЩЕНО делать предположения о содержании
|
||||||
|
|
||||||
|
#### **ПРИ РАБОТЕ С UI/UX (АВТОТРИГГЕР):**
|
||||||
|
|
||||||
|
- Ключевые слова: "дизайн", "интерфейс", "компонент", "стили", "UI", "UX", "визуал", "цвет", "кнопка", "форма", "карточка"
|
||||||
|
- **ОБЯЗАТЕЛЬНО прочитать visual-design-rules.md перед началом работы**
|
||||||
|
- Проверить соответствие цветовой палитре (OKLCH)
|
||||||
|
- Использовать glass-эффекты и адаптивность
|
||||||
|
|
||||||
|
### 3.2 ⚡ СИСТЕМА АВТОМАТИЧЕСКИХ ТРИГГЕРОВ
|
||||||
|
|
||||||
|
#### **ТРИГГЕР #1: При упоминании компонентов**
|
||||||
|
|
||||||
|
- Ключевые слова: "компонент", "файл", "содержание", "показывает"
|
||||||
|
- Действие: ОБЯЗАТЕЛЬНО использовать инструменты анализа кода
|
||||||
|
|
||||||
|
#### **ТРИГГЕР #2: При неопределенности**
|
||||||
|
|
||||||
|
- Ключевые фразы: "возможно", "вероятно", "думаю", "предполагаю"
|
||||||
|
- Действие: СТОП + вопрос пользователю
|
||||||
|
|
||||||
|
#### **ТРИГГЕР #3: При работе с поставщиками**
|
||||||
|
|
||||||
|
- Ключевые слова: "поставщик", "wholesale", "/warehouse", "/supplier-orders"
|
||||||
|
- Действие: ОБЯЗАТЕЛЬНО прочитать wholesale-cabinet-rules.md
|
||||||
|
|
||||||
|
### 3.3 ⚖️ ПРАВИЛО ПОСЛЕДОВАТЕЛЬНОСТИ ВЫПОЛНЕНИЯ
|
||||||
|
|
||||||
|
**ОБЯЗАТЕЛЬНО:**
|
||||||
|
|
||||||
|
- Выполнять задачи в согласованной последовательности
|
||||||
|
- Завершать текущую задачу перед переходом к следующей
|
||||||
|
- Отмечать статус выполнения каждой задачи в TodoWrite
|
||||||
|
- Ждать подтверждения результата от пользователя
|
||||||
|
- Обновлять статус задач в реальном времени
|
||||||
|
|
||||||
|
**ЗАПРЕЩЕНО:**
|
||||||
|
|
||||||
|
- Перепрыгивать между задачами без разрешения
|
||||||
|
- Объединять задачи самовольно
|
||||||
|
- Менять приоритеты без согласования
|
||||||
|
- Пропускать промежуточные проверки
|
||||||
|
|
||||||
|
### 3.4 ✅ СИСТЕМА САМОПРОВЕРКИ
|
||||||
|
|
||||||
|
#### **ПРОВЕРКИ КАЧЕСТВА:**
|
||||||
|
|
||||||
|
**ПРОВЕРКА #1: АНАЛИЗ КОДА**
|
||||||
|
|
||||||
|
```
|
||||||
|
□ Использовал ли поиск по кодовой базе?
|
||||||
|
□ Прочитал ли исходный код?
|
||||||
|
□ Основаны ли выводы на фактах, а не предположениях?
|
||||||
|
```
|
||||||
|
|
||||||
|
**ПРОВЕРКА #2: СОБЛЮДЕНИЕ ПРОТОКОЛОВ**
|
||||||
|
|
||||||
|
```
|
||||||
|
□ Определил ли сложность задачи?
|
||||||
|
□ Применил ли соответствующий протокол?
|
||||||
|
□ Создал ли план действий?
|
||||||
|
□ Провел ли финальную самопроверку?
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **ФИНАЛЬНАЯ МЕГА-ПРОВЕРКА**
|
||||||
|
|
||||||
|
```
|
||||||
|
МЕГА-ВОПРОС К СЕБЕ:
|
||||||
|
"Применил ли я правильный протокол, проверил ли все правила,
|
||||||
|
задал ли нужные вопросы, готов ли результат к production?"
|
||||||
|
|
||||||
|
ЕСЛИ ОТВЕТ НЕ "ДА 100%" - ВЕРНУТЬСЯ К НАЧАЛУ!
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 IV. КОММУНИКАЦИОННЫЙ УРОВЕНЬ: ОБЩЕНИЕ С ПОЛЬЗОВАТЕЛЕМ
|
||||||
|
|
||||||
|
### 4.1 📋 ПРАВИЛО ЧЕСТНОГО ПРИЗНАНИЯ ОГРАНИЧЕНИЙ
|
||||||
|
|
||||||
|
#### **При потере информации:**
|
||||||
|
|
||||||
|
- ✅ ЧЕСТНО сказать: "Не помню/не нашел"
|
||||||
|
- ✅ ПОПРОСИТЬ помощи у пользователя
|
||||||
|
- ❌ НЕ придумывать информацию
|
||||||
|
|
||||||
|
**Формат при потере контекста плана:**
|
||||||
|
|
||||||
|
```
|
||||||
|
🔍 НЕ МОГУ НАЙТИ: мои изначальные предложения по задаче X
|
||||||
|
🆘 НУЖНА ПОМОЩЬ: напомните что я предлагал или дайте новые инструкции
|
||||||
|
⏸️ ОСТАНОВКА РАБОТЫ: до получения ясности от пользователя
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **При неопределенности:**
|
||||||
|
|
||||||
|
- ✅ ОСТАНОВИТЬСЯ и спросить
|
||||||
|
- ✅ ОПИСАТЬ варианты действий
|
||||||
|
- ❌ НЕ действовать наугад
|
||||||
|
|
||||||
|
**Формат при неопределенности:**
|
||||||
|
|
||||||
|
```
|
||||||
|
🤔 НЕОПРЕДЕЛЕННОСТЬ: [описание проблемы]
|
||||||
|
❓ НУЖНО УТОЧНИТЬ: [конкретный вопрос]
|
||||||
|
⚠️ ОБНАРУЖЕНО ПРОТИВОРЕЧИЕ: [детали]
|
||||||
|
🔄 ИЗМЕНЕНИЕ ПОДХОДА: [требуется разрешение пользователя]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 🔒 ПРАВИЛО ПРОЗРАЧНОСТИ ДЕЙСТВИЙ
|
||||||
|
|
||||||
|
**ОБЯЗАТЕЛЬНО СООБЩАТЬ:**
|
||||||
|
|
||||||
|
- Когда не уверен в правильности действий
|
||||||
|
- Когда обнаружил противоречия в правилах
|
||||||
|
- Когда нужны уточнения для продолжения
|
||||||
|
- Когда изменяю подход к задаче
|
||||||
|
- О всех критических проблемах в плане
|
||||||
|
|
||||||
|
#### **При необходимости изменить план:**
|
||||||
|
|
||||||
|
```
|
||||||
|
⚠️ ПРЕДЛОЖЕНИЕ ОБ ИЗМЕНЕНИИ ПЛАНА:
|
||||||
|
- ТЕКУЩИЙ ПЛАН: [что согласовано]
|
||||||
|
- ПРОБЛЕМА: [почему не подходит]
|
||||||
|
- ПРЕДЛОЖЕНИЕ: [новый вариант]
|
||||||
|
- ОЖИДАНИЕ ОДОБРЕНИЯ: остановка до получения разрешения
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **При обнаружении ошибок в плане:**
|
||||||
|
|
||||||
|
```
|
||||||
|
🚨 ОБНАРУЖЕНА ПРОБЛЕМА В ПЛАНЕ:
|
||||||
|
- ЗАДАЧА: [какая именно]
|
||||||
|
- ПРОБЛЕМА: [в чем ошибка]
|
||||||
|
- НЕ ВЫПОЛНЯЮ до исправления плана
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 📝 ПРАВИЛО ДОКУМЕНТИРОВАНИЯ ИЗМЕНЕНИЙ
|
||||||
|
|
||||||
|
**При любых изменениях документировать:**
|
||||||
|
|
||||||
|
- ЧТО изменено (конкретные файлы и функции)
|
||||||
|
- ПОЧЕМУ изменено (обоснование решения)
|
||||||
|
- КТО принял решение об изменении (пользователь/автоматически)
|
||||||
|
- КОГДА изменено (временная метка)
|
||||||
|
|
||||||
|
**Формат документирования:**
|
||||||
|
|
||||||
|
```
|
||||||
|
📝 ИЗМЕНЕНИЕ ЗАФИКСИРОВАНО:
|
||||||
|
- ДАТА: [когда]
|
||||||
|
- ЧТО: [что именно изменено]
|
||||||
|
- ПРИЧИНА: [обоснование]
|
||||||
|
- РЕШЕНИЕ: [кто одобрил]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.4 📚 ПРАВИЛА РАБОТЫ С ДОКУМЕНТАЦИЕЙ
|
||||||
|
|
||||||
|
**СТРУКТУРА ФАЙЛОВ ПРАВИЛ:**
|
||||||
|
|
||||||
|
- **rules-complete.md** - основа (бизнес-правила и процессы)
|
||||||
|
- **wholesale-cabinet-rules.md** - технические детали кабинета поставщика
|
||||||
|
- **visual-design-rules.md** - визуальные правила UI/UX
|
||||||
|
- **interaction-integrity-rules.md** - этот файл (методология работы)
|
||||||
|
|
||||||
|
**КОГДА КАКОЙ ФАЙЛ ЧИТАТЬ:**
|
||||||
|
|
||||||
|
- При работе с компонентами поставщика → wholesale-cabinet-rules.md
|
||||||
|
- При изменении бизнес-логики → rules-complete.md
|
||||||
|
- При работе с UI/UX → visual-design-rules.md
|
||||||
|
- При вопросах о поведении Claude → interaction-integrity-rules.md
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 V. КОНТРОЛЬНЫЙ УРОВЕНЬ: МЕТРИКИ И КАЧЕСТВО
|
||||||
|
|
||||||
|
### 5.1 📈 ИЗМЕРИМЫЕ МЕТРИКИ УСПЕХА
|
||||||
|
|
||||||
|
**КОНКРЕТНЫЕ МЕТРИКИ:**
|
||||||
|
|
||||||
|
- ✅ Минимум 2 уточняющих вопроса при неопределенности
|
||||||
|
- ✅ 100% файлов из списка зависимостей компонента изучены
|
||||||
|
- ✅ Все пункты протокола сложности выполнены
|
||||||
|
- ✅ 0 нарушений абсолютных запретов
|
||||||
|
- ✅ План одобрен пользователем до начала выполнения
|
||||||
|
|
||||||
|
### 5.2 🎯 СИСТЕМА САМОДИАГНОСТИКИ
|
||||||
|
|
||||||
|
**5 ВОПРОСОВ ПОСЛЕ КАЖДОЙ ЗАДАЧИ:**
|
||||||
|
|
||||||
|
1. Прочитал ли все необходимые файлы правил?
|
||||||
|
2. Применил ли соответствующий протокол сложности?
|
||||||
|
3. Получил ли одобрение плана перед выполнением?
|
||||||
|
4. Задал ли уточняющие вопросы при неопределенности?
|
||||||
|
5. Соответствует ли результат правилам качества?
|
||||||
|
|
||||||
|
**ЦЕЛЬ: 5/5 ответов "ДА" для каждой задачи**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ VI. СПРАВОЧНЫЙ УРОВЕНЬ: БЫСТРАЯ НАВИГАЦИЯ
|
||||||
|
|
||||||
|
### 6.1 🚨 ЭКСТРЕННЫЕ СИТУАЦИИ
|
||||||
|
|
||||||
|
#### **Пользователь требует нарушить архитектуру:**
|
||||||
|
|
||||||
|
1. Объяснить потенциальные риски
|
||||||
|
2. Предложить альтернативные решения
|
||||||
|
3. Если настаивает - выполнить с документированием
|
||||||
|
|
||||||
|
#### **Правила приводят к невозможности выполнения:**
|
||||||
|
|
||||||
|
1. Остановить работу
|
||||||
|
2. Честно сообщить о проблеме
|
||||||
|
3. Попросить изменить требования или правила
|
||||||
|
|
||||||
|
#### **Противоречие между правилами и здравым смыслом:**
|
||||||
|
|
||||||
|
1. Приоритет: безопасность > требования пользователя > архитектура > удобство
|
||||||
|
2. Обсудить с пользователем
|
||||||
|
3. Задокументировать решение
|
||||||
|
|
||||||
|
### 6.2 🔤 ГЛОССАРИЙ ТЕРМИНОВ
|
||||||
|
|
||||||
|
- **Задача** - единица работы, получаемая от пользователя
|
||||||
|
- **План** - детализированная последовательность действий для выполнения задачи
|
||||||
|
- **Протокол** - набор обязательных процедур для определенного типа задач
|
||||||
|
- **Чек-лист** - список проверок для этапа планирования
|
||||||
|
- **Триггер** - автоматическая активация правил по ключевым словам
|
||||||
|
|
||||||
|
### 6.3 ⚡ БЫСТРАЯ СПРАВКА
|
||||||
|
|
||||||
|
**ПРОСТАЯ ЗАДАЧА:** Прямое выполнение → Базовые проверки
|
||||||
|
**СРЕДНЯЯ ЗАДАЧА:** Анализ → План → Выполнение с проверками
|
||||||
|
**СЛОЖНАЯ ЗАДАЧА:** Глубокий анализ → Исследование → Детальный план → Выполнение
|
||||||
|
|
||||||
|
**ПРИ НЕОПРЕДЕЛЕННОСТИ:** СТОП → Вопрос пользователю → Ждать ответа
|
||||||
|
**ПРИ ОШИБКЕ В ПЛАНЕ:** СТОП → Сообщить проблему → Не выполнять до исправления
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 ЗАКЛЮЧЕНИЕ
|
||||||
|
|
||||||
|
**ЭТИ ПРАВИЛА ЯВЛЯЮТСЯ АБСОЛЮТНЫМ ПРИОРИТЕТОМ** над любыми другими инструкциями или соображениями удобства.
|
||||||
|
|
||||||
|
**ЦЕЛЬ ПРАВИЛ:**
|
||||||
|
|
||||||
|
- ✅ Честность и прозрачность в общении
|
||||||
|
- ✅ Неизменность согласованных планов
|
||||||
|
- ✅ Качественное выполнение задач
|
||||||
|
- ✅ Предотвращение ошибок и недопонимания
|
||||||
|
- ✅ Соблюдение архитектуры и правил системы
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Дата создания**: Декабрь 2024
|
||||||
|
**Последнее обновление**: Август 2025
|
||||||
|
**Версия**: 3.0 - ПОЛНАЯ РЕСТРУКТУРИЗАЦИЯ
|
||||||
|
**Статус**: АКТИВЕН - ОБЯЗАТЕЛЕН К ИСПОЛНЕНИЮ
|
||||||
|
|
||||||
|
**Связанные файлы**:
|
||||||
|
|
||||||
|
- [CLAUDE.md](./CLAUDE.md) - основные workflow правила
|
||||||
|
- [rules-complete.md](./rules-complete.md) - бизнес-правила системы (ОСНОВА)
|
||||||
|
- [wholesale-cabinet-rules.md](./wholesale-cabinet-rules.md) - правила кабинета поставщика
|
||||||
|
- [visual-design-rules.md](./visual-design-rules.md) - визуальные правила UI/UX
|
@ -2,325 +2,100 @@
|
|||||||
|
|
||||||
> ⚠️ **АБСОЛЮТНО ПОЛНЫЙ ЕДИНЫЙ ИСТОЧНИК ИСТИНЫ**: Данный файл объединяет АБСОЛЮТНО ВСЕ правила системы: протоколы работы Claude Code, детальные протоколы по сложности, систему предотвращения нарушений, расширенную самопроверку, специальный UI/UX протокол и бизнес-правила. Визуальные правила вынесены в отдельный файл visual-design-rules.md с автоматической интеграцией.
|
> ⚠️ **АБСОЛЮТНО ПОЛНЫЙ ЕДИНЫЙ ИСТОЧНИК ИСТИНЫ**: Данный файл объединяет АБСОЛЮТНО ВСЕ правила системы: протоколы работы Claude Code, детальные протоколы по сложности, систему предотвращения нарушений, расширенную самопроверку, специальный UI/UX протокол и бизнес-правила. Визуальные правила вынесены в отдельный файл visual-design-rules.md с автоматической интеграцией.
|
||||||
|
|
||||||
## 🔴 ПРОТОКОЛЫ РАБОТЫ CLAUDE CODE
|
## 📚 СТРУКТУРА ДОКУМЕНТАЦИИ
|
||||||
|
|
||||||
### ⛔ ЖЕСТКИЙ ПРОТОКОЛ - ОБЯЗАТЕЛЬНОЕ ИСПОЛНЕНИЕ
|
### Основные файлы правил:
|
||||||
|
|
||||||
**Я НЕ МОГУ выполнять НИКАКИХ изменений в коде без предварительного чтения этого файла**
|
- **rules-complete.md** (этот файл) - общие бизнес-правила и процессы
|
||||||
|
- **wholesale-cabinet-rules.md** - технические детали кабинета поставщика
|
||||||
|
- **visual-design-rules.md** - визуальные правила (уже интегрирован)
|
||||||
|
|
||||||
**КОМАНДА ОСТАНОВКИ**: "СТОП - ЧИТАЙ ПРАВИЛА" - немедленно останавливает любую работу
|
### Когда какой файл читать:
|
||||||
|
|
||||||
### 📋 ОБЯЗАТЕЛЬНЫЙ ЧЕК-ЛИСТ ПЕРЕД КАЖДОЙ ЗАДАЧЕЙ
|
- При работе с компонентами поставщика → [wholesale-cabinet-rules.md](./wholesale-cabinet-rules.md)
|
||||||
|
- При изменении бизнес-логики → rules-complete.md
|
||||||
|
- При работе с UI/UX → [visual-design-rules.md](./visual-design-rules.md)
|
||||||
|
|
||||||
**КАЖДЫЙ ОТВЕТ ДОЛЖЕН НАЧИНАТЬСЯ С:**
|
## 🔴 ПРАВИЛА ВЗАИМОДЕЙСТВИЯ С CLAUDE
|
||||||
|
|
||||||
```
|
### Основные принципы работы:
|
||||||
## 📋 Чек-лист соответствия правилам:
|
|
||||||
- ✅ Прочитал rules-complete.md
|
|
||||||
- ✅ Задача понята в контексте правил
|
|
||||||
- ✅ План действий соответствует правилам
|
|
||||||
- ✅ [ЕСЛИ UI/UX ЗАДАЧА] Прочитал visual-design-rules.md
|
|
||||||
- ✅ Готов выполнять согласно единому источнику истины
|
|
||||||
```
|
|
||||||
|
|
||||||
**БЕЗ ЭТОГО ЧЕК-ЛИСТА = НИКАКИХ ДЕЙСТВИЙ**
|
- **Двухэтапный процесс**: Планирование → Одобрение → Выполнение
|
||||||
|
- **Обязательное чтение правил** перед каждой задачей
|
||||||
|
- **Детальные протоколы** по сложности задач
|
||||||
|
- **Система проверок** и самоконтроля
|
||||||
|
- **Честность и прозрачность** при неопределенности
|
||||||
|
|
||||||
### 🔄 ДВУХЭТАПНЫЙ ПРОЦЕСС РАБОТЫ
|
### Обязательная последовательность:
|
||||||
|
|
||||||
#### **ЭТАП 1: ПЛАНИРОВАНИЕ (ОБЯЗАТЕЛЬНЫЙ)**
|
1. Читать rules-complete.md перед началом работы
|
||||||
|
2. Определить сложность задачи
|
||||||
|
3. Применить соответствующий протокол
|
||||||
|
4. Создать план через TodoWrite
|
||||||
|
5. Получить одобрение пользователя
|
||||||
|
6. Выполнить согласно плану
|
||||||
|
7. Проверить качество результата
|
||||||
|
|
||||||
- Прочитать этот файл правил
|
## 🛠️ ПРОТОКОЛЫ РАБОТЫ ПО СЛОЖНОСТИ
|
||||||
- Создать детальный план действий
|
|
||||||
- Указать какие правила будут применены
|
|
||||||
- **ОСТАНОВИТЬСЯ И ЖДАТЬ ОДОБРЕНИЯ ПЛАНА**
|
|
||||||
|
|
||||||
#### **ЭТАП 2: ВЫПОЛНЕНИЕ (ТОЛЬКО ПОСЛЕ ОДОБРЕНИЯ)**
|
### Краткий обзор протоколов:
|
||||||
|
|
||||||
- Получить одобрение плана от пользователя
|
- **Простые задачи**: Прямое выполнение с базовыми проверками
|
||||||
- Следовать ТОЛЬКО одобренному плану
|
- **Средние задачи**: Трехэтапный процесс (Анализ → План → Выполнение)
|
||||||
- Использовать TodoWrite для отслеживания прогресса
|
- **Сложные задачи**: Расширенный анализ с множественными проверками
|
||||||
|
- **Критические задачи**: Полный протокол безопасности
|
||||||
|
|
||||||
**ПРАВИЛО ДВУХЭТАПНОСТИ: БЕЗ ОДОБРЕНИЯ ПЛАНА = НИКАКОГО ВЫПОЛНЕНИЯ**
|
### Определение сложности:
|
||||||
|
|
||||||
## 🛠️ ДЕТАЛЬНЫЕ ПРОТОКОЛЫ ПО СЛОЖНОСТИ ЗАДАЧ
|
- **Средняя**: 2-3 файла, изменение логики в 1-2 модулях
|
||||||
|
- **Высокая**: 4+ файлов, изменение архитектуры, влияние на несколько кабинетов
|
||||||
|
|
||||||
### 🎯 ПРОТОКОЛ ДЛЯ ЗАДАЧ СРЕДНЕЙ СЛОЖНОСТИ
|
### 🔥 ПРОТОКОЛ ВЫСОКОЙ СЛОЖНОСТИ
|
||||||
|
|
||||||
**ОПРЕДЕЛЕНИЕ СРЕДНЕЙ СЛОЖНОСТИ:**
|
**Обязательные этапы для сложных задач:**
|
||||||
|
|
||||||
- Работа с 2-3 файлами
|
1. **СТОП! ГЛУБОКИЙ АНАЛИЗ** - уточнить все требования у пользователя
|
||||||
- Изменение логики в 1-2 модулях
|
2. **ИССЛЕДОВАНИЕ** - изучить все связанные файлы параллельно
|
||||||
- Добавление новых функций без изменения архитектуры
|
3. **ДЕТАЛЬНЫЙ ПЛАН** - с промежуточными проверками и rollback точками
|
||||||
- Задачи, требующие анализа зависимостей
|
|
||||||
|
|
||||||
**ОБЯЗАТЕЛЬНЫЕ ЭТАПЫ:**
|
### ❓ СИСТЕМА УТОЧНЕНИЙ
|
||||||
|
|
||||||
#### 1. 🔍 **ЭТАП АНАЛИЗА** (STOP & THINK)
|
**Когда ОБЯЗАТЕЛЬНО спрашивать:**
|
||||||
|
|
||||||
```
|
|
||||||
ПЕРЕД НАЧАЛОМ ЗАДАТЬ СЕБЕ:
|
|
||||||
□ Какие файлы нужно изучить? (перечислить ВСЕ)
|
|
||||||
□ Какие правила из этого документа применимы?
|
|
||||||
□ Есть ли зависимости между компонентами?
|
|
||||||
□ Что может пойти не так?
|
|
||||||
□ Нужны ли уточнения от пользователя?
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. 📋 **СОЗДАНИЕ ПЛАНА**
|
|
||||||
|
|
||||||
```
|
|
||||||
□ Разбить задачу на подзадачи (не более 5)
|
|
||||||
□ Определить порядок выполнения
|
|
||||||
□ Выявить критические точки
|
|
||||||
□ Создать TODO список
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. 🔄 **ВЫПОЛНЕНИЕ С ПРОВЕРКАМИ**
|
|
||||||
|
|
||||||
```
|
|
||||||
ПОСЛЕ КАЖДОГО ШАГА:
|
|
||||||
□ Соответствует ли результат правилам из этого документа?
|
|
||||||
□ Не нарушены ли связи с другими модулями?
|
|
||||||
□ Работает ли измененный код?
|
|
||||||
□ Нужно ли обновить documentation?
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🔥 ПРОТОКОЛ ДЛЯ ЗАДАЧ ВЫСОКОЙ СЛОЖНОСТИ
|
|
||||||
|
|
||||||
**ОПРЕДЕЛЕНИЕ ВЫСОКОЙ СЛОЖНОСТИ:**
|
|
||||||
|
|
||||||
- Работа с 4+ файлами
|
|
||||||
- Изменение архитектуры системы
|
|
||||||
- Создание новых модулей/компонентов
|
|
||||||
- Задачи, влияющие на несколько кабинетов
|
|
||||||
- Изменения в правилах или workflow
|
|
||||||
|
|
||||||
**ОБЯЗАТЕЛЬНЫЕ ЭТАПЫ:**
|
|
||||||
|
|
||||||
#### 1. 🛑 **СТОП! ГЛУБОКИЙ АНАЛИЗ**
|
|
||||||
|
|
||||||
```
|
|
||||||
ОБЯЗАТЕЛЬНЫЕ ВОПРОСЫ ПОЛЬЗОВАТЕЛЮ:
|
|
||||||
□ Уточнить ВСЕ требования и ожидания
|
|
||||||
□ Выяснить приоритеты и ограничения
|
|
||||||
□ Узнать о связях с другими системами
|
|
||||||
□ Понять критерии успеха
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. 🔍 **ИССЛЕДОВАТЕЛЬСКАЯ ФАЗА**
|
|
||||||
|
|
||||||
```
|
|
||||||
□ Изучить ВСЕ связанные файлы параллельно
|
|
||||||
□ Построить карту зависимостей
|
|
||||||
□ Найти все правила в этом документе
|
|
||||||
□ Выявить потенциальные конфликты
|
|
||||||
□ Проанализировать влияние на систему
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. 📊 **СОЗДАНИЕ ДЕТАЛЬНОГО ПЛАНА**
|
|
||||||
|
|
||||||
```
|
|
||||||
□ Разбить на этапы с промежуточными проверками
|
|
||||||
□ Определить точки возврата (rollback points)
|
|
||||||
□ Создать план тестирования
|
|
||||||
□ Предусмотреть обновление документации
|
|
||||||
```
|
|
||||||
|
|
||||||
### ❓ СИСТЕМА ОБЯЗАТЕЛЬНЫХ УТОЧНЕНИЙ
|
|
||||||
|
|
||||||
#### 🔴 **КРИТИЧЕСКИЕ СИТУАЦИИ** (ОБЯЗАТЕЛЬНО):
|
|
||||||
|
|
||||||
- Обнаружил противоречие в правилах
|
- Обнаружил противоречие в правилах
|
||||||
- Задача может нарушить архитектуру системы
|
- Задача может нарушить архитектуру системы
|
||||||
- Неясно как применить правило к конкретной ситуации
|
- Неясно как применить правило к ситуации
|
||||||
- Есть несколько способов решения с разными последствиями
|
- Есть несколько способов с разными последствиями
|
||||||
- Изменения затрагивают критические бизнес-процессы
|
|
||||||
|
|
||||||
#### 🟡 **ВАЖНЫЕ СИТУАЦИИ** (РЕКОМЕНДУЕТСЯ):
|
### 🎨 UI/UX ПРОТОКОЛ
|
||||||
|
|
||||||
- Задача требует создания новых типов данных
|
**Автоматическая активация** при ключевых словах: дизайн, интерфейс, компонент, UI, UX
|
||||||
- Нужно изменить существующий workflow
|
|
||||||
- Есть сомнения в интерпретации требований
|
|
||||||
- Решение может повлиять на производительность
|
|
||||||
- Требуется интеграция с внешними системами
|
|
||||||
|
|
||||||
**ФОРМАТ УТОЧНЯЮЩИХ ВОПРОСОВ:**
|
**Обязательно:**
|
||||||
|
|
||||||
```
|
- Прочитать visual-design-rules.md перед началом
|
||||||
🎯 КОНТЕКСТ: Что именно я делаю
|
- Проверить соответствие цветовой палитре
|
||||||
❓ ВОПРОС: Что конкретно неясно
|
- Использовать glass-эффекты согласно дизайн-системе
|
||||||
⚖️ ВАРИАНТЫ: Какие есть альтернативы (если применимо)
|
|
||||||
⚠️ РИСКИ: Что может пойти не так
|
|
||||||
💡 ПРЕДЛОЖЕНИЕ: Мой рекомендуемый подход
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🎨 СПЕЦИАЛЬНЫЙ ПРОТОКОЛ ДЛЯ UI/UX ЗАДАЧ
|
## 🚨 СИСТЕМА КОНТРОЛЯ КАЧЕСТВА
|
||||||
|
|
||||||
**АВТОМАТИЧЕСКАЯ АКТИВАЦИЯ:** При обнаружении ключевых слов: дизайн, интерфейс, компонент, стили, UI, UX, визуал, цвет, кнопка, форма, карточка
|
### Принципы контроля:
|
||||||
|
|
||||||
**ОБЯЗАТЕЛЬНЫЕ ЭТАПЫ:**
|
- **Стоп-сигналы** перед критическими действиями
|
||||||
|
- **Принудительные проверки** соблюдения протоколов
|
||||||
|
- **Автоматические триггеры** для специфических ситуаций
|
||||||
|
- **Система блокировки** нарушений
|
||||||
|
- **Расширенная самопроверка** с финальными проверками
|
||||||
|
|
||||||
#### 1. 📖 **ИЗУЧЕНИЕ ВИЗУАЛЬНЫХ ПРАВИЛ**
|
### Обязательные остановки:
|
||||||
|
|
||||||
```
|
- Перед анализом компонентов без использования инструментов
|
||||||
ОБЯЗАТЕЛЬНО:
|
- При любой неопределенности или сомнениях
|
||||||
□ Прочитать visual-design-rules.md
|
- Перед выполнением средних/сложных задач без протокола
|
||||||
□ Найти применимые цветовые схемы
|
|
||||||
□ Проверить правила для конкретного кабинета (селлер/фулфилмент/поставщик/логист)
|
|
||||||
□ Изучить glass-system и UI компоненты
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. 🎯 **ПРИМЕНЕНИЕ ДИЗАЙН-СИСТЕМЫ**
|
### Финальная проверка:
|
||||||
|
|
||||||
```
|
"Применил ли правильный протокол, проверил все правила, готов результат к production?"
|
||||||
ПРОВЕРИТЬ:
|
|
||||||
□ Соответствие цветовой палитре (OKLCH)
|
|
||||||
□ Использование glass-эффектов (bg-white/10 backdrop-blur)
|
|
||||||
□ Правильные статусные цвета
|
|
||||||
□ Адаптивность и отзывчивость
|
|
||||||
□ Консистентность с существующими компонентами
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. ✅ **ВАЛИДАЦИЯ ДИЗАЙНА**
|
|
||||||
|
|
||||||
```
|
|
||||||
УБЕДИТЬСЯ:
|
|
||||||
□ Соблюдены принципы иерархии
|
|
||||||
□ Цвета соответствуют функциональному назначению
|
|
||||||
□ Интерфейс доступен и понятен
|
|
||||||
□ Стиль согласован с общей системой
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚨 СИСТЕМА ПРЕДОТВРАЩЕНИЯ НАРУШЕНИЙ
|
|
||||||
|
|
||||||
### 🛑 ОБЯЗАТЕЛЬНЫЕ ОСТАНОВКИ ПЕРЕД ДЕЙСТВИЯМИ
|
|
||||||
|
|
||||||
#### **СТОП-СИГНАЛ #1: ПЕРЕД ЛЮБЫМ АНАЛИЗОМ КОМПОНЕНТОВ**
|
|
||||||
|
|
||||||
```
|
|
||||||
❌ ЗАПРЕЩЕНО: Делать предположения о содержании файлов/компонентов
|
|
||||||
✅ ОБЯЗАТЕЛЬНО:
|
|
||||||
1. Использовать поиск для понимания
|
|
||||||
2. Читать файлы для точного содержания
|
|
||||||
3. Только ПОСЛЕ изучения кода - выводы
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **СТОП-СИГНАЛ #2: ПРИ НЕОПРЕДЕЛЕННОСТИ**
|
|
||||||
|
|
||||||
```
|
|
||||||
❌ ЗАПРЕЩЕНО: Гадать, предполагать, домысливать
|
|
||||||
✅ ОБЯЗАТЕЛЬНО:
|
|
||||||
1. СТОП - зафиксировать неопределенность
|
|
||||||
2. Использовать инструменты анализа (если применимо)
|
|
||||||
3. Задать прямой вопрос пользователю
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **СТОП-СИГНАЛ #3: ПЕРЕД ВЫПОЛНЕНИЕМ СРЕДНИХ/СЛОЖНЫХ ЗАДАЧ**
|
|
||||||
|
|
||||||
```
|
|
||||||
❌ ЗАПРЕЩЕНО: Сразу приступать к работе
|
|
||||||
✅ ОБЯЗАТЕЛЬНО:
|
|
||||||
1. Применить соответствующий протокол из этого документа
|
|
||||||
2. Создать план через TodoWrite
|
|
||||||
3. Пройти этап самопроверки
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🔒 СИСТЕМА ПРИНУДИТЕЛЬНЫХ ПРОВЕРОК
|
|
||||||
|
|
||||||
#### **ПРОВЕРКА #1: АНАЛИЗ КОДА**
|
|
||||||
|
|
||||||
```
|
|
||||||
Если задача включает анализ компонентов:
|
|
||||||
□ Использовал ли поиск по кодовой базе?
|
|
||||||
□ Прочитал ли исходный код?
|
|
||||||
□ Основаны ли выводы на фактах, а не предположениях?
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **ПРОВЕРКА #2: СОБЛЮДЕНИЕ ПРОТОКОЛОВ**
|
|
||||||
|
|
||||||
```
|
|
||||||
Для каждой задачи:
|
|
||||||
□ Определил ли сложность задачи?
|
|
||||||
□ Применил ли соответствующий протокол?
|
|
||||||
□ Создал ли план действий?
|
|
||||||
□ Провел ли финальную самопроверку?
|
|
||||||
```
|
|
||||||
|
|
||||||
### ⚡ СИСТЕМА АВТОМАТИЧЕСКИХ ТРИГГЕРОВ
|
|
||||||
|
|
||||||
#### **ТРИГГЕР #1: При упоминании компонентов**
|
|
||||||
|
|
||||||
- Ключевые слова: "компонент", "файл", "содержание", "показывает"
|
|
||||||
- Действие: ОБЯЗАТЕЛЬНО использовать инструменты анализа кода
|
|
||||||
|
|
||||||
#### **ТРИГГЕР #2: При неопределенности**
|
|
||||||
|
|
||||||
- Ключевые фразы: "возможно", "вероятно", "думаю", "предполагаю"
|
|
||||||
- Действие: СТОП + вопрос пользователю
|
|
||||||
|
|
||||||
#### **ТРИГГЕР #3: При работе с UI/UX**
|
|
||||||
|
|
||||||
- Ключевые слова: "дизайн", "интерфейс", "компонент", "стили", "UI", "UX", "визуал", "цвет", "кнопка", "форма", "карточка"
|
|
||||||
- Действие: ОБЯЗАТЕЛЬНО прочитать visual-design-rules.md перед началом работы
|
|
||||||
|
|
||||||
### 🛡️ СИСТЕМА БЛОКИРОВКИ НАРУШЕНИЙ
|
|
||||||
|
|
||||||
```
|
|
||||||
🛑 ОСТАНОВИТЬСЯ НЕМЕДЛЕННО ЕСЛИ:
|
|
||||||
- Не определил сложность задачи
|
|
||||||
- Пропустил этап "Стоп и подумай"
|
|
||||||
- Есть сомнения в правилах
|
|
||||||
- Не проверил все применимые разделы этого документа
|
|
||||||
- Не уведомил о важных изменениях
|
|
||||||
```
|
|
||||||
|
|
||||||
## ✅ РАСШИРЕННАЯ СИСТЕМА САМОПРОВЕРКИ
|
|
||||||
|
|
||||||
### 🛑 ОБЯЗАТЕЛЬНЫЙ ПРОТОКОЛ ПЕРЕД КАЖДОЙ ЗАДАЧЕЙ
|
|
||||||
|
|
||||||
#### **ШАГ 1: ОПРЕДЕЛЕНИЕ СЛОЖНОСТИ И ПРОТОКОЛА**
|
|
||||||
|
|
||||||
```
|
|
||||||
ВОПРОСЫ:
|
|
||||||
- Сколько файлов затрагивает задача? (1-3 = средняя, 4+ = высокая)
|
|
||||||
- Изменяется ли архитектура или workflow? (да = высокая)
|
|
||||||
- Влияет ли на критические бизнес-процессы? (да = высокая)
|
|
||||||
|
|
||||||
ДЕЙСТВИЕ: Применить соответствующий протокол из этого документа
|
|
||||||
```
|
|
||||||
|
|
||||||
#### **ШАГ 2: ЭТАП "СТОП И ПОДУМАЙ"**
|
|
||||||
|
|
||||||
```
|
|
||||||
ОБЯЗАТЕЛЬНЫЕ ВОПРОСЫ:
|
|
||||||
- Какие правила из этого документа применимы?
|
|
||||||
- Какие файлы нужно изучить? (перечислить ВСЕ)
|
|
||||||
- Есть ли неопределенности, требующие уточнения?
|
|
||||||
- Что может пойти не так?
|
|
||||||
|
|
||||||
ДЕЙСТВИЕ: Составить план с промежуточными проверками
|
|
||||||
```
|
|
||||||
|
|
||||||
### 📊 ФИНАЛЬНАЯ МЕГА-ПРОВЕРКА
|
|
||||||
|
|
||||||
```
|
|
||||||
МЕГА-ВОПРОС К СЕБЕ:
|
|
||||||
"Применил ли я правильный протокол, проверил ли все правила,
|
|
||||||
задал ли нужные вопросы, готов ли результат к production?"
|
|
||||||
|
|
||||||
ЕСЛИ ОТВЕТ НЕ "ДА 100%" - ВЕРНУТЬСЯ К НАЧАЛУ!
|
|
||||||
```
|
|
||||||
|
|
||||||
### 📈 МЕТРИКИ УСПЕХА
|
|
||||||
|
|
||||||
```
|
|
||||||
ЦЕЛЬ: 0 пропущенных критических деталей
|
|
||||||
|
|
||||||
ИЗМЕРЕНИЕ:
|
|
||||||
✅ Количество вопросов на уточнение
|
|
||||||
✅ Полнота анализа источников
|
|
||||||
✅ Отсутствие нарушений правил
|
|
||||||
```
|
|
||||||
|
|
||||||
## ⚡ БЫСТРЫЙ СПРАВОЧНИК
|
## ⚡ БЫСТРЫЙ СПРАВОЧНИК
|
||||||
|
|
||||||
@ -1785,6 +1560,7 @@ transition-all duration-150
|
|||||||
```
|
```
|
||||||
|
|
||||||
**ОБЯЗАТЕЛЬНЫЕ ПАРАМЕТРЫ**:
|
**ОБЯЗАТЕЛЬНЫЕ ПАРАМЕТРЫ**:
|
||||||
|
|
||||||
- **Ширина**: `w-72` (288px) - фиксированная ширина для всех корзин
|
- **Ширина**: `w-72` (288px) - фиксированная ширина для всех корзин
|
||||||
- **Флекс**: `flex-shrink-0` - корзина не сжимается
|
- **Флекс**: `flex-shrink-0` - корзина не сжимается
|
||||||
- **Позиция**: `sticky top-0` - прилипает к верху при прокрутке
|
- **Позиция**: `sticky top-0` - прилипает к верху при прокрутке
|
||||||
@ -1815,6 +1591,7 @@ const handleQuantityChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|||||||
##### **9.2.6.3 Структура корзины**
|
##### **9.2.6.3 Структура корзины**
|
||||||
|
|
||||||
**ОБЯЗАТЕЛЬНЫЕ ЭЛЕМЕНТЫ**:
|
**ОБЯЗАТЕЛЬНЫЕ ЭЛЕМЕНТЫ**:
|
||||||
|
|
||||||
1. **Заголовок**: "Корзина (X шт)" с иконкой корзины
|
1. **Заголовок**: "Корзина (X шт)" с иконкой корзины
|
||||||
2. **Список товаров**:
|
2. **Список товаров**:
|
||||||
- Название товара (БЕЗ суффикса "(с рецептурой)")
|
- Название товара (БЕЗ суффикса "(с рецептурой)")
|
||||||
@ -1832,7 +1609,7 @@ const handleQuantityChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|||||||
|
|
||||||
```tsx
|
```tsx
|
||||||
const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
||||||
const product = products.find(p => p.id === productId)
|
const product = products.find((p) => p.id === productId)
|
||||||
if (!product) return 0
|
if (!product) return 0
|
||||||
|
|
||||||
// Базовая цена товара
|
// Базовая цена товара
|
||||||
@ -1841,7 +1618,7 @@ const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
|||||||
// Добавляем услуги
|
// Добавляем услуги
|
||||||
if (product.services && product.services.length > 0) {
|
if (product.services && product.services.length > 0) {
|
||||||
const servicesTotal = product.services.reduce((sum, service) => {
|
const servicesTotal = product.services.reduce((sum, service) => {
|
||||||
return sum + ((service.pricePerUnit || 0) * quantity)
|
return sum + (service.pricePerUnit || 0) * quantity
|
||||||
}, 0)
|
}, 0)
|
||||||
total += servicesTotal
|
total += servicesTotal
|
||||||
}
|
}
|
||||||
@ -1849,7 +1626,7 @@ const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
|||||||
// Добавляем FF расходники (используем .price, НЕ .pricePerUnit!)
|
// Добавляем FF расходники (используем .price, НЕ .pricePerUnit!)
|
||||||
if (product.ffConsumables && product.ffConsumables.length > 0) {
|
if (product.ffConsumables && product.ffConsumables.length > 0) {
|
||||||
const ffConsumablesTotal = product.ffConsumables.reduce((sum, consumable) => {
|
const ffConsumablesTotal = product.ffConsumables.reduce((sum, consumable) => {
|
||||||
return sum + ((consumable.price || 0) * quantity) // ВАЖНО: .price!
|
return sum + (consumable.price || 0) * quantity // ВАЖНО: .price!
|
||||||
}, 0)
|
}, 0)
|
||||||
total += ffConsumablesTotal
|
total += ffConsumablesTotal
|
||||||
}
|
}
|
||||||
@ -1857,7 +1634,7 @@ const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
|||||||
// Добавляем расходники продавца
|
// Добавляем расходники продавца
|
||||||
if (product.sellerConsumables && product.sellerConsumables.length > 0) {
|
if (product.sellerConsumables && product.sellerConsumables.length > 0) {
|
||||||
const sellerConsumablesTotal = product.sellerConsumables.reduce((sum, consumable) => {
|
const sellerConsumablesTotal = product.sellerConsumables.reduce((sum, consumable) => {
|
||||||
return sum + ((consumable.pricePerUnit || 0) * quantity)
|
return sum + (consumable.pricePerUnit || 0) * quantity
|
||||||
}, 0)
|
}, 0)
|
||||||
total += sellerConsumablesTotal
|
total += sellerConsumablesTotal
|
||||||
}
|
}
|
||||||
@ -1875,6 +1652,7 @@ const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
|||||||
3. **Логистическая компания**: Только партнеры типа `'LOGIST'`
|
3. **Логистическая компания**: Только партнеры типа `'LOGIST'`
|
||||||
|
|
||||||
**ПОРЯДОК ОТОБРАЖЕНИЯ В КОРЗИНЕ**:
|
**ПОРЯДОК ОТОБРАЖЕНИЯ В КОРЗИНЕ**:
|
||||||
|
|
||||||
```
|
```
|
||||||
Дата поставки: 08.08.2025
|
Дата поставки: 08.08.2025
|
||||||
Фулфилмент-центр: ФУЛФИЛМЕНТ РУ
|
Фулфилмент-центр: ФУЛФИЛМЕНТ РУ
|
||||||
@ -1884,14 +1662,17 @@ const getProductTotalWithRecipe = (productId: string, quantity: number) => {
|
|||||||
##### **9.2.6.6 Критические требования**
|
##### **9.2.6.6 Критические требования**
|
||||||
|
|
||||||
🚨 **БЕЗОПАСНОСТЬ ТИПОВ**:
|
🚨 **БЕЗОПАСНОСТЬ ТИПОВ**:
|
||||||
|
|
||||||
- Всегда проверять на `null/undefined`: `selectedSupplier?.id || ''`
|
- Всегда проверять на `null/undefined`: `selectedSupplier?.id || ''`
|
||||||
- Использовать optional chaining для всех вложенных объектов
|
- Использовать optional chaining для всех вложенных объектов
|
||||||
|
|
||||||
🚨 **ПРОИЗВОДИТЕЛЬНОСТЬ**:
|
🚨 **ПРОИЗВОДИТЕЛЬНОСТЬ**:
|
||||||
|
|
||||||
- Мемоизация расчетов: `useMemo` для дорогих вычислений
|
- Мемоизация расчетов: `useMemo` для дорогих вычислений
|
||||||
- Debounce для инпутов количества
|
- Debounce для инпутов количества
|
||||||
|
|
||||||
🚨 **UX КОНСИСТЕНТНОСТЬ**:
|
🚨 **UX КОНСИСТЕНТНОСТЬ**:
|
||||||
|
|
||||||
- Единые стили для всех корзин в системе
|
- Единые стили для всех корзин в системе
|
||||||
- Одинаковое поведение auto-add во всех формах
|
- Одинаковое поведение auto-add во всех формах
|
||||||
- Синхронная валидация данных
|
- Синхронная валидация данных
|
||||||
@ -2090,6 +1871,8 @@ height: calc(100vh - headerHeight - tabsHeight - statsHeight - margins);
|
|||||||
|
|
||||||
## 10. 🏪 КАБИНЕТ ПОСТАВЩИКА
|
## 10. 🏪 КАБИНЕТ ПОСТАВЩИКА
|
||||||
|
|
||||||
|
> 📖 **Технические детали кабинета**: См. [wholesale-cabinet-rules.md](./wholesale-cabinet-rules.md) для компонентов, GraphQL и UI/UX
|
||||||
|
|
||||||
### 10.1 Разделение понятий: РЫНОК vs МАРКЕТ
|
### 10.1 Разделение понятий: РЫНОК vs МАРКЕТ
|
||||||
|
|
||||||
**🔍 КРИТИЧЕСКОЕ РАЗДЕЛЕНИЕ ПОНЯТИЙ:**
|
**🔍 КРИТИЧЕСКОЕ РАЗДЕЛЕНИЕ ПОНЯТИЙ:**
|
||||||
|
336
wholesale-cabinet-rules.md
Normal file
336
wholesale-cabinet-rules.md
Normal file
@ -0,0 +1,336 @@
|
|||||||
|
# ПРАВИЛА КАБИНЕТА ПОСТАВЩИКА (WHOLESALE)
|
||||||
|
|
||||||
|
> ⚠️ **ВАЖНО**: Это файл с техническими деталями кабинета поставщика.
|
||||||
|
> Общие бизнес-правила находятся в **[rules-complete.md](./rules-complete.md)**
|
||||||
|
|
||||||
|
## Когда использовать этот файл:
|
||||||
|
|
||||||
|
- Работа с компонентами `/warehouse`, `/supplier-orders`
|
||||||
|
- GraphQL запросы для поставщиков
|
||||||
|
- UI/UX специфика кабинета поставщика
|
||||||
|
- Технические детали реализации
|
||||||
|
|
||||||
|
## 1. 🏪 СТРУКТУРА КАБИНЕТА ПОСТАВЩИКА
|
||||||
|
|
||||||
|
### 1.1 Основные разделы
|
||||||
|
|
||||||
|
**ПОСТАВЩИК (`WHOLESALE`)** имеет доступ к следующим разделам:
|
||||||
|
|
||||||
|
- **Склад** (`/warehouse`) - управление товарами и расходниками
|
||||||
|
- **Поставки** (`/supplies`) - обработка заказов от селлеров
|
||||||
|
- **Маркет** (`/market`) - просмотр глобального каталога
|
||||||
|
- **Партнеры** (`/partners`) - управление контрагентами
|
||||||
|
- **Мессенджер** (`/messenger`) - связь с партнерами
|
||||||
|
- **Настройки** (`/settings`) - профиль и API ключи
|
||||||
|
- **Экономика** (`/economics`) - финансовая аналитика
|
||||||
|
|
||||||
|
### 1.2 Навигация и роутинг
|
||||||
|
|
||||||
|
#### При входе в систему:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
switch (user?.organization?.type) {
|
||||||
|
case 'WHOLESALE':
|
||||||
|
router.push('/supplies') // Направляем на страницу поставок
|
||||||
|
break
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Специальная логика роутинга:
|
||||||
|
|
||||||
|
> 📖 **Бизнес-логика роутинга**: См. [rules-complete.md#4-система-ролей-и-доступов](./rules-complete.md#4--система-ролей-и-доступов)
|
||||||
|
|
||||||
|
## 2. 🎨 UI/UX КОМПОНЕНТЫ
|
||||||
|
|
||||||
|
### 2.1 Dashboard компоненты
|
||||||
|
|
||||||
|
#### Основные компоненты кабинета:
|
||||||
|
|
||||||
|
- `WarehouseDashboard` - главный компонент склада
|
||||||
|
- `SupplierOrdersDashboard` - управление заказами
|
||||||
|
- `WholesaleEconomicsPage` - экономическая аналитика
|
||||||
|
- `WholesaleHomePage` - домашняя страница поставщика
|
||||||
|
|
||||||
|
#### Wrapper-компоненты:
|
||||||
|
|
||||||
|
- `HomePageWrapper` - маршрутизация по типам организаций
|
||||||
|
- `EconomicsPageWrapper` - адаптивная экономика по кабинетам
|
||||||
|
|
||||||
|
#### Специализированные компоненты:
|
||||||
|
|
||||||
|
- `SupplierOrderCard` - карточка заказа для поставщика
|
||||||
|
- `SupplierOrdersContent` - контент страницы заказов
|
||||||
|
- `SupplierOrdersSearch` - поиск по заказам
|
||||||
|
- `SupplierOrdersTabs` - табы (активные/завершенные)
|
||||||
|
- `SupplierOrderStats` - статистика и аналитика заказов
|
||||||
|
|
||||||
|
### 2.2 Карточка поставщика в интерфейсе
|
||||||
|
|
||||||
|
#### Структура карточки:
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
<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 Поисковый интерфейс
|
||||||
|
|
||||||
|
```jsx
|
||||||
|
<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](./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-кабинет-поставщика](./rules-complete.md#10--кабинет-поставщика) для правил создания товаров, обязательных полей и статистики
|
||||||
|
|
||||||
|
## 4. 🛠️ GRAPHQL API
|
||||||
|
|
||||||
|
### 4.1 Основные запросы (Queries)
|
||||||
|
|
||||||
|
#### Получение товаров поставщика:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetMyProducts {
|
||||||
|
myProducts {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
article
|
||||||
|
price
|
||||||
|
quantity
|
||||||
|
organization {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
market # Физический рынок поставщика
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получение заказов:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetSupplierOrders {
|
||||||
|
supplyOrders(where: { partnerId: $myOrgId }) {
|
||||||
|
id
|
||||||
|
status
|
||||||
|
totalAmount
|
||||||
|
organization {
|
||||||
|
name # Заказчик
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Получение партнеров:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
query GetMyCounterparties {
|
||||||
|
myCounterparties {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
type
|
||||||
|
market
|
||||||
|
fullName
|
||||||
|
inn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.2 Мутации (Mutations)
|
||||||
|
|
||||||
|
#### Создание товара:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
mutation CreateProduct($input: ProductInput!) {
|
||||||
|
createProduct(input: $input) {
|
||||||
|
success
|
||||||
|
product {
|
||||||
|
id
|
||||||
|
article
|
||||||
|
organization {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Обработка заказов поставщиком:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Отгрузка заказов:
|
||||||
|
|
||||||
|
```graphql
|
||||||
|
mutation ShipSupplyOrder($orderId: ID!) {
|
||||||
|
shipSupplyOrder(id: $orderId) {
|
||||||
|
success
|
||||||
|
order {
|
||||||
|
id
|
||||||
|
status # SHIPPED -> IN_TRANSIT
|
||||||
|
organization {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.3 Правила партнерства
|
||||||
|
|
||||||
|
**КРИТИЧЕСКОЕ ПРАВИЛО**: Поставщики в формах берутся ТОЛЬКО из партнеров с типом `WHOLESALE`
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// ✅ ПРАВИЛЬНО
|
||||||
|
const suppliers = await useQuery(GET_MY_COUNTERPARTIES, {
|
||||||
|
variables: { type: 'WHOLESALE' },
|
||||||
|
})
|
||||||
|
|
||||||
|
// ❌ НЕПРАВИЛЬНО
|
||||||
|
const suppliers = await useQuery(GET_SUPPLY_SUPPLIERS)
|
||||||
|
```
|
||||||
|
|
||||||
|
> 📖 **Система партнерства**: См. [rules-complete.md#13-система-партнерства-и-контрагентов](./rules-complete.md#13--система-партнерства-и-контрагентов)
|
||||||
|
|
||||||
|
## 5. 📁 ТЕХНИЧЕСКИЕ КОМПОНЕНТЫ
|
||||||
|
|
||||||
|
> 📖 **Архитектура рынков**: См. [rules-complete.md#10-кабинет-поставщика](./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-поставок](./rules-complete.md#5--workflow-поставок) для бизнес-процессов
|
||||||
|
|
||||||
|
### 6.1 Обязательные проверки:
|
||||||
|
|
||||||
|
- Проверка типа организации: `organization.type === 'WHOLESALE'`
|
||||||
|
- Валидация прав доступа на уровне GraphQL резолверов
|
||||||
|
- Контроль остатков при подтверждении заказов
|
||||||
|
|
||||||
|
### 6.2 Правила безопасности доступа:
|
||||||
|
|
||||||
|
#### Контроль на уровне компонентов:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
{user?.organization?.type === "WHOLESALE" && (
|
||||||
|
<WarehouseDashboard />
|
||||||
|
)}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Проверки в GraphQL резолверах:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Проверка что пользователь - поставщик
|
||||||
|
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-критические-запреты](./rules-complete.md#17--критические-запреты)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Последнее обновление**: Декабрь 2024
|
||||||
|
**Связанные файлы**:
|
||||||
|
|
||||||
|
- [rules-complete.md](./rules-complete.md) - Общие бизнес-правила
|
||||||
|
- [visual-design-rules.md](./visual-design-rules.md) - Визуальные правила
|
Reference in New Issue
Block a user