átlagos kiegészítséek jó sok

This commit is contained in:
Roo
2026-03-22 11:02:05 +00:00
parent f53e0b53df
commit 5d44339f21
249 changed files with 20922 additions and 2253 deletions

View File

@@ -1,4 +1,4 @@
# /opt/docker/dev/service_finder/backend/app/api/v1/endpoints/admin.py
# /opt/docker/dev/service_finder/backend/app/schemas/admin.py
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, func, text, delete
@@ -8,8 +8,8 @@ from datetime import datetime, timedelta
from app.api import deps
from app.models.identity import User, UserRole
from app.models.system import SystemParameter
from app.models.audit import SecurityAuditLog, OperationalLog
from app.models.security import PendingAction, ActionStatus
from app.models import SecurityAuditLog, OperationalLog
from app.models import PendingAction, ActionStatus
from app.services.security_service import security_service
from app.services.translation_service import TranslationService
from app.schemas.admin import PointRuleResponse, LevelConfigResponse, ConfigUpdate

View File

@@ -2,7 +2,7 @@
from pydantic import BaseModel, ConfigDict
from datetime import datetime
from typing import Optional, Any, Dict
from app.models.security import ActionStatus
from app.models import ActionStatus
class PendingActionResponse(BaseModel):
id: int

View File

@@ -53,4 +53,12 @@ class AssetResponse(BaseModel):
created_at: datetime
updated_at: Optional[datetime] = None
model_config = ConfigDict(from_attributes=True)
model_config = ConfigDict(from_attributes=True)
class AssetCreate(BaseModel):
""" Jármű létrehozásához szükséges adatok. """
vin: str = Field(..., min_length=17, max_length=17, description="VIN szám (17 karakter)")
license_plate: str = Field(..., min_length=2, max_length=20, description="Rendszám")
catalog_id: Optional[int] = Field(None, description="Opcionális katalógus ID (ha ismert a modell)")
organization_id: int = Field(..., description="Szervezet ID, amelyhez a jármű tartozik")

View File

@@ -18,6 +18,9 @@ class UserLiteRegister(BaseModel):
password: str = Field(..., min_length=8, description="Minimum 8 karakter hosszú jelszó")
first_name: str
last_name: str
region_code: Optional[str] = "HU"
lang: Optional[str] = "hu"
timezone: Optional[str] = "Europe/Budapest"
model_config = ConfigDict(from_attributes=True)

View File

@@ -0,0 +1,25 @@
-- ==========================================
-- MOTOROS TECHNIKAI ADATOK NYILVÁNTARTÁSA
-- ==========================================
-- 1. Séma biztosítása
CREATE SCHEMA IF NOT EXISTS vehicle;
-- 2. A kinyert specifikációk táblája
-- Ez a tábla tárolja az R4 által parszolt adatokat JSONB formátumban.
CREATE TABLE IF NOT EXISTS vehicle.motorcycle_specs (
id SERIAL PRIMARY KEY,
crawler_id INTEGER UNIQUE REFERENCES vehicle.auto_data_crawler_queue(id) ON DELETE CASCADE,
full_name TEXT NOT NULL,
raw_data JSONB NOT NULL, -- Rugalmas tárolás minden technikai paraméternek
url TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- 3. Teljesítmény-indexek
-- Segít, ha később a JSON-on belül akarunk keresni (pl. lóerő alapján)
CREATE INDEX IF NOT EXISTS idx_motorcycle_specs_raw_data ON vehicle.motorcycle_specs USING GIN (raw_data);
CREATE INDEX IF NOT EXISTS idx_motorcycle_specs_full_name ON vehicle.motorcycle_specs(full_name);
COMMENT ON TABLE vehicle.motorcycle_specs IS 'Az R4-es robot által kinyert végleges motoros műszaki adatok.';

View File

@@ -0,0 +1,36 @@
from pydantic import BaseModel
from typing import List, Optional
from datetime import datetime, date
class SeasonResponse(BaseModel):
id: int
name: str
start_date: date
end_date: date
is_active: bool
class Config:
from_attributes = True
class UserStatResponse(BaseModel):
user_id: int
total_xp: int
current_level: int
restriction_level: int
penalty_quota_remaining: int
banned_until: Optional[datetime]
class Config:
from_attributes = True
class LeaderboardEntry(BaseModel):
user_id: int
username: str # email or person name
total_xp: int
current_level: int
class Config:
from_attributes = True

View File

@@ -6,7 +6,7 @@ from datetime import datetime
from typing import Optional, Dict, Any
from pydantic import BaseModel, Field
from app.models.security import ActionStatus
from app.models import ActionStatus
# --- Request schemas ---

View File

@@ -2,7 +2,7 @@ import uuid # HOZZÁADVA
from pydantic import BaseModel, ConfigDict
from typing import Optional, List
from datetime import datetime
from app.models.social import ModerationStatus, SourceType
from app.models import ModerationStatus, SourceType
# --- Alap Sémák (Szolgáltatók) ---

View File

@@ -0,0 +1,30 @@
# /opt/docker/dev/service_finder/backend/app/schemas/system.py
from pydantic import BaseModel, ConfigDict
from typing import Dict, Any, Optional
from datetime import datetime
class SystemParameterBase(BaseModel):
description: Optional[str] = None
value: Dict[str, Any] # JSONB mező
scope_level: str = 'global'
scope_id: Optional[str] = None
is_active: bool = True
class SystemParameterCreate(SystemParameterBase):
key: str
class SystemParameterUpdate(BaseModel):
description: Optional[str] = None
value: Optional[Dict[str, Any]] = None
is_active: Optional[bool] = None
class SystemParameterResponse(SystemParameterBase):
id: int
key: str
updated_at: datetime
model_config = ConfigDict(from_attributes=True)