átlagos kiegészítséek jó sok
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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)
|
||||
|
||||
|
||||
25
backend/app/schemas/db_setup.sql
Normal file
25
backend/app/schemas/db_setup.sql
Normal 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.';
|
||||
36
backend/app/schemas/gamification.py
Normal file
36
backend/app/schemas/gamification.py
Normal 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
|
||||
@@ -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 ---
|
||||
|
||||
|
||||
@@ -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) ---
|
||||
|
||||
|
||||
30
backend/app/schemas/system.py
Normal file
30
backend/app/schemas/system.py
Normal 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)
|
||||
Reference in New Issue
Block a user