refaktorálás javításai

This commit is contained in:
Roo
2026-03-13 10:22:41 +00:00
parent 2d8d23f469
commit f53e0b53df
140 changed files with 7316 additions and 4579 deletions

View File

@@ -0,0 +1,56 @@
"""
Jármű értékelési sémák a Social 1 modulhoz.
"""
from pydantic import BaseModel, Field, validator
from typing import Optional
from uuid import UUID
from datetime import datetime
class VehicleRatingCreate(BaseModel):
"""Értékelés beküldéséhez használt séma."""
driving_experience: int = Field(..., ge=1, le=10, description="Vezetési élmény 1-10 skálán")
reliability: int = Field(..., ge=1, le=10, description="Megbízhatóság 1-10 skálán")
comfort: int = Field(..., ge=1, le=10, description="Kényelem 1-10 skálán")
consumption_satisfaction: int = Field(..., ge=1, le=10, description="Fogyasztás elégedettség 1-10 skálán")
comment: Optional[str] = Field(None, max_length=1000, description="Opcionális megjegyzés")
@validator('driving_experience', 'reliability', 'comfort', 'consumption_satisfaction')
def validate_rating_range(cls, v):
if not 1 <= v <= 10:
raise ValueError('Értékelésnek 1 és 10 között kell lennie')
return v
class VehicleRatingResponse(BaseModel):
"""Értékelés válasza, tartalmazza a számított átlagpontszámot."""
id: UUID
vehicle_id: int
user_id: int
driving_experience: int
reliability: int
comfort: int
consumption_satisfaction: int
comment: Optional[str]
average_score: float = Field(..., description="Számított átlagpontszám (4 dimenzió átlaga)")
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
@validator('average_score', pre=True, always=True)
def calculate_average(cls, v, values):
"""Számolja ki az átlagpontszámot, ha nincs megadva."""
if v is not None:
return v
# Ha nincs megadva, számoljuk ki a 4 dimenzióból
scores = [
values.get('driving_experience'),
values.get('reliability'),
values.get('comfort'),
values.get('consumption_satisfaction')
]
if any(score is None for score in scores):
raise ValueError('Nem lehet kiszámolni az átlagot hiányzó értékelések miatt')
return sum(scores) / 4.0