feat: v1.7 overhaul - identity hash, triple wallet, financial ledger, and security audit system

This commit is contained in:
2026-02-16 00:42:49 +00:00
parent bb02d4ed59
commit d574d3297d
63 changed files with 3710 additions and 565 deletions

View File

@@ -5,6 +5,7 @@ from datetime import datetime
# --- KATALÓGUS SÉMÁK (Gyári adatok) ---
class AssetCatalogBase(BaseModel):
"""Alap katalógus adatok, amik a technikai dúsításból származnak."""
make: str
model: str
generation: Optional[str] = None
@@ -13,39 +14,57 @@ class AssetCatalogBase(BaseModel):
vehicle_class: Optional[str] = None
fuel_type: Optional[str] = None
engine_code: Optional[str] = None
# --- ÚJ TECHNIKAI MEZŐK (Robot v1.0.8 Smart Hunter adatai) ---
power_kw: Optional[int] = None
engine_capacity: Optional[int] = None
max_weight_kg: Optional[int] = None
axle_count: Optional[int] = None
body_type: Optional[str] = None
class AssetCatalogResponse(AssetCatalogBase):
"""Katalógus válasz séma azonosítóval és extra gyári adatokkal."""
id: int
factory_data: Optional[Dict[str, Any]] = None # A robot által gyűjtött adatok
factory_data: Optional[Dict[str, Any]] = None
# Pydantic v2 konfiguráció az ORM (SQLAlchemy) támogatáshoz
model_config = ConfigDict(from_attributes=True)
# --- JÁRMŰ SÉMÁK (Asset) ---
class AssetBase(BaseModel):
"""Jármű példány alapadatai (egyedi azonosítók)."""
vin: str = Field(..., min_length=17, max_length=17)
license_plate: str
name: Optional[str] = None
year_of_manufacture: Optional[int] = None
class AssetCreate(AssetBase):
# A létrehozáshoz kellenek a katalógus infók is
"""Séma új jármű felvételéhez."""
make: str
model: str
vehicle_class: Optional[str] = "land"
vehicle_class: Optional[str] = "car"
fuel_type: Optional[str] = None
current_reading: Optional[int] = 0
class AssetResponse(AssetBase):
"""
Teljes jármű válasz séma.
Ez a séma tartalmazza a 'catalog' objektumot, amiben a dúsított műszaki adatok vannak.
"""
id: UUID
catalog_id: int
is_verified: bool
catalog: AssetCatalogResponse # Ez a pont kapcsolja össze a dúsított technikai adatokat
status: str
is_verified: bool
model_config = ConfigDict(from_attributes=True)
# --- DIGITÁLIS IKER (Full Profile) ---
# Ez a séma felel a 9 pontos költség és a mélységi szerviz adatok átadásáért
class AssetFullProfile(BaseModel):
"""
Komplex jelentésekhez használt séma.
Összefogja az identitást, telemetriát, pénzügyeket és szerviztörténetet.
"""
identity: Dict[str, Any]
telemetry: Dict[str, Any]
financial_summary: Dict[str, Any]

View File

@@ -32,12 +32,17 @@ class UserKYCComplete(BaseModel):
birth_date: date
mothers_last_name: str
mothers_first_name: str
# Bontott címmezők (B pont szerint)
address_zip: str
address_city: str
address_street_name: str
address_street_type: str
address_house_number: str
address_hrsz: Optional[str] = None
address_stairwell: Optional[str] = None # Lépcsőház
address_floor: Optional[str] = None # Emelet
address_door: Optional[str] = None # Ajtó
address_hrsz: Optional[str] = None # Helyrajzi szám
identity_docs: Dict[str, DocumentDetail]
ice_contact: ICEContact
preferred_currency: Optional[str] = Field("HUF", max_length=3)

View File

@@ -0,0 +1,20 @@
from pydantic import BaseModel
from typing import Optional
class ServiceCreateInternal(BaseModel):
name: str
postal_code: str
city: str
street_name: str
street_type: str
house_number: str
stairwell: Optional[str] = None
floor: Optional[str] = None
door: Optional[str] = None
hrsz: Optional[str] = None
contact_phone: Optional[str] = None
email: Optional[str] = None
website: Optional[str] = None
source: str
external_id: Optional[str] = None