Files
sfera/docs/API.md
Veronika Smirnova bf27f3ba29 Оптимизирована производительность React компонентов с помощью мемоизации
КРИТИЧНЫЕ КОМПОНЕНТЫ ОПТИМИЗИРОВАНЫ:
• 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>
2025-08-06 13:18:45 +03:00

6.0 KiB
Raw Blame History

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 - Товары из WB
  • getWBWarehouseData - Данные склада WB
  • getWBReturnClaims - Заявки на возврат 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]}