Files
service-finder/backend/app/main.py

102 lines
3.2 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# /opt/docker/dev/service_finder/backend/app/main.py
import os
import logging
from contextlib import asynccontextmanager
from datetime import datetime, timezone # Szükséges a health check-hez
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from starlette.middleware.sessions import SessionMiddleware
from app.api.v1.api import api_router
from app.core.config import settings
from app.database import AsyncSessionLocal
from app.services.translation_service import translation_service
from app.core.scheduler import scheduler_lifespan
# --- LOGGING KONFIGURÁCIÓ ---
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("Sentinel-Main")
# --- LIFESPAN (Startup/Shutdown események) ---
@asynccontextmanager
async def lifespan(app: FastAPI):
"""
A rendszer 'ébredési' folyamata.
Hiba esetén ENG alapértelmezésre vált a rendszer.
"""
logger.info("🛰️ Sentinel Master System ébredése...")
# 1. Nyelvi Cache betöltése az adatbázisból
async with AsyncSessionLocal() as db:
try:
await translation_service.load_cache(db)
logger.info("🌍 i18n fordítási kulcsok aktiválva.")
except Exception as e:
# Itt a kért ERROR log: jelezzük a hibát, de a rendszer ENG fallback-el megy tovább
logger.error(f"❌ i18n hiba az induláskor: {e}. Rendszer alapértelmezett (ENG) módra vált.")
# Statikus könyvtárak ellenőrzése
os.makedirs(settings.STATIC_DIR, exist_ok=True)
os.makedirs(os.path.join(settings.STATIC_DIR, "previews"), exist_ok=True)
# 2. Scheduler indítása
async with scheduler_lifespan(app):
logger.info("⏰ Cronjob ütemező aktiválva.")
yield
logger.info("💤 Sentinel Master System leállítása...")
# --- APP INICIALIZÁLÁS ---
app = FastAPI(
title="Service Finder Master API",
description="Sentinel Traffic Ecosystem, Asset Vault & AI Evidence Processing",
version="2.0.1",
openapi_url=f"{settings.API_V1_STR}/openapi.json",
docs_url="/docs",
lifespan=lifespan
)
# --- MIDDLEWARES ---
app.add_middleware(
SessionMiddleware,
secret_key=settings.SECRET_KEY
)
app.add_middleware(
CORSMiddleware,
allow_origins=[str(origin) for origin in settings.BACKEND_CORS_ORIGINS],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# --- STATIKUS FÁJLOK ---
app.mount("/static", StaticFiles(directory=settings.STATIC_DIR), name="static")
# --- ROUTER BEKÖTÉSE ---
app.include_router(api_router, prefix=settings.API_V1_STR)
# --- ALAPVETŐ RENDSZER VÉGPONTOK ---
@app.get("/", tags=["System"])
async def root():
return {
"status": "online",
"system": "Service Finder Master",
"version": "2.0.1",
"environment": "Production" if not settings.DEBUG_MODE else "Development"
}
@app.get("/health", tags=["System"])
async def health_check():
"""
Monitoring végpont.
JAVÍTVA: A settings.get_now_utc_iso() hiba kiiktatva, standard datetime-ra cserélve.
"""
return {
"status": "ok",
"timestamp": datetime.now(timezone.utc).isoformat(),
"database": "connected"
}