
## 🎯 Основные изменения: ### ✅ Обновление документации интеграций - Расширена документация DaData API integration - Добавлены результаты тестирования и примеры использования - Обновлена информация о статусе интеграций ### ✅ Улучшения UI компонентов - Обновлены market компоненты для корректной работы с GraphQL - Исправлены параметры передачи данных в counterparties/logistics/sellers/suppliers - Улучшен registration flow и confirmation step - Обновлен dashboard home с новой функциональностью ### ✅ Улучшения GraphQL резолверов - Обновлен seller-consumables.ts с улучшенной обработкой данных - Исправлены методы создания и обновления поставок - Добавлена лучшая обработка ошибок и валидация ### ✅ Обновление сервисов интеграций - Улучшен wildberries-service.ts с новыми методами API - Добавлена лучшая обработка ответов и ошибок - Обновлены методы работы с маркетплейсами ## 🧪 Результат: - ✅ UI компоненты работают стабильнее - ✅ Документация актуализирована - ✅ Интеграции функционируют корректно - ✅ GraphQL запросы оптимизированы 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
82 lines
3.2 KiB
TypeScript
82 lines
3.2 KiB
TypeScript
'use client'
|
||
|
||
import { redirect, useSearchParams } from 'next/navigation'
|
||
import { Suspense } from 'react'
|
||
|
||
import { AuthFlow } from '@/components/auth/auth-flow'
|
||
import { AuthGuard } from '@/components/auth-guard'
|
||
|
||
function RegisterContent() {
|
||
console.log('🎯 RegisterContent - компонент рендерится')
|
||
|
||
const searchParams = useSearchParams()
|
||
const partnerCode = searchParams.get('partner')
|
||
const referralCode = searchParams.get('ref')
|
||
|
||
console.log('🔍 RegisterContent - URL параметры:', {
|
||
partnerCode,
|
||
referralCode,
|
||
searchParams: Object.fromEntries(searchParams.entries()),
|
||
allParams: searchParams.toString(),
|
||
currentURL: typeof window !== 'undefined' ? window.location.href : 'server',
|
||
})
|
||
|
||
// Валидация: нельзя использовать оба параметра одновременно
|
||
if (partnerCode && referralCode) {
|
||
console.error('Попытка использовать и ref и partner одновременно')
|
||
redirect('/register') // Редирект на чистую регистрацию
|
||
return null
|
||
}
|
||
|
||
// Валидация формата кода (поддерживаем партнерские и реферальные коды)
|
||
const isValidCode = (code: string | null): boolean => {
|
||
if (!code) return true // null/undefined разрешены
|
||
|
||
// Партнерские коды: FF_INN_TIMESTAMP или SL_PHONE_TIMESTAMP
|
||
if (code.match(/^[A-Z]{2}_\d+_\d+$/)) return true
|
||
|
||
// Реферальные коды: 10 символов из разрешенного набора
|
||
if (code.match(/^[ABCDEFGHJKLMNPQRSTUVWXYZ23456789]{10}$/)) return true
|
||
|
||
return false
|
||
}
|
||
|
||
if (referralCode && !isValidCode(referralCode)) {
|
||
console.error(`Недействительный реферальный код: ${referralCode}`)
|
||
redirect('/register')
|
||
return null
|
||
}
|
||
|
||
if (partnerCode && !isValidCode(partnerCode)) {
|
||
console.error(`Недействительный партнерский код: ${partnerCode}`)
|
||
redirect('/register')
|
||
return null
|
||
}
|
||
|
||
console.log('🚀 RegisterContent - Передача в AuthFlow:', { partnerCode, referralCode })
|
||
|
||
// Если есть реферальный или партнерский код, всегда показываем AuthFlow
|
||
// даже для авторизованных пользователей (для создания дополнительных организаций)
|
||
if (partnerCode || referralCode) {
|
||
console.log('🎯 RegisterContent - Принудительный показ AuthFlow из-за наличия кода')
|
||
return <AuthFlow partnerCode={partnerCode} referralCode={referralCode} />
|
||
}
|
||
|
||
return (
|
||
<AuthGuard fallback={<AuthFlow partnerCode={partnerCode} referralCode={referralCode} />}>
|
||
{/* Если пользователь авторизован, перенаправляем в дашборд */}
|
||
{redirect('/dashboard')}
|
||
</AuthGuard>
|
||
)
|
||
}
|
||
|
||
export default function RegisterPage() {
|
||
console.log('🚀 RegisterPage - компонент рендерится')
|
||
|
||
return (
|
||
<Suspense fallback={<div>Загрузка...</div>}>
|
||
<RegisterContent />
|
||
</Suspense>
|
||
)
|
||
}
|