#!/bin/bash # 🚀 SERVICE FINDER - SMART TILES & NAS BACKUP SCRIPT (V16.0) PROJECT_ROOT="/opt/service_finder" NAS_BACKUP_PATH="/mnt/nas/app_data/backups" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") echo "--- 📩 1. BIZTONSÁGI MENTÉS KÉSZÍTÉSE A NAS-RA ---" mkdir -p $NAS_BACKUP_PATH # MentĂ©s a NAS-ra a vĂĄltoztatĂĄsok elƑtt tar -czf $NAS_BACKUP_PATH/sf_backup_$TIMESTAMP.tar.gz -C $PROJECT_ROOT backend/app echo "✅ MentĂ©s elkĂ©szĂŒlt: $NAS_BACKUP_PATH/sf_backup_$TIMESTAMP.tar.gz" echo "--- ⚙ 2. VERZIÓ ÉS CHANGELOG FRISSÍTÉSE ---" cat <> $PROJECT_ROOT/CHANGELOG.md ## [16.0] - 2026-01-25 ### HozzĂĄadva - Smart Tiles: Csempe alapĂș nĂ©zet a Dashboardon. - Brand logĂłk Ă©s okmĂĄny-lejĂĄrat figyelmeztetĂ©sek. - Automata NAS mentĂ©s funkciĂł a telepĂ­tƑben. EOF echo "--- 🧠 3. BACKEND FRISSÍTÉSE (fleet.py) ---" cat < $PROJECT_ROOT/backend/app/api/v1/endpoints/fleet.py from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select, func from typing import List from app.db.session import get_db from app.schemas.fleet import VehicleCreate, VehicleResponse, EventCreate, EventResponse from app.models.vehicle import UserVehicle from app.models.system_settings import SystemSetting from app.models.vehicle_event import VehicleEvent from app.api.deps import get_current_user from app.models.user import User router = APIRouter() @router.get("/vehicles", response_model=List[VehicleResponse]) async def get_my_vehicles(db: AsyncSession = Depends(get_db), current_user: User = Depends(get_current_user)): result = await db.execute(select(UserVehicle).where(UserVehicle.user_id == current_user.id)) return result.scalars().all() @router.post("/vehicles/{vehicle_id}/events", response_model=EventResponse) async def create_event(vehicle_id: int, event_in: EventCreate, db: AsyncSession = Depends(get_db), current_user: User = Depends(get_current_user)): v_query = await db.execute(select(UserVehicle).where(UserVehicle.id == vehicle_id, UserVehicle.user_id == current_user.id)) vehicle = v_query.scalar_one_or_none() if not vehicle: raise HTTPException(status_code=404, detail="JĂĄrmƱ nem talĂĄlhatĂł.") if event_in.odometer < vehicle.current_odometer: raise HTTPException(status_code=400, detail=f"Hiba: Km ĂĄllĂĄs ({event_in.odometer}) kevesebb mint {vehicle.current_odometer}") new_event = VehicleEvent(**event_in.model_dump(), vehicle_id=vehicle_id) db.add(new_event) vehicle.current_odometer = event_in.odometer await db.commit() await db.refresh(new_event) return new_event EOF echo "--- 🎹 4. FRONTEND FRISSÍTÉSE (dashboard.html) ---" cat < $PROJECT_ROOT/backend/app/static/dashboard.html Service Finder - Dashboard

GARÁZS

EOF echo "--- 🔄 5. RENDSZER ÚJRAINDÍTÁSA ---" docker compose restart service_finder_api echo "🚀 FRISSÍTÉS ÉS NAS MENTÉS SIKERES!"