#!/usr/bin/env python3 """ Детальная проверка документов в черновике """ import asyncio import asyncpg import json POSTGRES_HOST = "147.45.189.234" POSTGRES_PORT = 5432 POSTGRES_DB = "default_db" POSTGRES_USER = "gen_user" POSTGRES_PASSWORD = "2~~9_^kVsU?2\\S" CLAIM_ID = "bddb6815-8e17-4d54-a721-5e94382942c7" async def check_documents_detailed(): conn = await asyncpg.connect( host=POSTGRES_HOST, port=POSTGRES_PORT, database=POSTGRES_DB, user=POSTGRES_USER, password=POSTGRES_PASSWORD ) try: row = await conn.fetchrow(""" SELECT id, status_code, payload, updated_at FROM clpr_claims WHERE id::text = $1 OR payload->>'claim_id' = $1 ORDER BY updated_at DESC LIMIT 1 """, CLAIM_ID) if not row: print(f"❌ Черновик {CLAIM_ID} не найден!") return payload = row['payload'] if isinstance(row['payload'], dict) else json.loads(row['payload']) print(f"📋 Статус: {row['status_code']}") print(f"📋 Обновлён: {row['updated_at']}") print(f"\n📋 documents_meta ({len(payload.get('documents_meta', []))} шт.):") for i, doc in enumerate(payload.get('documents_meta', [])): print(f" {i+1}. {doc.get('field_label', 'N/A')}") print(f" file_id: {doc.get('file_id', 'N/A')[:80]}...") print(f" field_name: {doc.get('field_name', 'N/A')}") print(f"\n📋 documents_uploaded ({len(payload.get('documents_uploaded', []))} шт.):") for i, doc in enumerate(payload.get('documents_uploaded', [])): print(f" {i+1}. Тип: {doc.get('type', 'N/A')} / {doc.get('id', 'N/A')}") print(f" file_id: {doc.get('file_id', 'N/A')[:80]}...") print(f" original_file_name: {doc.get('original_file_name', 'N/A')}") print(f"\n📋 documents_required ({len(payload.get('documents_required', []))} шт.):") for i, doc in enumerate(payload.get('documents_required', [])): print(f" {i+1}. {doc.get('name', 'N/A')} (id: {doc.get('id', 'N/A')})") print(f"\n📋 current_doc_index: {payload.get('current_doc_index', 'N/A')}") # Проверяем уникальность file_id print(f"\n🔍 Проверка уникальности file_id:") documents_meta = payload.get('documents_meta', []) file_ids_meta = [doc.get('file_id') for doc in documents_meta if doc.get('file_id')] unique_file_ids_meta = list(set(file_ids_meta)) print(f" documents_meta: всего {len(file_ids_meta)}, уникальных {len(unique_file_ids_meta)}") if len(file_ids_meta) != len(unique_file_ids_meta): print(f" ⚠️ ЕСТЬ ДУБЛИКАТЫ!") from collections import Counter duplicates = [fid for fid, count in Counter(file_ids_meta).items() if count > 1] for dup in duplicates: print(f" - {dup[:80]}... (встречается {Counter(file_ids_meta)[dup]} раз)") documents_uploaded = payload.get('documents_uploaded', []) file_ids_uploaded = [doc.get('file_id') for doc in documents_uploaded if doc.get('file_id')] unique_file_ids_uploaded = list(set(file_ids_uploaded)) print(f" documents_uploaded: всего {len(file_ids_uploaded)}, уникальных {len(unique_file_ids_uploaded)}") if len(file_ids_uploaded) != len(unique_file_ids_uploaded): print(f" ⚠️ ЕСТЬ ДУБЛИКАТЫ!") finally: await conn.close() if __name__ == "__main__": asyncio.run(check_documents_detailed())