Files
sfera-new/src/app/register/page.tsx
Veronika Smirnova 8e43df4d1d feat: улучшения UI компонентов, документации и сервисов интеграций
## 🎯 Основные изменения:

###  Обновление документации интеграций
- Расширена документация 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>
2025-09-12 15:50:23 +03:00

82 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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>
)
}