fix: улучшен поиск заявлений по телефону - добавлен fallback на прямой поиск по payload

- Теперь поиск работает двумя способами:
  1. Через unified_id (если есть запись в clpr_user_accounts)
  2. Напрямую по телефону в payload (если unified_id не установлен)

Исправляет проблему, когда заявления не находятся для контакта 71234543212
This commit is contained in:
Fedor
2025-12-04 10:15:41 +03:00
parent 920eb53660
commit 6a783deba1
2 changed files with 18 additions and 10 deletions

View File

@@ -210,9 +210,10 @@ async def list_drafts(
params = [unified_id] params = [unified_id]
logger.info(f"🔍 Searching by unified_id: {unified_id}") logger.info(f"🔍 Searching by unified_id: {unified_id}")
elif phone: elif phone:
# Fallback: ищем через clpr_user_accounts и clpr_users # Fallback: ищем через clpr_user_accounts и clpr_users, ИЛИ напрямую по телефону в payload
# Это нужно, если unified_id не был установлен при создании заявления
query = """ query = """
SELECT SELECT DISTINCT
c.id, c.id,
c.payload->>'claim_id' as claim_id, c.payload->>'claim_id' as claim_id,
c.session_token, c.session_token,
@@ -222,14 +223,20 @@ async def list_drafts(
c.created_at, c.created_at,
c.updated_at c.updated_at
FROM clpr_claims c FROM clpr_claims c
WHERE c.unified_id = ( WHERE c.channel = 'web_form'
SELECT u.unified_id AND (
FROM clpr_user_accounts ua -- Вариант 1: Поиск через unified_id (если есть запись в clpr_user_accounts)
JOIN clpr_users u ON u.id = ua.user_id c.unified_id = (
WHERE ua.channel = 'web_form' SELECT u.unified_id
AND ua.channel_user_id = $1 FROM clpr_user_accounts ua
LIMIT 1 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.status_code != 'approved' OR c.status_code IS NULL)
AND (c.is_confirmed IS NULL OR c.is_confirmed = false) AND (c.is_confirmed IS NULL OR c.is_confirmed = false)
ORDER BY c.updated_at DESC ORDER BY c.updated_at DESC

1
workflow2_lock Normal file
View File

@@ -0,0 +1 @@
locked