2026.03.30 front és garázs logika
This commit is contained in:
150
backend/app/scripts/check_and_fix_garage_data_simple.py
Normal file
150
backend/app/scripts/check_and_fix_garage_data_simple.py
Normal file
@@ -0,0 +1,150 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Egyszerűbb változat: Garázs adatok ellenőrzése és javítása.
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import sys
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import selectinload
|
||||
|
||||
sys.path.insert(0, '/app')
|
||||
|
||||
from app.db.session import AsyncSessionLocal
|
||||
from app.models.identity import User
|
||||
from app.models.marketplace.organization import Organization, OrganizationMember
|
||||
from app.models.vehicle.asset import Asset
|
||||
|
||||
async def main():
|
||||
print("=" * 60)
|
||||
print("GARÁZS ADATOK ELLENŐRZÉSE (Egyszerű változat)")
|
||||
print("=" * 60)
|
||||
|
||||
async with AsyncSessionLocal() as db:
|
||||
# 1. Keressük meg a teszt felhasználót
|
||||
print("\n1. TESZT FELHASZNÁLÓ KERESÉSE...")
|
||||
stmt = select(User).where(User.email == "tester_pro@profibot.hu")
|
||||
result = await db.execute(stmt)
|
||||
test_user = result.scalar_one_or_none()
|
||||
|
||||
if not test_user:
|
||||
print("❌ HIBA: A teszt felhasználó nem található!")
|
||||
return
|
||||
|
||||
print(f" ✅ Teszt felhasználó: ID={test_user.id}, Email={test_user.email}")
|
||||
|
||||
# 2. Ellenőrizzük a szervezeti tagságot
|
||||
print("\n2. SZERVEZETI TAGSÁG ELLENŐRZÉSE...")
|
||||
org_stmt = (
|
||||
select(Organization)
|
||||
.join(OrganizationMember)
|
||||
.where(OrganizationMember.user_id == test_user.id)
|
||||
.where(Organization.is_deleted == False)
|
||||
)
|
||||
org_result = await db.execute(org_stmt)
|
||||
user_orgs = org_result.scalars().all()
|
||||
|
||||
if user_orgs:
|
||||
print(f" ✅ A felhasználó tagja {len(user_orgs)} szervezetnek:")
|
||||
for org in user_orgs:
|
||||
print(f" - {org.name} (ID: {org.id})")
|
||||
target_org = user_orgs[0]
|
||||
else:
|
||||
print(" ℹ️ Nincs szervezet. Új létrehozása...")
|
||||
# Egyszerű szervezet létrehozás
|
||||
new_org = Organization(
|
||||
full_name="Teszt Flotta Kft.",
|
||||
name="Teszt Flotta",
|
||||
display_name="Teszt Flotta Kft.",
|
||||
tax_number="12345678-2-42",
|
||||
country_code="HU",
|
||||
folder_slug="teszt-flotta-123",
|
||||
org_type="business",
|
||||
status="active",
|
||||
is_active=True,
|
||||
owner_id=test_user.id
|
||||
)
|
||||
db.add(new_org)
|
||||
await db.flush()
|
||||
|
||||
org_member = OrganizationMember(
|
||||
organization_id=new_org.id,
|
||||
user_id=test_user.id,
|
||||
role="ADMIN"
|
||||
)
|
||||
db.add(org_member)
|
||||
|
||||
await db.commit()
|
||||
await db.refresh(new_org)
|
||||
target_org = new_org
|
||||
print(f" ✅ Új szervezet: {target_org.name} (ID: {target_org.id})")
|
||||
|
||||
# 3. Járművek lekérdezése
|
||||
print("\n3. JÁRMŰVEK LEKÉRDEZÉSE...")
|
||||
asset_stmt = (
|
||||
select(Asset)
|
||||
.where(Asset.owner_person_id == test_user.id)
|
||||
)
|
||||
asset_result = await db.execute(asset_stmt)
|
||||
assets = asset_result.scalars().all()
|
||||
|
||||
print(f" ✅ Összesen {len(assets)} jármű található.")
|
||||
|
||||
if not assets:
|
||||
print(" ℹ️ Nincsenek járművek. Nincs mit felosztani.")
|
||||
return
|
||||
|
||||
# 4. Jelenlegi felosztás
|
||||
private = [a for a in assets if a.owner_org_id is None]
|
||||
corporate = [a for a in assets if a.owner_org_id == target_org.id]
|
||||
other = [a for a in assets if a.owner_org_id not in [None, target_org.id]]
|
||||
|
||||
print(f"\n JELENLEGI ÁLLAPOT:")
|
||||
print(f" • Privát: {len(private)} db")
|
||||
print(f" • Céges ({target_org.name}): {len(corporate)} db")
|
||||
if other:
|
||||
print(f" • Egyéb: {len(other)} db")
|
||||
|
||||
# 5. Ha nincs elég adat, felosztjuk
|
||||
if len(private) == 0 or len(corporate) == 0:
|
||||
print("\n ℹ️ Járművek felosztása...")
|
||||
half = len(assets) // 2
|
||||
|
||||
for i, asset in enumerate(assets):
|
||||
if i < half:
|
||||
asset.owner_org_id = None
|
||||
else:
|
||||
asset.owner_org_id = target_org.id
|
||||
|
||||
await db.commit()
|
||||
print(f" ✅ Felosztva: {half} privát, {len(assets)-half} céges")
|
||||
else:
|
||||
print("\n ✅ A járművek már megfelelően fel vannak osztva.")
|
||||
|
||||
# 6. Végeredmény
|
||||
print("\n" + "=" * 60)
|
||||
print("VÉGEREDMÉNY:")
|
||||
print("=" * 60)
|
||||
print(f"\n📋 TESZT FELHASZNÁLÓ:")
|
||||
print(f" • Email: {test_user.email}")
|
||||
print(f" • User ID: {test_user.id}")
|
||||
print(f" • Szervezet: {target_org.name} (ID: {target_org.id})")
|
||||
|
||||
# Új lekérdezés
|
||||
asset_result = await db.execute(asset_stmt)
|
||||
assets = asset_result.scalars().all()
|
||||
private = [a for a in assets if a.owner_org_id is None]
|
||||
corporate = [a for a in assets if a.owner_org_id == target_org.id]
|
||||
|
||||
print(f"\n🚗 JÁRMŰVEGYÜTT:")
|
||||
print(f" • Összesen: {len(assets)} db")
|
||||
print(f" • Privát garázs: {len(private)} db")
|
||||
print(f" • Céges flotta: {len(corporate)} db")
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("KÉSZ! A tesztadatok előkészítve.")
|
||||
print("=" * 60)
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user