diff --git a/back-button-variants.html b/back-button-variants.html
deleted file mode 100644
index f1a188f..0000000
--- a/back-button-variants.html
+++ /dev/null
@@ -1,263 +0,0 @@
-
-
-
-
-
Наведите курсор на кнопки для просмотра hover эффектов
-
-
-
\ No newline at end of file
diff --git a/diagnostic-script.js b/diagnostic-script.js
deleted file mode 100644
index 575bb70..0000000
--- a/diagnostic-script.js
+++ /dev/null
@@ -1,96 +0,0 @@
-const { PrismaClient } = require("@prisma/client");
-
-const prisma = new PrismaClient();
-
-async function diagnoseDatabase() {
- try {
- console.log("🔍 ДИАГНОСТИКА БАЗЫ ДАННЫХ...\n");
-
- // Проверяем пользователей
- const users = await prisma.user.findMany({
- include: {
- organization: true,
- },
- });
-
- console.log("👥 ПОЛЬЗОВАТЕЛИ:");
- users.forEach((user) => {
- console.log(` - ID: ${user.id}`);
- console.log(` Телефон: ${user.phone}`);
- console.log(` Организация: ${user.organization?.name || "НЕТ"}`);
- console.log(` Тип организации: ${user.organization?.type || "НЕТ"}`);
- console.log("");
- });
-
- // Проверяем организации
- const organizations = await prisma.organization.findMany();
- console.log("🏢 ОРГАНИЗАЦИИ:");
- organizations.forEach((org) => {
- console.log(` - ID: ${org.id}`);
- console.log(` Название: ${org.name}`);
- console.log(` Тип: ${org.type}`);
- console.log("");
- });
-
- // Проверяем товары
- const products = await prisma.product.findMany({
- include: {
- organization: true,
- category: true,
- },
- orderBy: {
- createdAt: "desc",
- },
- });
-
- console.log("🛍️ ТОВАРЫ:");
- if (products.length === 0) {
- console.log(" НЕТ ТОВАРОВ В БАЗЕ ДАННЫХ");
- } else {
- products.forEach((product) => {
- console.log(` - ID: ${product.id}`);
- console.log(` Название: ${product.name}`);
- console.log(` Артикул: ${product.article}`);
- console.log(` Тип: ${product.type}`);
- console.log(` Активен: ${product.isActive}`);
- console.log(
- ` Организация: ${product.organization?.name || "НЕТ"} (${
- product.organization?.type || "НЕТ"
- })`
- );
- console.log(` Создан: ${product.createdAt}`);
- console.log("");
- });
- }
-
- // Проверяем товары поставщиков
- const wholesaleProducts = await prisma.product.findMany({
- where: {
- organization: {
- type: "WHOLESALE",
- },
- type: "PRODUCT",
- },
- include: {
- organization: true,
- },
- });
-
- console.log("🏪 ТОВАРЫ ПОСТАВЩИКОВ (WHOLESALE + PRODUCT):");
- if (wholesaleProducts.length === 0) {
- console.log(" НЕТ ТОВАРОВ ПОСТАВЩИКОВ");
- } else {
- wholesaleProducts.forEach((product) => {
- console.log(
- ` - ${product.name} (${product.article}) - ${product.organization?.name}`
- );
- });
- }
- } catch (error) {
- console.error("❌ ОШИБКА:", error);
- } finally {
- await prisma.$disconnect();
- }
-}
-
-diagnoseDatabase();
diff --git a/current-session.md b/legacy-rules/current-session.md
similarity index 100%
rename from current-session.md
rename to legacy-rules/current-session.md
diff --git a/seller_supply_migration.sql b/seller_supply_migration.sql
deleted file mode 100644
index 60116cc..0000000
--- a/seller_supply_migration.sql
+++ /dev/null
@@ -1,151 +0,0 @@
--- =============================================================================
--- 📦 МИГРАЦИЯ ДЛЯ СИСТЕМЫ ПОСТАВОК РАСХОДНИКОВ СЕЛЛЕРА
--- =============================================================================
--- Создание: Новые таблицы для селлерских поставок расходников
--- Автор: Claude Code AI Assistant
--- Дата: $(date)
-
--- Создание нового enum для статусов селлера (5-статусная система)
-CREATE TYPE "SellerSupplyOrderStatus" AS ENUM (
- 'PENDING', -- Ожидает одобрения поставщика
- 'APPROVED', -- Одобрено поставщиком
- 'SHIPPED', -- Отгружено
- 'DELIVERED', -- Доставлено
- 'COMPLETED', -- Завершено
- 'CANCELLED' -- Отменено
-);
-
--- Основная таблица поставок расходников селлера
-CREATE TABLE "seller_consumable_supply_orders" (
- -- === БАЗОВЫЕ ПОЛЯ ===
- "id" TEXT NOT NULL,
- "status" "SellerSupplyOrderStatus" NOT NULL DEFAULT 'PENDING',
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
- "updatedAt" TIMESTAMP(3) NOT NULL,
-
- -- === ДАННЫЕ СЕЛЛЕРА (создатель) ===
- "sellerId" TEXT NOT NULL, -- кто заказывает (FK: Organization SELLER)
- "fulfillmentCenterId" TEXT NOT NULL, -- куда доставлять (FK: Organization FULFILLMENT)
- "requestedDeliveryDate" TIMESTAMP(3) NOT NULL, -- когда нужно
- "notes" TEXT, -- заметки селлера
-
- -- === ДАННЫЕ ПОСТАВЩИКА ===
- "supplierId" TEXT, -- кто поставляет (FK: Organization WHOLESALE)
- "supplierApprovedAt" TIMESTAMP(3), -- когда одобрил
- "packagesCount" INTEGER, -- количество грузомест
- "estimatedVolume" DECIMAL(8,3), -- объем груза в м³
- "supplierContractId" TEXT, -- номер договора
- "supplierNotes" TEXT, -- заметки поставщика
-
- -- === ДАННЫЕ ЛОГИСТИКИ ===
- "logisticsPartnerId" TEXT, -- кто везет (FK: Organization LOGIST)
- "estimatedDeliveryDate" TIMESTAMP(3), -- план доставки
- "routeId" TEXT, -- маршрут (FK: LogisticsRoute)
- "logisticsCost" DECIMAL(10,2), -- стоимость доставки
- "logisticsNotes" TEXT, -- заметки логистики
-
- -- === ДАННЫЕ ОТГРУЗКИ ===
- "shippedAt" TIMESTAMP(3), -- факт отгрузки
- "trackingNumber" TEXT, -- номер отслеживания
-
- -- === ДАННЫЕ ПРИЕМКИ ===
- "deliveredAt" TIMESTAMP(3), -- факт доставки в ФФ
- "receivedById" TEXT, -- кто принял в ФФ (FK: User)
- "actualQuantity" INTEGER, -- принято количество
- "defectQuantity" INTEGER, -- брак
- "receiptNotes" TEXT, -- заметки приемки
-
- -- === ЭКОНОМИКА (для будущего раздела экономики) ===
- "totalCostWithDelivery" DECIMAL(12,2), -- общая стоимость с доставкой
- "estimatedStorageCost" DECIMAL(10,2), -- оценочная стоимость хранения
-
- CONSTRAINT "seller_consumable_supply_orders_pkey" PRIMARY KEY ("id")
-);
-
--- Позиции в поставке расходников селлера
-CREATE TABLE "seller_consumable_supply_items" (
- "id" TEXT NOT NULL,
- "supplyOrderId" TEXT NOT NULL, -- связь с поставкой
- "productId" TEXT NOT NULL, -- какой расходник (FK: Product)
-
- -- === КОЛИЧЕСТВА ===
- "requestedQuantity" INTEGER NOT NULL, -- запросили
- "approvedQuantity" INTEGER, -- поставщик одобрил
- "shippedQuantity" INTEGER, -- отгрузили
- "receivedQuantity" INTEGER, -- приняли в ФФ
- "defectQuantity" INTEGER DEFAULT 0, -- брак
-
- -- === ЦЕНЫ ===
- "unitPrice" DECIMAL(10,2) NOT NULL, -- цена за единицу от поставщика
- "totalPrice" DECIMAL(12,2) NOT NULL, -- общая стоимость
-
- "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
- "updatedAt" TIMESTAMP(3) NOT NULL,
-
- CONSTRAINT "seller_consumable_supply_items_pkey" PRIMARY KEY ("id")
-);
-
--- === СОЗДАНИЕ ИНДЕКСОВ ===
-CREATE UNIQUE INDEX "seller_consumable_supply_items_supplyOrderId_productId_key"
-ON "seller_consumable_supply_items"("supplyOrderId", "productId");
-
--- === СОЗДАНИЕ ВНЕШНИХ КЛЮЧЕЙ ===
-
--- Seller Supply Orders связи
-ALTER TABLE "seller_consumable_supply_orders"
-ADD CONSTRAINT "seller_consumable_supply_orders_sellerId_fkey"
-FOREIGN KEY ("sellerId") REFERENCES "organizations"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-
-ALTER TABLE "seller_consumable_supply_orders"
-ADD CONSTRAINT "seller_consumable_supply_orders_fulfillmentCenterId_fkey"
-FOREIGN KEY ("fulfillmentCenterId") REFERENCES "organizations"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-
-ALTER TABLE "seller_consumable_supply_orders"
-ADD CONSTRAINT "seller_consumable_supply_orders_supplierId_fkey"
-FOREIGN KEY ("supplierId") REFERENCES "organizations"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-
-ALTER TABLE "seller_consumable_supply_orders"
-ADD CONSTRAINT "seller_consumable_supply_orders_logisticsPartnerId_fkey"
-FOREIGN KEY ("logisticsPartnerId") REFERENCES "organizations"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-
-ALTER TABLE "seller_consumable_supply_orders"
-ADD CONSTRAINT "seller_consumable_supply_orders_receivedById_fkey"
-FOREIGN KEY ("receivedById") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-
--- Seller Supply Items связи
-ALTER TABLE "seller_consumable_supply_items"
-ADD CONSTRAINT "seller_consumable_supply_items_supplyOrderId_fkey"
-FOREIGN KEY ("supplyOrderId") REFERENCES "seller_consumable_supply_orders"("id") ON DELETE CASCADE;
-
-ALTER TABLE "seller_consumable_supply_items"
-ADD CONSTRAINT "seller_consumable_supply_items_productId_fkey"
-FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-
--- === ДОБАВЛЕНИЕ СВЯЗЕЙ В СУЩЕСТВУЮЩИЕ ТАБЛИЦЫ ===
-
--- Добавление связей в organizations (если они еще не существуют)
-DO $$
-BEGIN
- -- Проверяем существование колонок перед добавлением
- IF NOT EXISTS (
- SELECT 1 FROM information_schema.columns
- WHERE table_name = 'organizations'
- AND column_name = 'sellerSupplyOrdersAsSeller'
- ) THEN
- -- Добавляем связи будут созданы автоматически через Prisma при следующем generate
- RAISE NOTICE 'Связи для селлерских поставок будут созданы автоматически при prisma generate';
- END IF;
-END
-$$;
-
--- Комментарии к таблицам
-COMMENT ON TABLE "seller_consumable_supply_orders" IS 'Поставки расходников селлера - заказы от селлеров для доставки в фулфилмент-центры';
-COMMENT ON TABLE "seller_consumable_supply_items" IS 'Позиции в поставках расходников селлера';
-
--- Комментарии к ключевым полям
-COMMENT ON COLUMN "seller_consumable_supply_orders"."sellerId" IS 'Селлер-заказчик (тип SELLER)';
-COMMENT ON COLUMN "seller_consumable_supply_orders"."fulfillmentCenterId" IS 'Фулфилмент-получатель (тип FULFILLMENT)';
-COMMENT ON COLUMN "seller_consumable_supply_orders"."supplierId" IS 'Поставщик товаров (тип WHOLESALE)';
-COMMENT ON COLUMN "seller_consumable_supply_orders"."totalCostWithDelivery" IS 'Для будущего раздела экономики селлера';
-
-RAISE NOTICE 'Система поставок расходников селлера успешно создана!';
\ No newline at end of file
diff --git a/server.log b/server.log
index 056e62d..85ee65d 100644
--- a/server.log
+++ b/server.log
@@ -2,16 +2,3734 @@
> sferav@0.1.0 dev
> next dev --turbopack
- ⚠ Port 3000 is in use by process 17170
-18649
-23448
-33312, using available port 3001 instead.
▲ Next.js 15.4.1 (Turbopack)
- - Local: http://localhost:3001
- - Network: http://192.168.0.101:3001
+ - Local: http://localhost:3000
+ - Network: http://192.168.50.224:3000
- Environments: .env
- Experiments (use with caution):
· optimizePackageImports
✓ Starting...
- ✓ Ready in 897ms
+ ✓ Ready in 840ms
+ ○ Compiling /api/graphql ...
+ ✓ Compiled /api/graphql in 1224ms
+🔥 МОДУЛЬ SERVICES DOMAIN ЗАГРУЖАЕТСЯ
+🔥 SERVICES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 INVENTORY DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 SELLER GOODS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 LOGISTICS CONSUMABLES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 WILDBERRIES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 ANALYTICS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 ADMIN TOOLS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 FILE MANAGEMENT DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 EXTERNAL ADS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 SELLER CONSUMABLES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+GraphQL Context - Invalid token: Error [JsonWebTokenError]: jwt malformed
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ constructor: [Function: JsonWebTokenError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:44:17.607Z',
+ variables: undefined
+}
+🔐 EMPLOYEE DOMAIN AUTH CHECK: { hasUser: false, userId: undefined, organizationId: undefined }
+❌ AUTH FAILED: No user in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: undefined,
+ timestamp: '2025-09-10T15:44:17.610Z'
+}
+ POST /api/graphql 200 in 1578ms
+GraphQL Context - Invalid token: Error [JsonWebTokenError]: jwt malformed
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ constructor: [Function: JsonWebTokenError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:45:07.294Z',
+ variables: undefined
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: undefined,
+ timestamp: '2025-09-10T15:45:07.295Z'
+}
+ POST /api/graphql 200 in 56ms
+GraphQL Context - Invalid token: Error [JsonWebTokenError]: jwt malformed
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ constructor: [Function: JsonWebTokenError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:45:29.404Z',
+ variables: undefined
+}
+🔐 SELLER GOODS DOMAIN AUTH CHECK: { hasUser: false, userId: undefined, organizationId: undefined }
+❌ AUTH FAILED: No user in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: undefined,
+ timestamp: '2025-09-10T15:45:29.405Z'
+}
+ POST /api/graphql 200 in 37ms
+ ○ Compiling /fulfillment/supplies/goods/new ...
+ ✓ Compiled /fulfillment/supplies/goods/new in 1780ms
+ GET /fulfillment/supplies/goods/new 200 in 2042ms
+ ✓ Compiled /favicon.ico in 134ms
+ GET /favicon.ico?favicon.45db1c09.ico 200 in 395ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:05.568Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 1411ms
+ ✓ Compiled /api/events in 104ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:06.265Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 483ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:06.739Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 458ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T15:47:07.015Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T15:47:07.026Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T15:47:07.036Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMySellerGoodsSupplyRequests',
+ timestamp: '2025-09-10T15:47:07.219Z',
+ variables: {}
+}
+🔐 SELLER GOODS DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_SELLER_GOODS_SUPPLY_REQUESTS DOMAIN QUERY STARTED: { userId: 'cmfbgh2wl0001y5nap24fasui' }
+❌ MY_SELLER_GOODS_SUPPLY_REQUESTS DOMAIN ERROR: GraphQLError: Доступно только для поставщиков
+ at checkWholesaleAccess (src/graphql/resolvers/domains/seller-goods.ts:95:10)
+ at async (src/graphql/resolvers/domains/seller-goods.ts:183:21)
+ at async Object.mySellerGoodsSupplyRequests (src/graphql/resolvers/domains/seller-goods.ts:30:21)
+ 93 |
+ 94 | if (!user.organization || user.organization.type !== 'WHOLESALE') {
+> 95 | throw new GraphQLError('Доступно только для поставщиков', {
+ | ^
+ 96 | extensions: { code: 'FORBIDDEN' },
+ 97 | })
+ 98 | } {
+ path: undefined,
+ locations: undefined,
+ extensions: [Object]
+}
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 396ms
+📥 INCOMING_REQUESTS: {
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 1417ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyEmployeesV2',
+ timestamp: '2025-09-10T15:47:07.606Z',
+ variables: {}
+}
+🔐 EMPLOYEE DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr'
+}
+✅ AUTH PASSED: Calling resolver
+🔐 EMPLOYEE DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_EMPLOYEES DOMAIN QUERY STARTED: { args: {}, userId: 'cmfbgh2wl0001y5nap24fasui' }
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetLogisticsPartners',
+ timestamp: '2025-09-10T15:47:07.636Z',
+ variables: {}
+}
+📦 LOGISTICS_PARTNERS RESOLVER CALLED: {
+ organizationId: 'cmfbghrno0002y5na8b59ykfr',
+ organizationType: 'FULFILLMENT',
+ timestamp: '2025-09-10T15:47:07.799Z'
+}
+📊 PENDING SUPPLIES COUNT: {
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationType: 'FULFILLMENT',
+ ourSupplyOrders: 0,
+ sellerSupplyOrders: 0,
+ incomingSupplierOrders: 0,
+ logisticsOrders: 0,
+ totalPending: 0
+}
+❌ GraphQL ERROR: {
+ errors: [
+ 'Cannot return null for non-nullable field PendingSuppliesCount.incomingRequests.'
+ ],
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T15:47:07.910Z'
+}
+ POST /api/graphql 200 in 1888ms
+📊 LOGISTICS_PARTNERS RESULT: { partnersCount: 0, organizationType: 'FULFILLMENT' }
+ POST /api/graphql 200 in 517ms
+ POST /api/graphql 200 in 1965ms
+✅ MY_EMPLOYEES DOMAIN SUCCESS: { total: 0, page: 1, employeesCount: 0 }
+🎯 RESOLVER RESULT TYPE: object Has result
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 698ms
+ ✓ Compiled /fulfillment/supplies/fulfillment-consumables in 340ms
+ GET /fulfillment/supplies/fulfillment-consumables 200 in 372ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZiZ2gyd2wwMDAxeTVuYXAyNGZhc3VpIiwicGhvbmUiOiI3OTk5OTk5OTk5OSIsImlhdCI6MTc1NzQwNzQzMCwiZXhwIjoxNzU5OTk5NDMwfQ.jw0t2qqwtuqBPbzJZ71iLim623iK4y8XCRtbByg8-Lw&orgId=cmfbghrno0002y5na8b59ykfr 200 in 2889ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:11.005Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 518ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyFulfillmentConsumableSupplies',
+ timestamp: '2025-09-10T15:47:11.562Z',
+ variables: {}
+}
+🔐 INVENTORY DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_FULFILLMENT_CONSUMABLE_SUPPLIES DOMAIN QUERY STARTED: { userId: 'cmfbgh2wl0001y5nap24fasui' }
+✅ MY_FULFILLMENT_CONSUMABLE_SUPPLIES DOMAIN SUCCESS: { count: 0 }
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 549ms
+ ✓ Compiled /supplies/create-fulfillment-consumables-v2 in 356ms
+ GET /supplies/create-fulfillment-consumables-v2 200 in 386ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZiZ2gyd2wwMDAxeTVuYXAyNGZhc3VpIiwicGhvbmUiOiI3OTk5OTk5OTk5OSIsImlhdCI6MTc1NzQwNzQzMCwiZXhwIjoxNzU5OTk5NDMwfQ.jw0t2qqwtuqBPbzJZ71iLim623iK4y8XCRtbByg8-Lw&orgId=cmfbghrno0002y5na8b59ykfr 200 in 7485ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:13.729Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyCounterparties',
+ timestamp: '2025-09-10T15:47:13.733Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 441ms
+🤝 MY_COUNTERPARTIES: {
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr',
+ organizationType: 'FULFILLMENT',
+ counterpartiesCount: 1
+}
+ POST /api/graphql 200 in 857ms
+ ✓ Compiled /fulfillment/partners in 445ms
+ GET /fulfillment/partners 200 in 473ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:23.909Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 532ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetOutgoingRequests',
+ timestamp: '2025-09-10T15:47:24.469Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyPartnerLink',
+ timestamp: '2025-09-10T15:47:24.553Z',
+ variables: {}
+}
+🔐 REFERRALS DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_PARTNER_LINK DOMAIN QUERY STARTED: { userId: 'cmfbgh2wl0001y5nap24fasui' }
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:24.559Z',
+ variables: {}
+}
+📤 OUTGOING_REQUESTS: {
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationId: 'cmfbghrno0002y5na8b59ykfr',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 561ms
+ POST /api/graphql 200 in 564ms
+✅ MY_PARTNER_LINK DOMAIN SUCCESS: { link: 'http://localhost:3000/register?partner=AF5DFT94SX' }
+🎯 RESOLVER RESULT TYPE: string Has result
+ POST /api/graphql 200 in 643ms
+ ✓ Compiled /register in 240ms
+🔍 RegisterContent - URL параметры: {
+ partnerCode: 'AF5DFT94SX',
+ referralCode: null,
+ searchParams: { partner: 'AF5DFT94SX' }
+}
+🚀 RegisterContent - Передача в AuthFlow: { partnerCode: 'AF5DFT94SX', referralCode: null }
+🎯 RegisterContent - Принудительный показ AuthFlow из-за наличия кода
+🎢 AuthFlow - Полученные props: { partnerCode: 'AF5DFT94SX', referralCode: null }
+🎢 AuthFlow - Статус авторизации: { isAuthenticated: false, hasUser: false }
+🎢 AuthFlow - Обработанные данные: { registrationType: 'PARTNER', activeCode: 'AF5DFT94SX' }
+🎢 AuthFlow - Сохраненные в authData: { partnerCode: 'AF5DFT94SX', referralCode: null }
+ GET /register?partner=AF5DFT94SX 200 in 320ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:38.498Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 466ms
+ ✓ Compiled /dashboard in 284ms
+ GET /dashboard 200 in 347ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:41.542Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 538ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T15:47:42.067Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T15:47:42.158Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:42.162Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T15:47:42.172Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 570ms
+📥 INCOMING_REQUESTS: {
+ userId: 'cmfbgm9c90004y5naqzw76bxd',
+ organizationId: 'cmfbgmqer0005y5na1ezlc4aw',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 656ms
+📊 PENDING SUPPLIES COUNT: {
+ userId: 'cmfbgm9c90004y5naqzw76bxd',
+ organizationType: 'SELLER',
+ ourSupplyOrders: 0,
+ sellerSupplyOrders: 0,
+ incomingSupplierOrders: 0,
+ logisticsOrders: 0,
+ totalPending: 0
+}
+❌ GraphQL ERROR: {
+ errors: [
+ 'Cannot return null for non-nullable field PendingSuppliesCount.incomingRequests.'
+ ],
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T15:47:42.883Z'
+}
+ POST /api/graphql 200 in 1045ms
+ POST /api/graphql 200 in 1218ms
+ ✓ Compiled /seller/partners in 327ms
+ GET /seller/partners 200 in 357ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:45.297Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 456ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:45.834Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetOutgoingRequests',
+ timestamp: '2025-09-10T15:47:45.840Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyPartnerLink',
+ timestamp: '2025-09-10T15:47:45.851Z',
+ variables: {}
+}
+🔐 REFERRALS DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfbgm9c90004y5naqzw76bxd',
+ organizationId: 'cmfbgmqer0005y5na1ezlc4aw'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_PARTNER_LINK DOMAIN QUERY STARTED: { userId: 'cmfbgm9c90004y5naqzw76bxd' }
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyCounterparties',
+ timestamp: '2025-09-10T15:47:45.855Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 463ms
+📤 OUTGOING_REQUESTS: {
+ userId: 'cmfbgm9c90004y5naqzw76bxd',
+ organizationId: 'cmfbgmqer0005y5na1ezlc4aw',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 545ms
+✅ MY_PARTNER_LINK DOMAIN SUCCESS: { link: 'http://localhost:3000/register?partner=BECP6AJGWK' }
+🎯 RESOLVER RESULT TYPE: string Has result
+ POST /api/graphql 200 in 557ms
+🤝 MY_COUNTERPARTIES: {
+ userId: 'cmfbgm9c90004y5naqzw76bxd',
+ organizationId: 'cmfbgmqer0005y5na1ezlc4aw',
+ organizationType: 'SELLER',
+ counterpartiesCount: 1
+}
+ POST /api/graphql 200 in 965ms
+ ○ Compiling /wholesale/orders ...
+ ✓ Compiled /wholesale/orders in 740ms
+ GET /wholesale/orders 200 in 854ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:58.035Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:58.036Z'
+}
+ POST /api/graphql 200 in 228ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:58.206Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:47:58.207Z'
+}
+ POST /api/graphql 200 in 115ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'SendSmsCode',
+ timestamp: '2025-09-10T15:48:03.541Z',
+ variables: { phone: '77777777777' }
+}
+ POST /api/graphql 200 in 143ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:48:03.687Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:48:03.688Z'
+}
+ POST /api/graphql 200 in 121ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifySmsCode',
+ timestamp: '2025-09-10T15:48:06.048Z',
+ variables: { phone: '77777777777', code: '1234' }
+}
+ POST /api/graphql 200 in 812ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifyInn',
+ timestamp: '2025-09-10T15:48:30.227Z',
+ variables: { inn: '7743291031' }
+}
+ POST /api/graphql 200 in 249ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifyInn',
+ timestamp: '2025-09-10T15:48:58.778Z',
+ variables: { inn: '7743291031' }
+}
+ POST /api/graphql 200 in 219ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifyInn',
+ timestamp: '2025-09-10T15:49:29.720Z',
+ variables: { inn: '7736207543' }
+}
+ POST /api/graphql 200 in 228ms
+🔥 МОДУЛЬ SERVICES DOMAIN ЗАГРУЖАЕТСЯ
+🔥 SERVICES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 INVENTORY DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 SELLER GOODS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 LOGISTICS CONSUMABLES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 WILDBERRIES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 ANALYTICS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 ADMIN TOOLS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 FILE MANAGEMENT DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 EXTERNAL ADS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 SELLER CONSUMABLES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:52:45.912Z',
+ variables: undefined
+}
+🔍 VERIFY_INN STARTED: { inn: '7743291031' }
+✅ VERIFY_INN: ИНН прошел валидацию, запрашиваем данные из DaData...
+✅ VERIFY_INN SUCCESS: { inn: '7743291031', name: 'А-Я ЛОГИСТИКА', isActive: true }
+ POST /api/graphql 200 in 752ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:53:02.793Z',
+ variables: undefined
+}
+🔍 VERIFY_INN STARTED: { inn: '7736207543' }
+✅ VERIFY_INN: ИНН прошел валидацию, запрашиваем данные из DaData...
+✅ VERIFY_INN SUCCESS: { inn: '7736207543', name: 'ЯНДЕКС', isActive: true }
+ POST /api/graphql 200 in 334ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:53:12.807Z',
+ variables: undefined
+}
+🔍 VERIFY_INN STARTED: { inn: '1234567890' }
+❌ VERIFY_INN: ИНН не прошел валидацию контрольной суммы: 1234567890
+ POST /api/graphql 200 in 48ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:53:24.872Z',
+ variables: undefined
+}
+🔍 VERIFY_INN STARTED: { inn: '7702070139' }
+✅ VERIFY_INN: ИНН прошел валидацию, запрашиваем данные из DaData...
+✅ VERIFY_INN SUCCESS: { inn: '7702070139', name: 'БАНК ВТБ', isActive: true }
+ POST /api/graphql 200 in 321ms
+🔥 МОДУЛЬ SERVICES DOMAIN ЗАГРУЖАЕТСЯ
+🔥 SERVICES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 INVENTORY DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 SELLER GOODS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 LOGISTICS CONSUMABLES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 WILDBERRIES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 ANALYTICS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 ADMIN TOOLS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 FILE MANAGEMENT DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 EXTERNAL ADS DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🔥 SELLER CONSUMABLES DOMAIN МОДУЛЬ ЭКСПОРТЫ ГОТОВЫ
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: undefined,
+ timestamp: '2025-09-10T15:54:37.860Z',
+ variables: undefined
+}
+📊 PENDING SUPPLIES COUNT: {
+ userId: 'cmfbgh2wl0001y5nap24fasui',
+ organizationType: 'FULFILLMENT',
+ ourSupplyOrders: 0,
+ sellerSupplyOrders: 0,
+ incomingSupplierOrders: 0,
+ logisticsOrders: 0,
+ totalPending: 0
+}
+ POST /api/graphql 200 in 2138ms
+ GET /wholesale/orders 200 in 114ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:54:49.610Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 219ms
+ GET /favicon.ico?favicon.45db1c09.ico 200 in 254ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:54:49.873Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 217ms
+ ✓ Compiled /login in 298ms
+ GET /login 200 in 345ms
+ GET /login 200 in 31ms
+ GET /dashboard 200 in 29ms
+ GET /dashboard 200 in 33ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:54:50.303Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 197ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:54:50.525Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 208ms
+ GET /dashboard 200 in 66ms
+ GET /favicon.ico?favicon.45db1c09.ico 200 in 227ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'SendSmsCode',
+ timestamp: '2025-09-10T15:54:53.797Z',
+ variables: { phone: '77777777777' }
+}
+ POST /api/graphql 200 in 74ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifySmsCode',
+ timestamp: '2025-09-10T15:54:55.838Z',
+ variables: { phone: '77777777777', code: '1234' }
+}
+ POST /api/graphql 200 in 305ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifyInn',
+ timestamp: '2025-09-10T15:54:59.690Z',
+ variables: { inn: '7743291031' }
+}
+🔍 VERIFY_INN STARTED: { inn: '7743291031' }
+✅ VERIFY_INN: ИНН прошел валидацию, запрашиваем данные из DaData...
+✅ VERIFY_INN SUCCESS: { inn: '7743291031', name: 'А-Я ЛОГИСТИКА', isActive: true }
+ POST /api/graphql 200 in 454ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:55:01.663Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 222ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'RegisterFulfillmentOrganization',
+ timestamp: '2025-09-10T15:55:02.759Z',
+ variables: {
+ input: {
+ phone: '77777777777',
+ inn: '7743291031',
+ type: 'LOGIST',
+ referralCode: null,
+ partnerCode: null
+ }
+ }
+}
+🏢 REGISTER_FULFILLMENT_ORGANIZATION - ВЫЗВАН: {
+ phone: '77777777777',
+ inn: '7743291031',
+ referralCode: null,
+ timestamp: '2025-09-10T15:55:02.760Z'
+}
+✅ ФУЛФИЛМЕНТ ОРГАНИЗАЦИЯ СОЗДАНА: {
+ organizationId: 'cmfe5upy30001y56e4av0o4vs',
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ inn: '7743291031',
+ type: 'FULFILLMENT',
+ referralCode: 'FF_7743291031_1757519703002'
+}
+ POST /api/graphql 200 in 1640ms
+ GET /dashboard 200 in 59ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:55:06.669Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 443ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T15:55:07.190Z',
+ variables: {}
+}
+📥 INCOMING_REQUESTS: {
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 563ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T15:55:07.948Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T15:55:07.968Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T15:55:07.970Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 1427ms
+ POST /api/graphql 200 in 1430ms
+📊 PENDING SUPPLIES COUNT: {
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationType: 'FULFILLMENT',
+ ourSupplyOrders: 0,
+ sellerSupplyOrders: 0,
+ incomingSupplierOrders: 0,
+ logisticsOrders: 0,
+ totalPending: 0
+}
+ POST /api/graphql 200 in 1892ms
+ GET /fulfillment/supplies/goods/new 200 in 84ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:05:44.853Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 1367ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:05:45.521Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 459ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:05:46.030Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 495ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyEmployeesV2',
+ timestamp: '2025-09-10T16:05:46.778Z',
+ variables: {}
+}
+🔐 EMPLOYEE DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs'
+}
+✅ AUTH PASSED: Calling resolver
+🔐 EMPLOYEE DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_EMPLOYEES DOMAIN QUERY STARTED: { args: {}, userId: 'cmfe5lscj0000y56eeg95r8lr' }
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMySellerGoodsSupplyRequests',
+ timestamp: '2025-09-10T16:05:46.788Z',
+ variables: {}
+}
+🔐 SELLER GOODS DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_SELLER_GOODS_SUPPLY_REQUESTS DOMAIN QUERY STARTED: { userId: 'cmfe5lscj0000y56eeg95r8lr' }
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetLogisticsPartners',
+ timestamp: '2025-09-10T16:05:46.791Z',
+ variables: {}
+}
+❌ MY_SELLER_GOODS_SUPPLY_REQUESTS DOMAIN ERROR: GraphQLError: Доступно только для поставщиков
+ at checkWholesaleAccess (src/graphql/resolvers/domains/seller-goods.ts:95:10)
+ at async (src/graphql/resolvers/domains/seller-goods.ts:183:21)
+ at async Object.mySellerGoodsSupplyRequests (src/graphql/resolvers/domains/seller-goods.ts:30:21)
+ 93 |
+ 94 | if (!user.organization || user.organization.type !== 'WHOLESALE') {
+> 95 | throw new GraphQLError('Доступно только для поставщиков', {
+ | ^
+ 96 | extensions: { code: 'FORBIDDEN' },
+ 97 | })
+ 98 | } {
+ path: undefined,
+ locations: undefined,
+ extensions: [Object]
+}
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 1280ms
+📦 LOGISTICS_PARTNERS RESOLVER CALLED: {
+ organizationId: 'cmfe5upy30001y56e4av0o4vs',
+ organizationType: 'FULFILLMENT',
+ timestamp: '2025-09-10T16:05:47.066Z'
+}
+📊 LOGISTICS_PARTNERS RESULT: { partnersCount: 0, organizationType: 'FULFILLMENT' }
+ POST /api/graphql 200 in 1446ms
+✅ MY_EMPLOYEES DOMAIN SUCCESS: { total: 0, page: 1, employeesCount: 0 }
+🎯 RESOLVER RESULT TYPE: object Has result
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 1564ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZlNWxzY2owMDAweTU2ZWVnOTVyOGxyIiwicGhvbmUiOiI3Nzc3Nzc3Nzc3NyIsImlhdCI6MTc1NzUxOTY5NiwiZXhwIjoxNzYwMTExNjk2fQ.W_r92r_4qh_HKhtKNfLmTHVyjl2E-eGXjTrkMndxkoY&orgId=cmfe5upy30001y56e4av0o4vs 200 in 663346ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZlNWxzY2owMDAweTU2ZWVnOTVyOGxyIiwicGhvbmUiOiI3Nzc3Nzc3Nzc3NyIsImlhdCI6MTc1NzUxOTY5NiwiZXhwIjoxNzYwMTExNjk2fQ.W_r92r_4qh_HKhtKNfLmTHVyjl2E-eGXjTrkMndxkoY&orgId=cmfe5upy30001y56e4av0o4vs 200 in 24996ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZlNWxzY2owMDAweTU2ZWVnOTVyOGxyIiwicGhvbmUiOiI3Nzc3Nzc3Nzc3NyIsImlhdCI6MTc1NzUxOTY5NiwiZXhwIjoxNzYwMTExNjk2fQ.W_r92r_4qh_HKhtKNfLmTHVyjl2E-eGXjTrkMndxkoY&orgId=cmfe5upy30001y56e4av0o4vs 200 in 24023ms
+ GET /fulfillment/supplies/goods/new 200 in 145ms
+ GET /favicon.ico?favicon.45db1c09.ico 200 in 239ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:06:10.737Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 630ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T16:06:11.370Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:06:11.457Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T16:06:11.465Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T16:06:11.481Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 581ms
+ POST /api/graphql 200 in 669ms
+📥 INCOMING_REQUESTS: {
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 679ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyEmployeesV2',
+ timestamp: '2025-09-10T16:06:12.035Z',
+ variables: {}
+}
+🔐 EMPLOYEE DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs'
+}
+✅ AUTH PASSED: Calling resolver
+🔐 EMPLOYEE DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_EMPLOYEES DOMAIN QUERY STARTED: { args: {}, userId: 'cmfe5lscj0000y56eeg95r8lr' }
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:06:12.045Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMySellerGoodsSupplyRequests',
+ timestamp: '2025-09-10T16:06:12.056Z',
+ variables: {}
+}
+🔐 SELLER GOODS DOMAIN AUTH CHECK: {
+ hasUser: true,
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs'
+}
+✅ AUTH PASSED: Calling resolver
+🔍 MY_SELLER_GOODS_SUPPLY_REQUESTS DOMAIN QUERY STARTED: { userId: 'cmfe5lscj0000y56eeg95r8lr' }
+❌ MY_SELLER_GOODS_SUPPLY_REQUESTS DOMAIN ERROR: GraphQLError: Доступно только для поставщиков
+ at checkWholesaleAccess (src/graphql/resolvers/domains/seller-goods.ts:95:10)
+ at async (src/graphql/resolvers/domains/seller-goods.ts:183:21)
+ at async Object.mySellerGoodsSupplyRequests (src/graphql/resolvers/domains/seller-goods.ts:30:21)
+ 93 |
+ 94 | if (!user.organization || user.organization.type !== 'WHOLESALE') {
+> 95 | throw new GraphQLError('Доступно только для поставщиков', {
+ | ^
+ 96 | extensions: { code: 'FORBIDDEN' },
+ 97 | })
+ 98 | } {
+ path: undefined,
+ locations: undefined,
+ extensions: [Object]
+}
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 417ms
+📊 PENDING SUPPLIES COUNT: {
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationType: 'FULFILLMENT',
+ ourSupplyOrders: 0,
+ sellerSupplyOrders: 0,
+ incomingSupplierOrders: 0,
+ logisticsOrders: 0,
+ totalPending: 0
+}
+ POST /api/graphql 200 in 1184ms
+ POST /api/graphql 200 in 480ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetLogisticsPartners',
+ timestamp: '2025-09-10T16:06:12.454Z',
+ variables: {}
+}
+✅ MY_EMPLOYEES DOMAIN SUCCESS: { total: 0, page: 1, employeesCount: 0 }
+🎯 RESOLVER RESULT TYPE: object Has result
+🎯 RESOLVER RESULT TYPE: object Has result
+ POST /api/graphql 200 in 710ms
+📦 LOGISTICS_PARTNERS RESOLVER CALLED: {
+ organizationId: 'cmfe5upy30001y56e4av0o4vs',
+ organizationType: 'FULFILLMENT',
+ timestamp: '2025-09-10T16:06:12.615Z'
+}
+📊 LOGISTICS_PARTNERS RESULT: { partnersCount: 0, organizationType: 'FULFILLMENT' }
+ POST /api/graphql 200 in 536ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T16:06:13.500Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T16:06:13.502Z'
+}
+ POST /api/graphql 200 in 78ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T16:06:13.512Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T16:06:13.512Z'
+}
+ POST /api/graphql 200 in 87ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T16:06:13.551Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T16:06:13.551Z'
+}
+ POST /api/graphql 200 in 47ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMySellerGoodsSupplyRequests',
+ timestamp: '2025-09-10T16:06:13.561Z',
+ variables: {}
+}
+🔐 SELLER GOODS DOMAIN AUTH CHECK: { hasUser: false, userId: undefined, organizationId: undefined }
+❌ AUTH FAILED: No user in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMySellerGoodsSupplyRequests',
+ timestamp: '2025-09-10T16:06:13.562Z'
+}
+ POST /api/graphql 200 in 46ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMyEmployeesV2',
+ timestamp: '2025-09-10T16:06:13.604Z',
+ variables: {}
+}
+🔐 EMPLOYEE DOMAIN AUTH CHECK: { hasUser: false, userId: undefined, organizationId: undefined }
+❌ AUTH FAILED: No user in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMyEmployeesV2',
+ timestamp: '2025-09-10T16:06:13.604Z'
+}
+ POST /api/graphql 200 in 39ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetLogisticsPartners',
+ timestamp: '2025-09-10T16:06:13.615Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetLogisticsPartners',
+ timestamp: '2025-09-10T16:06:13.615Z'
+}
+ POST /api/graphql 200 in 50ms
+ ✓ Compiled / in 342ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZlNWxzY2owMDAweTU2ZWVnOTVyOGxyIiwicGhvbmUiOiI3Nzc3Nzc3Nzc3NyIsImlhdCI6MTc1NzUxOTY5NiwiZXhwIjoxNzYwMTExNjk2fQ.W_r92r_4qh_HKhtKNfLmTHVyjl2E-eGXjTrkMndxkoY&orgId=cmfe5upy30001y56e4av0o4vs 200 in 2710ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZlNWxzY2owMDAweTU2ZWVnOTVyOGxyIiwicGhvbmUiOiI3Nzc3Nzc3Nzc3NyIsImlhdCI6MTc1NzUxOTY5NiwiZXhwIjoxNzYwMTExNjk2fQ.W_r92r_4qh_HKhtKNfLmTHVyjl2E-eGXjTrkMndxkoY&orgId=cmfe5upy30001y56e4av0o4vs 200 in 1523ms
+ GET /api/events?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjbWZlNWxzY2owMDAweTU2ZWVnOTVyOGxyIiwicGhvbmUiOiI3Nzc3Nzc3Nzc3NyIsImlhdCI6MTc1NzUxOTY5NiwiZXhwIjoxNzYwMTExNjk2fQ.W_r92r_4qh_HKhtKNfLmTHVyjl2E-eGXjTrkMndxkoY&orgId=cmfe5upy30001y56e4av0o4vs 200 in 2712ms
+ GET / 200 in 429ms
+ GET /login 200 in 43ms
+ GET /dashboard 200 in 38ms
+ GET /dashboard 200 in 33ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'SendSmsCode',
+ timestamp: '2025-09-10T16:06:19.504Z',
+ variables: { phone: '77777777777' }
+}
+ POST /api/graphql 200 in 65ms
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'VerifySmsCode',
+ timestamp: '2025-09-10T16:06:22.089Z',
+ variables: { phone: '77777777777', code: '1234' }
+}
+ POST /api/graphql 200 in 382ms
+ GET /dashboard 200 in 91ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:06:22.819Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 443ms
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:06:23.318Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetPendingSuppliesCount',
+ timestamp: '2025-09-10T16:06:23.327Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetConversations',
+ timestamp: '2025-09-10T16:06:23.338Z',
+ variables: {}
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetIncomingRequests',
+ timestamp: '2025-09-10T16:06:23.341Z',
+ variables: {}
+}
+ POST /api/graphql 200 in 475ms
+ POST /api/graphql 200 in 575ms
+📥 INCOMING_REQUESTS: {
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationId: 'cmfe5upy30001y56e4av0o4vs',
+ requestsCount: 0
+}
+ POST /api/graphql 200 in 577ms
+📊 PENDING SUPPLIES COUNT: {
+ userId: 'cmfe5lscj0000y56eeg95r8lr',
+ organizationType: 'FULFILLMENT',
+ ourSupplyOrders: 0,
+ sellerSupplyOrders: 0,
+ incomingSupplierOrders: 0,
+ logisticsOrders: 0,
+ totalPending: 0
+}
+ POST /api/graphql 200 in 1055ms
+ GET /dashboard 200 in 218ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:19.187Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:19.188Z'
+}
+ POST /api/graphql 200 in 121ms
+ GET /favicon.ico?favicon.45db1c09.ico 200 in 322ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:19.366Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:19.367Z'
+}
+ POST /api/graphql 200 in 115ms
+ ○ Compiling /_not-found/page ...
+ ✓ Compiled /_not-found/page in 577ms
+ GET /apple-touch-icon-precomposed.png 404 in 665ms
+ GET /apple-touch-icon.png 404 in 52ms
+ GET /dashboard 200 in 101ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:24.108Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:24.109Z'
+}
+ POST /api/graphql 200 in 63ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:24.185Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:24.185Z'
+}
+ POST /api/graphql 200 in 49ms
+ GET / 200 in 101ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:25.542Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:25.543Z'
+}
+ POST /api/graphql 200 in 55ms
+ GET /login 200 in 72ms
+ GET /dashboard 200 in 53ms
+ GET /dashboard 200 in 72ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:25.728Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:25.728Z'
+}
+ POST /api/graphql 200 in 48ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:25.783Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:25.783Z'
+}
+ POST /api/graphql 200 in 37ms
+ ○ Compiling /admin/dashboard ...
+ ✓ Compiled /admin/dashboard in 1158ms
+ GET /admin/dashboard 200 in 1231ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:33.384Z',
+ variables: {}
+}
+🔐 ADMIN TOOLS DOMAIN ADMIN AUTH CHECK: { hasAdmin: false, adminId: undefined }
+❌ ADMIN AUTH FAILED: No admin in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация администратора' ],
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:33.385Z'
+}
+ POST /api/graphql 200 in 65ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:33.410Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:33.410Z'
+}
+ POST /api/graphql 200 in 82ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:33.444Z',
+ variables: {}
+}
+🔐 ADMIN TOOLS DOMAIN ADMIN AUTH CHECK: { hasAdmin: false, adminId: undefined }
+❌ ADMIN AUTH FAILED: No admin in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация администратора' ],
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:33.445Z'
+}
+ POST /api/graphql 200 in 33ms
+ ✓ Compiled /admin in 315ms
+ GET /admin 307 in 383ms
+ GET /admin/dashboard 200 in 66ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:36.398Z',
+ variables: {}
+}
+🔐 ADMIN TOOLS DOMAIN ADMIN AUTH CHECK: { hasAdmin: false, adminId: undefined }
+❌ ADMIN AUTH FAILED: No admin in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация администратора' ],
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:36.399Z'
+}
+ POST /api/graphql 200 in 66ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:36.412Z',
+ variables: {}
+}
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация' ],
+ operationName: 'GetMe',
+ timestamp: '2025-09-10T16:07:36.412Z'
+}
+ POST /api/graphql 200 in 74ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'query',
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:36.440Z',
+ variables: {}
+}
+🔐 ADMIN TOOLS DOMAIN ADMIN AUTH CHECK: { hasAdmin: false, adminId: undefined }
+❌ ADMIN AUTH FAILED: No admin in context
+❌ GraphQL ERROR: {
+ errors: [ 'Требуется авторизация администратора' ],
+ operationName: 'AdminMe',
+ timestamp: '2025-09-10T16:07:36.440Z'
+}
+ POST /api/graphql 200 in 25ms
+GraphQL Context - Invalid token: Error [TokenExpiredError]: jwt expired
+ at context (src/app/api/graphql/route.ts:73:26)
+ at ApolloServer.executeHTTPGraphQLRequest (../../src/ApolloServer.ts:1083:29)
+ 71 | }
+ 72 |
+> 73 | const decoded = jwt.verify(token, jwtSecret) as {
+ | ^
+ 74 | userId?: string
+ 75 | phone?: string
+ 76 | adminId?: string {
+ expiredAt: 2025-08-26T10:21:54.000Z,
+ constructor: [Function: TokenExpiredError]
+}
+🌐 GraphQL REQUEST: {
+ operationType: 'mutation',
+ operationName: 'AdminLogin',
+ timestamp: '2025-09-10T16:07:39.283Z',
+ variables: { username: 'admin', password: 'admin123' }
+}
+🔍 ADMIN_LOGIN DOMAIN MUTATION STARTED: { username: 'admin', hasPassword: true }
+❌ ADMIN_LOGIN DOMAIN ERROR: Error [PrismaClientValidationError]:
+Invalid `__TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["prisma"].admin.update()` invocation in
+/Users/veronikasmirnova/Desktop/Projects/sfera/.next/server/chunks/[root-of-the-server]__5933e5dd._.js:11772:158
+
+ 11769 };
+ 11770 }
+ 11771 // Обновление последнего входа
+→ 11772 await __TURBOPACK__imported__module__$5b$project$5d2f$src$2f$lib$2f$prisma$2e$ts__$5b$app$2d$route$5d$__$28$ecmascript$29$__["prisma"].admin.update({
+ where: {
+ id: "cmfbgb20b0000y5ley71phryx"
+ },
+ data: {
+ lastLoginAt: new Date("2025-09-10T16:07:39.870Z"),
+ ~~~~~~~~~~~
+ ? id?: String | StringFieldUpdateOperationsInput,
+ ? username?: String | StringFieldUpdateOperationsInput,
+ ? password?: String | StringFieldUpdateOperationsInput,
+ ? email?: String | NullableStringFieldUpdateOperationsInput | Null,
+ ? isActive?: Boolean | BoolFieldUpdateOperationsInput,
+ ? lastLogin?: DateTime | NullableDateTimeFieldUpdateOperationsInput | Null,
+ ? createdAt?: DateTime | DateTimeFieldUpdateOperationsInput,
+ ? updatedAt?: DateTime | DateTimeFieldUpdateOperationsInput
+ }
+ })
+
+Unknown argument `lastLoginAt`. Did you mean `lastLogin`? Available options are marked with ?.
+ at