diff --git a/src/services/leadService.js b/src/services/leadService.js index 4f63896..5beee6b 100644 --- a/src/services/leadService.js +++ b/src/services/leadService.js @@ -47,7 +47,7 @@ export async function getOrCreateLead({ telegramId, username, name }) { } const result = await db.runAsync( - `INSERT INTO leads (telegram_id, telegram, name, status, verification, custom_fields, created_at, updated_at) + `INSERT OR IGNORE INTO leads (telegram_id, telegram, name, status, verification, custom_fields, created_at, updated_at) VALUES (?, ?, ?, 'new', 'pending', '{}', datetime('now'), datetime('now'))`, [ tid, @@ -55,6 +55,13 @@ export async function getOrCreateLead({ telegramId, username, name }) { name || null, ] ); + if (result.changes === 0) { + // Конфликт: лид создан параллельным запросом — перечитываем + const row = await db.getAsync('SELECT id FROM leads WHERE telegram_id = ?', [tid]); + if (row) { + return { id: row.id, isNew: false }; + } + } logger.info({ telegramId: tid, leadId: result.lastInsertRowid }, 'Lead created from bot interaction'); return { id: Number(result.lastInsertRowid), isNew: true }; } catch (err) {