feat: добавлена диагностика статусов заявлений в debug

- Добавлены test_count_approved и test_count_confirmed для диагностики
- Показывает, сколько заявлений со статусом approved и is_confirmed = true
- Помогает понять, почему заявления не возвращаются в списке
This commit is contained in:
Fedor
2025-12-04 10:23:02 +03:00
parent e0097a164d
commit 37472d612a

View File

@@ -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,