Epic 3: Economy & Billing Engine (Pénzügyi Motor)

This commit is contained in:
Roo
2026-03-08 23:15:52 +00:00
parent 8d25f44ec6
commit 4e40af8a08
69 changed files with 3758 additions and 72 deletions

View File

@@ -0,0 +1,65 @@
# /opt/docker/dev/service_finder/backend/app/schemas/security.py
"""
Dual Control (Négy szem elv) sémák.
"""
from datetime import datetime
from typing import Optional, Dict, Any
from pydantic import BaseModel, Field
from app.models.security import ActionStatus
# --- Request schemas ---
class PendingActionCreate(BaseModel):
""" Dual Control kérelem létrehozása. """
action_type: str = Field(..., description="Művelettípus (pl. CHANGE_ROLE, SET_VIP)")
payload: Dict[str, Any] = Field(..., description="Művelet specifikus adatok")
reason: Optional[str] = Field(None, description="Indoklás a kérelemhez")
class PendingActionApprove(BaseModel):
""" Művelet jóváhagyása. """
comment: Optional[str] = Field(None, description="Opcionális megjegyzés")
class PendingActionReject(BaseModel):
""" Művelet elutasítása. """
reason: str = Field(..., description="Elutasítás oka")
# --- Response schemas ---
class UserLite(BaseModel):
""" Felhasználó alapvető adatai. """
id: int
email: str
role: str
class Config:
from_attributes = True
class PendingActionResponse(BaseModel):
""" Dual Control művelet válasza. """
id: int
requester_id: int
approver_id: Optional[int]
status: ActionStatus
action_type: str
payload: Dict[str, Any]
reason: Optional[str]
created_at: datetime
expires_at: datetime
processed_at: Optional[datetime]
# Kapcsolatok
requester: Optional[UserLite] = None
approver: Optional[UserLite] = None
class Config:
from_attributes = True
# --- List response ---
class PendingActionList(BaseModel):
""" Dual Control műveletek listája. """
items: list[PendingActionResponse]
total: int
page: int
size: int