Initial commit: Robot ökoszisztéma v2.0 - Stabilizált jármű és szerviz robotok
This commit is contained in:
1
code-server-config/data/User/History/359c80de/entries.json
Executable file
1
code-server-config/data/User/History/359c80de/entries.json
Executable file
@@ -0,0 +1 @@
|
||||
{"version":1,"resource":"vscode-remote://192.168.100.43:8443/home/coder/project/backend/app/api/v1/fleet.py","entries":[{"id":"iEZY.py","timestamp":1769038210566}]}
|
||||
62
code-server-config/data/User/History/359c80de/iEZY.py
Executable file
62
code-server-config/data/User/History/359c80de/iEZY.py
Executable file
@@ -0,0 +1,62 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from typing import List
|
||||
|
||||
from app.db.session import get_db
|
||||
from app.schemas.fleet import VehicleCreate, VehicleResponse, EventCreate, EventResponse, TCOStats
|
||||
from app.models.vehicle import Vehicle
|
||||
from app.services.fleet_service import add_vehicle_event, calculate_tco
|
||||
|
||||
# Mock user dependency (később cserélendő a JWT-re)
|
||||
async def get_mock_current_user():
|
||||
return 2 # Good Guy
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
# --- VEHICLE ENDPOINTS ---
|
||||
|
||||
@router.post("/vehicles", response_model=VehicleResponse, status_code=status.HTTP_201_CREATED)
|
||||
async def create_vehicle(
|
||||
vehicle_in: VehicleCreate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
user_id: int = Depends(get_mock_current_user)
|
||||
):
|
||||
new_vehicle = Vehicle(**vehicle_in.model_dump(), user_id=user_id, current_odometer=vehicle_in.initial_odometer)
|
||||
db.add(new_vehicle)
|
||||
await db.commit()
|
||||
await db.refresh(new_vehicle)
|
||||
return new_vehicle
|
||||
|
||||
@router.get("/vehicles", response_model=List[VehicleResponse])
|
||||
async def get_my_vehicles(
|
||||
db: AsyncSession = Depends(get_db),
|
||||
user_id: int = Depends(get_mock_current_user)
|
||||
):
|
||||
from sqlalchemy import select
|
||||
result = await db.execute(select(Vehicle).where(Vehicle.user_id == user_id))
|
||||
return result.scalars().all()
|
||||
|
||||
# --- EVENT / SERVICE BOOK ENDPOINTS ---
|
||||
|
||||
@router.post("/vehicles/{vehicle_id}/events", response_model=EventResponse)
|
||||
async def add_event(
|
||||
vehicle_id: int,
|
||||
event_in: EventCreate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
user_id: int = Depends(get_mock_current_user)
|
||||
):
|
||||
"""
|
||||
Új esemény (szerviz, tankolás) rögzítése.
|
||||
Automatikusan kezeli a szolgáltatókat és a km óra állást.
|
||||
"""
|
||||
result = await add_vehicle_event(db, vehicle_id, event_in, user_id)
|
||||
|
||||
if isinstance(result, dict) and "error" in result:
|
||||
raise HTTPException(status_code=404, detail=result["error"])
|
||||
|
||||
return result
|
||||
|
||||
@router.get("/vehicles/{vehicle_id}/stats", response_model=TCOStats)
|
||||
async def get_vehicle_stats(vehicle_id: int, db: AsyncSession = Depends(get_db)):
|
||||
"""Költségek elemzése és TCO mutatók"""
|
||||
return await calculate_tco(db, vehicle_id)
|
||||
Reference in New Issue
Block a user