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,