From 6a783deba1aec1eebf1db7517229c7685f1c1344 Mon Sep 17 00:00:00 2001 From: Fedor Date: Thu, 4 Dec 2025 10:15:41 +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=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20fallback=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D1=8F=D0=BC=D0=BE=D0=B9=20=D0=BF=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=20=D0=BF=D0=BE=20payload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Теперь поиск работает двумя способами: 1. Через unified_id (если есть запись в clpr_user_accounts) 2. Напрямую по телефону в payload (если unified_id не установлен) Исправляет проблему, когда заявления не находятся для контакта 71234543212 --- ticket_form/backend/app/api/claims.py | 27 +++++++++++++++++---------- workflow2_lock | 1 + 2 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 workflow2_lock diff --git a/ticket_form/backend/app/api/claims.py b/ticket_form/backend/app/api/claims.py index f246d2ba..19383055 100644 --- a/ticket_form/backend/app/api/claims.py +++ b/ticket_form/backend/app/api/claims.py @@ -210,9 +210,10 @@ async def list_drafts( params = [unified_id] logger.info(f"🔍 Searching by unified_id: {unified_id}") elif phone: - # Fallback: ищем через clpr_user_accounts и clpr_users + # Fallback: ищем через clpr_user_accounts и clpr_users, ИЛИ напрямую по телефону в payload + # Это нужно, если unified_id не был установлен при создании заявления query = """ - SELECT + SELECT DISTINCT c.id, c.payload->>'claim_id' as claim_id, c.session_token, @@ -222,14 +223,20 @@ async def list_drafts( c.created_at, c.updated_at FROM clpr_claims c - WHERE c.unified_id = ( - SELECT u.unified_id - 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 - LIMIT 1 - ) + WHERE c.channel = 'web_form' + AND ( + -- Вариант 1: Поиск через unified_id (если есть запись в clpr_user_accounts) + c.unified_id = ( + SELECT u.unified_id + 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 + LIMIT 1 + ) + -- Вариант 2: Прямой поиск по телефону в payload (если unified_id не установлен) + OR (c.unified_id IS NULL AND c.payload->>'phone' = $1) + ) 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 diff --git a/workflow2_lock b/workflow2_lock new file mode 100644 index 00000000..a93f059a --- /dev/null +++ b/workflow2_lock @@ -0,0 +1 @@ +locked \ No newline at end of file