91 lines
3.7 KiB
Python
91 lines
3.7 KiB
Python
import asyncio
|
||
import os
|
||
from sqlalchemy import text, select
|
||
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
||
from sqlalchemy.orm import sessionmaker
|
||
|
||
# Importáljuk a rendszermodulokat az ellenőrzéshez
|
||
try:
|
||
from app.core.config import settings
|
||
from app.core.i18n import t
|
||
from app.models import SystemParameter
|
||
except ImportError as e:
|
||
print(f"❌ Import hiba: {e}")
|
||
print("Ellenőrizd, hogy a PYTHONPATH be van-e állítva!")
|
||
exit(1)
|
||
|
||
async def diagnose():
|
||
print("\n" + "="*40)
|
||
print("🔍 SZERVIZ KERESŐ - RENDSZER DIAGNOSZTIKA")
|
||
print("="*40 + "\n")
|
||
|
||
engine = create_async_engine(settings.DATABASE_URL)
|
||
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
|
||
|
||
async with async_session() as session:
|
||
# --- 1. SÉMA ELLENŐRZÉSE ---
|
||
print("1️⃣ Adatbázis séma ellenőrzése...")
|
||
try:
|
||
# Organizations tábla oszlopai
|
||
org_res = await session.execute(text(
|
||
"SELECT column_name FROM information_schema.columns "
|
||
"WHERE table_schema = 'data' AND table_name = 'organizations';"
|
||
))
|
||
org_cols = [row[0] for row in org_res.fetchall()]
|
||
|
||
# Users tábla oszlopai
|
||
user_res = await session.execute(text(
|
||
"SELECT column_name FROM information_schema.columns "
|
||
"WHERE table_schema = 'data' AND table_name = 'users';"
|
||
))
|
||
user_cols = [row[0] for row in user_res.fetchall()]
|
||
|
||
checks = [
|
||
("organizations.language", "language" in org_cols),
|
||
("organizations.default_currency", "default_currency" in org_cols),
|
||
("users.preferred_language", "preferred_language" in user_cols),
|
||
("system_parameters tábla létezik", True) # Ha idáig eljut, a SystemParameter import sikerült
|
||
]
|
||
|
||
for label, success in checks:
|
||
status = "✅ OK" if success else "❌ HIÁNYZIK"
|
||
print(f" [{status}] {label}")
|
||
|
||
except Exception as e:
|
||
print(f" ❌ Hiba a séma lekérdezésekor: {e}")
|
||
|
||
# --- 2. ADATOK ELLENŐRZÉSE ---
|
||
print("\n2️⃣ System Parameters (Alapadatok) ellenőrzése...")
|
||
try:
|
||
result = await session.execute(select(SystemParameter))
|
||
params = result.scalars().all()
|
||
if params:
|
||
print(f" ✅ Talált paraméterek: {len(params)} db")
|
||
for p in params:
|
||
print(f" - {p.key}: {p.value[:2]}... (+{len(p.value)-2} elem)")
|
||
else:
|
||
print(" ⚠️ Figyelem: A system_parameters tábla üres!")
|
||
except Exception as e:
|
||
print(f" ❌ Hiba az adatok lekérésekor: {e}")
|
||
|
||
# --- 3. NYELVI MOTOR ELLENŐRZÉSE ---
|
||
print("\n3️⃣ Nyelvi motor (i18n) és hu.json ellenőrzése...")
|
||
try:
|
||
test_save = t("COMMON.SAVE")
|
||
test_email = t("email.reg_greeting", first_name="Admin")
|
||
|
||
if test_save != "COMMON.SAVE":
|
||
print(f" ✅ Fordítás sikeres: COMMON.SAVE -> '{test_save}'")
|
||
print(f" ✅ Paraméteres fordítás: '{test_email}'")
|
||
else:
|
||
print(" ❌ A fordítás NEM működik (csak a kulcsot adta vissza).")
|
||
print(f" Ellenőrizd a /app/app/locales/hu.json elérhetőségét!")
|
||
except Exception as e:
|
||
print(f" ❌ Hiba a nyelvi motor futtatásakor: {e}")
|
||
|
||
print("\n" + "="*40)
|
||
print("✅ DIAGNOSZTIKA KÉSZ")
|
||
print("="*40 + "\n")
|
||
|
||
if __name__ == "__main__":
|
||
asyncio.run(diagnose()) |