debug: добавить скрипты отладки и бэкапы для диагностики проблем

- api_keys_backup_1758196936364.json - резервная копия API ключей
- check-active-key.js - проверка активного API ключа
- check-all-keys.js - проверка всех API ключей в системе
- check-new-seller.js - проверка нового селлера
- test-api-key-save.js - тестирование сохранения API ключей
- test-graphql-stats.js - тестирование GraphQL статистики
- test-resolver-direct.js - прямое тестирование резолверов
- test-sidebar.html - тестирование сайдбара
- test-statistics-direct.js - прямое тестирование статистики

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Veronika Smirnova
2025-09-18 21:32:23 +03:00
parent b6935428ab
commit d19530a985
9 changed files with 853 additions and 0 deletions

117
test-api-key-save.js Normal file
View File

@ -0,0 +1,117 @@
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function testApiKeySave() {
try {
console.log('🔍 ТЕСТ СОХРАНЕНИЯ API КЛЮЧА')
// Найдем организацию Rennel
const org = await prisma.organization.findFirst({
where: { name: 'Rennel', type: 'SELLER' },
include: {
apiKeys: {
where: { marketplace: 'WILDBERRIES' },
orderBy: { createdAt: 'desc' },
},
},
})
if (!org) {
console.log('❌ Организация Rennel не найдена')
return
}
console.log('\n📊 СОСТОЯНИЕ ДО ТЕСТА:')
console.log('- Организация:', org.name)
console.log('- Всего WB ключей:', org.apiKeys.length)
if (org.apiKeys.length > 0) {
const currentKey = org.apiKeys[0]
console.log('- Текущий ключ ID:', currentKey.id)
console.log('- Длина:', currentKey.apiKey?.length)
console.log('- Тип:', currentKey.apiKey?.startsWith('eyJ') ? 'JWT' : 'Тестовый')
}
// Тестовый валидный JWT ключ (более короткий для теста)
const testJwtKey =
'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FjY291bnQud2lsZGJlcnJpZXMucnUiLCJzdWIiOjEyMzQ1Njc4OTAsImV4cCI6MTcyNjY3MjgwMCwidXNlclR5cGUiOiJzZWxsZXIiLCJzY29wZSI6WyJhZHZlcnRpc2luZyIsInN0YXRpc3RpY3MiLCJvcmRlcnMiXX0.test_signature_here'
console.log('\n🔄 ИМИТАЦИЯ ОБНОВЛЕНИЯ КЛЮЧА...')
// Имитируем обновление через API (как делает мутация)
const existingKey = await prisma.apiKey.findUnique({
where: {
organizationId_marketplace: {
organizationId: org.id,
marketplace: 'WILDBERRIES',
},
},
})
if (existingKey) {
console.log('- Найден существующий ключ:', existingKey.id)
// Обновляем как в мутации
const updated = await prisma.apiKey.update({
where: {
organizationId_marketplace: {
organizationId: org.id,
marketplace: 'WILDBERRIES',
},
},
data: {
apiKey: testJwtKey,
isActive: true,
validationData: { validatedAt: new Date().toISOString() },
},
})
console.log('✅ Ключ обновлен:', updated.id)
console.log('- Новая длина:', updated.apiKey?.length)
console.log('- Новый тип:', updated.apiKey?.startsWith('eyJ') ? 'JWT' : 'Тестовый')
} else {
console.log('- Существующий ключ не найден, создаем новый')
const created = await prisma.apiKey.create({
data: {
organizationId: org.id,
marketplace: 'WILDBERRIES',
apiKey: testJwtKey,
isActive: true,
validationData: { validatedAt: new Date().toISOString() },
},
})
console.log('✅ Новый ключ создан:', created.id)
}
// Проверим результат
console.log('\n📊 СОСТОЯНИЕ ПОСЛЕ ТЕСТА:')
const updatedOrg = await prisma.organization.findFirst({
where: { name: 'Rennel', type: 'SELLER' },
include: {
apiKeys: {
where: { marketplace: 'WILDBERRIES' },
orderBy: { createdAt: 'desc' },
},
},
})
if (updatedOrg && updatedOrg.apiKeys.length > 0) {
const newKey = updatedOrg.apiKeys[0]
console.log('- Ключ ID:', newKey.id)
console.log('- Длина:', newKey.apiKey?.length)
console.log('- Тип:', newKey.apiKey?.startsWith('eyJ') ? 'JWT' : 'Тестовый')
console.log('- Активен:', newKey.isActive)
console.log('- Обновлен:', newKey.updatedAt.toISOString())
}
console.log('\n🎯 ТЕСТ ЗАВЕРШЕН')
} catch (error) {
console.error('❌ ОШИБКА ТЕСТА:', error)
} finally {
await prisma.$disconnect()
}
}
testApiKeySave()