matching / debug_properties.py
Calcifer0323's picture
Fix: Update to RoSBERTa model (1024 dims), remove half precision, increase timeout
93cd57d
"""
Скрипт для детальной проверки состояния properties в БД
"""
import psycopg2
DB_CONFIG = {
'host': 'dpg-d5ht8vi4d50c739akh2g-a.virginia-postgres.render.com',
'port': 5432,
'database': 'lead_exchange_bk',
'user': 'lead_exchange_bk_user',
'password': '8m2gtTRBW0iAr7nY2Aadzz0VcZBEVKYM'
}
try:
conn = psycopg2.connect(**DB_CONFIG)
cursor = conn.cursor()
print("=" * 70)
print("DETAILED PROPERTIES CHECK")
print("=" * 70)
# Проверяем общее количество
cursor.execute("SELECT COUNT(*) FROM properties")
total = cursor.fetchone()[0]
print(f"\n📊 Total properties: {total}")
# Проверяем по owner_user_id
cursor.execute("""
SELECT owner_user_id, COUNT(*)
FROM properties
GROUP BY owner_user_id
ORDER BY COUNT(*) DESC
""")
print(f"\n👥 Properties by owner:")
for owner_id, count in cursor.fetchall():
print(f" {owner_id}: {count} properties")
# Проверяем, существуют ли эти пользователи
print(f"\n🔍 Checking if owners exist in users table:")
cursor.execute("""
SELECT p.owner_user_id, u.email, u.role, COUNT(p.property_id) as prop_count
FROM properties p
LEFT JOIN users u ON p.owner_user_id = u.user_id
GROUP BY p.owner_user_id, u.email, u.role
""")
for owner_id, email, role, count in cursor.fetchall():
if email:
print(f" ✅ {owner_id[:8]}... → {email} ({role}) - {count} props")
else:
print(f" ❌ {owner_id[:8]}... → USER NOT FOUND! - {count} props (will be deleted on cascade)")
# Проверяем ограничения (constraints)
print(f"\n🔗 Foreign key constraints on properties:")
cursor.execute("""
SELECT
tc.constraint_name,
tc.constraint_type,
kcu.column_name,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name,
rc.delete_rule
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
LEFT JOIN information_schema.referential_constraints AS rc
ON tc.constraint_name = rc.constraint_name
WHERE tc.table_name = 'properties' AND tc.constraint_type = 'FOREIGN KEY'
""")
for constraint_name, constraint_type, column, foreign_table, foreign_column, delete_rule in cursor.fetchall():
print(f" {column}{foreign_table}.{foreign_column}")
print(f" Delete rule: {delete_rule}")
# Показываем примеры объектов
print(f"\n📄 Sample properties (first 5):")
cursor.execute("""
SELECT property_id, title, owner_user_id, created_at
FROM properties
ORDER BY created_at DESC
LIMIT 5
""")
for prop_id, title, owner_id, created in cursor.fetchall():
print(f" - {title[:50]}...")
print(f" ID: {prop_id}")
print(f" Owner: {owner_id}")
print(f" Created: {created}")
# Проверяем пользователя f4e8f58b...
print(f"\n🔍 Checking specific admin user (f4e8f58b-94f4-4e0f-bd85-1b06b8a3f242):")
cursor.execute("""
SELECT user_id, email, role, first_name, last_name
FROM users
WHERE user_id = 'f4e8f58b-94f4-4e0f-bd85-1b06b8a3f242'
""")
result = cursor.fetchone()
if result:
print(f" ✅ User exists: {result[1]} ({result[2]}) - {result[3]} {result[4]}")
else:
print(f" ❌ User NOT FOUND! This is why properties are being deleted!")
print(f" ℹ️ Properties reference a user that doesn't exist")
print("\n" + "=" * 70)
cursor.close()
conn.close()
except Exception as e:
print(f"❌ Error: {e}")
import traceback
traceback.print_exc()