fix: улучшен поиск заявлений по телефону - поддержка разных форматов
- Поиск теперь работает по разным форматам телефона: * 71234543212 (оригинальный) * +71234543212 (с плюсом) * 81234543212 (с 8 вместо 7) - Убрано условие unified_id IS NULL - теперь ищет в любом случае - Поиск в clpr_user_accounts и напрямую в payload->>'phone' Исправляет проблему поиска заявлений для контакта 71234543212
This commit is contained in:
@@ -211,7 +211,10 @@ async def list_drafts(
|
|||||||
logger.info(f"🔍 Searching by unified_id: {unified_id}")
|
logger.info(f"🔍 Searching by unified_id: {unified_id}")
|
||||||
elif phone:
|
elif phone:
|
||||||
# Fallback: ищем через clpr_user_accounts и clpr_users, ИЛИ напрямую по телефону в payload
|
# Fallback: ищем через clpr_user_accounts и clpr_users, ИЛИ напрямую по телефону в payload
|
||||||
# Это нужно, если unified_id не был установлен при создании заявления
|
# Поддерживаем разные форматы телефона: 71234543212, +71234543212, 81234543212
|
||||||
|
# Нормализуем телефон для поиска (убираем + и заменяем 8 на 7)
|
||||||
|
normalized_phone = phone.lstrip('+').replace('8', '7', 1) if phone.startswith('8') else phone.lstrip('+')
|
||||||
|
|
||||||
query = """
|
query = """
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
c.id,
|
c.id,
|
||||||
@@ -231,19 +234,27 @@ async def list_drafts(
|
|||||||
FROM clpr_user_accounts ua
|
FROM clpr_user_accounts ua
|
||||||
JOIN clpr_users u ON u.id = ua.user_id
|
JOIN clpr_users u ON u.id = ua.user_id
|
||||||
WHERE ua.channel = 'web_form'
|
WHERE ua.channel = 'web_form'
|
||||||
AND ua.channel_user_id = $1
|
AND (ua.channel_user_id = $1 OR ua.channel_user_id = $2 OR ua.channel_user_id = $3)
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
)
|
)
|
||||||
-- Вариант 2: Прямой поиск по телефону в payload (если unified_id не установлен)
|
-- Вариант 2: Прямой поиск по телефону в payload (в разных форматах)
|
||||||
OR (c.unified_id IS NULL AND c.payload->>'phone' = $1)
|
OR c.payload->>'phone' = $1
|
||||||
|
OR c.payload->>'phone' = $2
|
||||||
|
OR c.payload->>'phone' = $3
|
||||||
)
|
)
|
||||||
AND (c.status_code != 'approved' OR c.status_code IS NULL)
|
AND (c.status_code != 'approved' OR c.status_code IS NULL)
|
||||||
AND (c.is_confirmed IS NULL OR c.is_confirmed = false)
|
AND (c.is_confirmed IS NULL OR c.is_confirmed = false)
|
||||||
ORDER BY c.updated_at DESC
|
ORDER BY c.updated_at DESC
|
||||||
LIMIT 20
|
LIMIT 20
|
||||||
"""
|
"""
|
||||||
params = [phone]
|
# Подготавливаем варианты телефона для поиска
|
||||||
logger.info(f"🔍 Searching by phone (fallback): {phone}")
|
phone_variants = [
|
||||||
|
phone, # Оригинальный формат
|
||||||
|
f"+{phone}", # С плюсом
|
||||||
|
phone.replace('7', '8', 1) if phone.startswith('7') else phone # С 8 вместо 7
|
||||||
|
]
|
||||||
|
params = phone_variants
|
||||||
|
logger.info(f"🔍 Searching by phone (fallback): {phone}, variants: {phone_variants}")
|
||||||
elif session_id:
|
elif session_id:
|
||||||
# Fallback: поиск по session_token
|
# Fallback: поиск по session_token
|
||||||
query = """
|
query = """
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
locked
|
|
||||||
Reference in New Issue
Block a user