2026.06.04 frontend építés közben

This commit is contained in:
Roo
2026-06-04 07:26:22 +00:00
parent 7adf6cc3e3
commit 59a30ac428
3302 changed files with 24091 additions and 1771 deletions

View File

@@ -2,7 +2,9 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.exc import SQLAlchemyError
from typing import Dict, Any
from sqlalchemy import select, or_
from typing import Dict, Any, List, Optional
from datetime import datetime
from app.api.deps import get_db, get_current_user
from app.schemas.user import UserResponse, UserUpdate, ActiveOrganizationUpdate, UserWithTokenResponse
@@ -10,10 +12,27 @@ from app.models.identity import User
from app.services.trust_engine import TrustEngine
from app.core.security import create_tokens, DEFAULT_RANK_MAP
from app.core.config import settings
from pydantic import BaseModel
router = APIRouter()
trust_engine = TrustEngine()
# MLM Hálózat válasz sémák
class NetworkMemberL1(BaseModel):
email: str
referral_code: str
folder_slug: Optional[str]
joined_at: datetime
class NetworkMemberL2L3(BaseModel):
referral_code: str
joined_at: datetime
class NetworkResponse(BaseModel):
level1: List[NetworkMemberL1]
level2: List[NetworkMemberL2L3]
level3: List[NetworkMemberL2L3]
@router.get("/me", response_model=UserResponse)
async def read_users_me(
db: AsyncSession = Depends(get_db),
@@ -222,3 +241,67 @@ async def update_active_organization(
access_token=access_token,
token_type="bearer"
)
@router.get("/me/network", response_model=NetworkResponse)
async def get_my_network(
db: AsyncSession = Depends(get_db),
current_user: User = Depends(get_current_user),
):
"""
Visszaadja a felhasználó MLM hálózatát 3 szinten:
- L1: Közvetlen meghívottak (email + kód)
- L2: L1 meghívottai (csak kód)
- L3: L2 meghívottai (csak kód)
"""
# L1: Közvetlen meghívottak
l1_stmt = select(User).where(User.referred_by_id == current_user.id)
l1_result = await db.execute(l1_stmt)
l1_users = l1_result.scalars().all()
level1 = [
NetworkMemberL1(
email=u.email,
referral_code=u.referral_code or "",
folder_slug=u.folder_slug,
joined_at=u.created_at
)
for u in l1_users
]
# L2: L1 userek által meghívottak
level2 = []
if l1_users:
l1_ids = [u.id for u in l1_users]
l2_stmt = select(User).where(User.referred_by_id.in_(l1_ids))
l2_result = await db.execute(l2_stmt)
l2_users = l2_result.scalars().all()
level2 = [
NetworkMemberL2L3(
referral_code=u.referral_code or "",
joined_at=u.created_at
)
for u in l2_users
]
# L3: L2 userek által meghívottak
level3 = []
if l2_users:
l2_ids = [u.id for u in l2_users]
l3_stmt = select(User).where(User.referred_by_id.in_(l2_ids))
l3_result = await db.execute(l3_stmt)
l3_users = l3_result.scalars().all()
level3 = [
NetworkMemberL2L3(
referral_code=u.referral_code or "",
joined_at=u.created_at
)
for u in l3_users
]
return NetworkResponse(
level1=level1,
level2=level2,
level3=level3
)