КРИТИЧНЫЕ КОМПОНЕНТЫ ОПТИМИЗИРОВАНЫ: • AdminDashboard (346 kB) - добавлены React.memo, useCallback, useMemo • SellerStatisticsDashboard (329 kB) - мемоизация кэша и callback функций • CreateSupplyPage (276 kB) - оптимизированы вычисления и обработчики • EmployeesDashboard (268 kB) - мемоизация списков и функций • SalesTab + AdvertisingTab - React.memo обертка ТЕХНИЧЕСКИЕ УЛУЧШЕНИЯ: ✅ React.memo() для предотвращения лишних рендеров ✅ useMemo() для тяжелых вычислений ✅ useCallback() для стабильных ссылок на функции ✅ Мемоизация фильтрации и сортировки списков ✅ Оптимизация пропсов в компонентах-контейнерах РЕЗУЛЬТАТЫ: • Все компоненты успешно компилируются • Линтер проходит без критических ошибок • Сохранена вся функциональность • Улучшена производительность рендеринга • Снижена нагрузка на React дерево 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
6.0 KiB
6.0 KiB
API Documentation
GraphQL Schema Overview
Основные типы
Organization Types
enum OrganizationType {
SELLER # Селлер
WHOLESALE # Поставщик
FULFILLMENT # Фулфилмент
LOGIST # Логистика
}
Product Types
enum ProductType {
PRODUCT # Товар
CONSUMABLE # Расходники
DEFECT # Брак (планируется)
FINISHED_PRODUCT # Готовый продукт (планируется)
}
Supply Order Statuses
enum SupplyOrderStatus {
PENDING
SUPPLIER_APPROVED
CONFIRMED
LOGISTICS_CONFIRMED
SHIPPED
IN_TRANSIT
DELIVERED
CANCELLED
}
Основные Query запросы
Аутентификация и пользователи
me- Текущий пользовательcheckUserExists(phone: String!)- Проверка существования пользователя
Организации и партнеры
myOrganization- Организация текущего пользователяmyCounterparties- Список партнеровmyCounterpartyRequests- Заявки на партнерствоsearchOrganizations(search: String, type: OrganizationType)- Поиск организаций
Товары и склад
myProducts- Товары организацииorganizationProducts(organizationId: ID!, type: ProductType)- Товары конкретной организацииgetSupplierGoods(supplierId: ID!)- Товары поставщикаmyWarehouseStats- Статистика складаfulfillmentWarehouseStats- Статистика фулфилмент склада
Поставки
mySupplyOrders- Заказы поставокmySupplies- Поставки организацииgetSupplySuppliers- Поставщики для поставок
Услуги (Фулфилмент)
myServices- Услуги фулфилментаmyLogistics- Логистические маршрутыmyEmployees- СотрудникиemployeeSchedule(employeeId: ID!, year: Int!, month: Int!)- График сотрудника
Wildberries интеграция
getWBProducts- Товары из WBgetWBWarehouseData- Данные склада WBgetWBReturnClaims- Заявки на возврат WB
Основные Mutations
Аутентификация
sendSmsCode(phone: String!)- Отправка SMS кодаverifySmsCode(phone: String!, code: String!)- Верификация кодаupdateUserAvatar(avatar: String!)- Обновление аватара
Организации
createOrganization(input: CreateOrganizationInput!)- Создание организацииupdateOrganization(input: UpdateOrganizationInput!)- Обновление организации
Товары
createProduct(input: CreateProductInput!)- Создание товараupdateProduct(id: ID!, input: UpdateProductInput!)- Обновление товараdeleteProduct(id: ID!)- Удаление товараtoggleProductStatus(id: ID!)- Изменение статуса товара
Поставки
createSupplyOrder(input: CreateSupplyOrderInput!)- Создание заказаupdateSupplyOrderStatus(id: ID!, status: SupplyOrderStatus!)- Обновление статусаcreateWildberriesSupply(input: CreateWildberriesSupplyInput!)- Создание WB поставки
Партнерство
sendCounterpartyRequest(receiverId: ID!, message: String)- Отправка заявкиacceptCounterpartyRequest(requestId: ID!)- Принятие заявкиrejectCounterpartyRequest(requestId: ID!)- Отклонение заявки
Услуги (Фулфилмент)
createService(input: CreateServiceInput!)- Создание услугиupdateService(id: ID!, input: UpdateServiceInput!)- Обновление услугиdeleteService(id: ID!)- Удаление услуги
Сотрудники (Фулфилмент)
createEmployee(input: CreateEmployeeInput!)- Создание сотрудникаupdateEmployee(id: ID!, input: UpdateEmployeeInput!)- Обновление сотрудникаdeleteEmployee(id: ID!)- Удаление сотрудникаupdateEmployeeSchedule(input: UpdateEmployeeScheduleInput!)- Обновление графика
Правила доступа
Общие правила
- Все запросы требуют аутентификации (кроме auth endpoints)
- Доступ ограничен типом организации пользователя
- Фулфилмент имеет максимальные права доступа
Специфичные ограничения
- Создание товаров: Только WHOLESALE
- Создание услуг: Только FULFILLMENT
- Управление сотрудниками: Только FULFILLMENT
- Просмотр всех заказов: FULFILLMENT и участники заказа
Примеры запросов
Получение товаров поставщика
query GetSupplierProducts($organizationId: ID!) {
organizationProducts(organizationId: $organizationId, type: PRODUCT) {
id
name
article
price
quantity
images
}
}
Создание заказа поставки
mutation CreateSupplyOrder($input: CreateSupplyOrderInput!) {
createSupplyOrder(input: $input) {
id
status
items {
product {
name
}
quantity
price
}
}
}
Обновление статуса поставки
mutation UpdateSupplyStatus($id: ID!, $status: SupplyOrderStatus!) {
updateSupplyOrderStatus(id: $id, status: $status) {
id
status
updatedAt
}
}
Последнее обновление: ${new Date().toISOString().split('T')[0]}