From e0097a164d404092d9590bc3d42f1bd29d741f13 Mon Sep 17 00:00:00 2001 From: Fedor Date: Thu, 4 Dec 2025 10:18:04 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=20=D0=B7=D0=B0=D1=8F?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=BF=D0=BE=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D0=B5=D1=84=D0=BE=D0=BD=D1=83=20-=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B0=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Поиск теперь работает по разным форматам телефона: * 71234543212 (оригинальный) * +71234543212 (с плюсом) * 81234543212 (с 8 вместо 7) - Убрано условие unified_id IS NULL - теперь ищет в любом случае - Поиск в clpr_user_accounts и напрямую в payload->>'phone' Исправляет проблему поиска заявлений для контакта 71234543212 --- ticket_form/backend/app/api/claims.py | 23 +++++++++++++++++------ workflow2_lock | 1 - 2 files changed, 17 insertions(+), 7 deletions(-) delete mode 100644 workflow2_lock diff --git a/ticket_form/backend/app/api/claims.py b/ticket_form/backend/app/api/claims.py index 19383055..1eff6d95 100644 --- a/ticket_form/backend/app/api/claims.py +++ b/ticket_form/backend/app/api/claims.py @@ -211,7 +211,10 @@ async def list_drafts( logger.info(f"🔍 Searching by unified_id: {unified_id}") elif phone: # 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 = """ SELECT DISTINCT c.id, @@ -231,19 +234,27 @@ async def list_drafts( FROM clpr_user_accounts ua JOIN clpr_users u ON u.id = ua.user_id 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 ) - -- Вариант 2: Прямой поиск по телефону в payload (если unified_id не установлен) - OR (c.unified_id IS NULL AND c.payload->>'phone' = $1) + -- Вариант 2: Прямой поиск по телефону в payload (в разных форматах) + 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.is_confirmed IS NULL OR c.is_confirmed = false) ORDER BY c.updated_at DESC 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: # Fallback: поиск по session_token query = """ diff --git a/workflow2_lock b/workflow2_lock deleted file mode 100644 index a93f059a..00000000 --- a/workflow2_lock +++ /dev/null @@ -1 +0,0 @@ -locked \ No newline at end of file