From 37472d612ab6eaa1bf94f48000ccf305b4a1c56b Mon Sep 17 00:00:00 2001 From: Fedor Date: Thu, 4 Dec 2025 10:23:02 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=B4=D0=B8=D0=B0=D0=B3=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B8=D0=BA=D0=B0=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B2=20debug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлены test_count_approved и test_count_confirmed для диагностики - Показывает, сколько заявлений со статусом approved и is_confirmed = true - Помогает понять, почему заявления не возвращаются в списке --- ticket_form/backend/app/api/claims.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/ticket_form/backend/app/api/claims.py b/ticket_form/backend/app/api/claims.py index 1eff6d95..dd98e006 100644 --- a/ticket_form/backend/app/api/claims.py +++ b/ticket_form/backend/app/api/claims.py @@ -202,8 +202,10 @@ async def list_drafts( c.updated_at FROM clpr_claims c WHERE c.unified_id = $1 - AND (c.status_code != 'approved' OR c.status_code IS NULL) + -- Исключаем только подтверждённые заявления (is_confirmed = true) + -- Статус 'approved' тоже исключаем, но можно показывать другие статусы AND (c.is_confirmed IS NULL OR c.is_confirmed = false) + AND (c.status_code != 'approved' OR c.status_code IS NULL) ORDER BY c.updated_at DESC LIMIT 20 """ @@ -212,9 +214,6 @@ async def list_drafts( elif phone: # Fallback: ищем через clpr_user_accounts и clpr_users, ИЛИ напрямую по телефону в payload # Поддерживаем разные форматы телефона: 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, @@ -283,9 +282,22 @@ async def list_drafts( # Простой тест: проверяем, что unified_id вообще есть в базе test_count = 0 test_count_null = 0 + test_count_approved = 0 + test_count_confirmed = 0 if unified_id: try: + # Все заявления с этим unified_id test_count = await db.fetch_val("SELECT COUNT(*) FROM clpr_claims WHERE unified_id = $1", unified_id) + # Заявления со статусом approved + test_count_approved = await db.fetch_val(""" + SELECT COUNT(*) FROM clpr_claims + WHERE unified_id = $1 AND status_code = 'approved' + """, unified_id) + # Заявления с is_confirmed = true + test_count_confirmed = await db.fetch_val(""" + SELECT COUNT(*) FROM clpr_claims + WHERE unified_id = $1 AND is_confirmed = true + """, unified_id) # Также проверяем, сколько записей с NULL unified_id для этого пользователя (через phone) if phone: test_count_null = await db.fetch_val(""" @@ -294,7 +306,7 @@ async def list_drafts( AND c.channel = 'web_form' AND c.payload->>'phone' = $1 """, phone) - logger.info(f"🔍 Test COUNT: unified_id={unified_id} → {test_count} records") + logger.info(f"🔍 Test COUNT: unified_id={unified_id} → {test_count} total, {test_count_approved} approved, {test_count_confirmed} confirmed") if test_count_null > 0: logger.warning(f"⚠️ Found {test_count_null} records with NULL unified_id for phone={phone}") except Exception as e: @@ -313,6 +325,8 @@ async def list_drafts( debug_info = { "unified_id": unified_id, "test_count": test_count, + "test_count_approved": test_count_approved if unified_id else 0, + "test_count_confirmed": test_count_confirmed if unified_id else 0, "test_count_null": test_count_null, "rows_found": len(rows), "query": query[:200] if len(query) > 200 else query,