diff --git a/backend/services/UniversalGuestService.js b/backend/services/UniversalGuestService.js index 52c2397..586323d 100644 --- a/backend/services/UniversalGuestService.js +++ b/backend/services/UniversalGuestService.js @@ -716,11 +716,18 @@ class UniversalGuestService { // 5. Переносим согласия гостя на пользователя, если они есть // Согласия могут быть связаны с гостевой сессией через wallet_address = "guest_${guestId}" + // Только для web-гостей (формат: web:guest_xxx) try { const [channel, guestId] = identifier.split(':'); + // Мигрируем согласия только для web-гостей + if (channel !== 'web' || !guestId?.startsWith('guest_')) { + logger.info(`[UniversalGuestService] Пропуск миграции согласий для ${identifier} (не web-гость)`); + return { migrated, skipped }; + } + // Ищем согласия по гостевому идентификатору в формате "guest_${guestId}" - const guestWalletAddress = `guest_${guestId}`; + const guestWalletAddress = guestId; // Уже в формате "guest_xxx" const { rows: guestConsents } = await db.getQuery()(` SELECT id, consent_type, document_id, document_title, status, signed_at, ip_address, user_agent, channel as consent_channel diff --git a/backend/services/emailBot.js b/backend/services/emailBot.js index 81a85f7..327ec8e 100644 --- a/backend/services/emailBot.js +++ b/backend/services/emailBot.js @@ -497,7 +497,7 @@ class EmailBot { return { channel: 'email', - identifier: fromEmail, + identifier: `email:${fromEmail}`, // Формируем identifier с префиксом provider content: text, contentData: contentData, attachments: mediaFiles, // Обратная совместимость diff --git a/backend/services/telegramBot.js b/backend/services/telegramBot.js index 7b62d20..316a00d 100644 --- a/backend/services/telegramBot.js +++ b/backend/services/telegramBot.js @@ -313,7 +313,7 @@ class TelegramBot { return { channel: 'telegram', - identifier: telegramId, + identifier: `telegram:${telegramId}`, // Формируем identifier с префиксом provider content: content, contentData: contentData, attachments: mediaFiles, // Обратная совместимость diff --git a/backend/services/unifiedMessageProcessor.js b/backend/services/unifiedMessageProcessor.js index 74e767a..f6932c6 100644 --- a/backend/services/unifiedMessageProcessor.js +++ b/backend/services/unifiedMessageProcessor.js @@ -115,6 +115,18 @@ async function processMessage(messageData) { // 1. Разбираем идентификатор const [provider, providerId] = identifier.split(':'); + // Проверяем формат identifier (должен быть provider:providerId) + if (!providerId) { + logger.warn(`[UnifiedMessageProcessor] Неверный формат identifier (нет префикса): ${identifier}, обрабатываем как гостя`); + return await universalGuestService.processMessage({ + identifier, + content, + channel, + metadata, + ...messageData + }); + } + // 2. Для telegram/email: автоматически создаем пользователя, если его нет if ((provider === 'telegram' || provider === 'email') && providerId) { let user = await identityService.findUserByIdentity(provider, providerId); @@ -509,6 +521,11 @@ async function checkIfGuest(identifier) { // Разбираем идентификатор const [provider, providerId] = identifier.split(':'); + // Если нет providerId (старый формат без префикса) - считаем гостем + if (!providerId) { + return true; + } + // Проверяем что это не web:guest_* if (provider === 'web' && providerId.startsWith('guest_')) { return true; // Это web гость