| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/clients/client2/web31/web/plate-ai-api/app/ |
Upload File : |
"""FastAPI-Anwendung (Einstiegspunkt).
Start (Dev): uvicorn app.main:app --reload
Start (Prod): gunicorn -c deploy/gunicorn_conf.py app.main:app
"""
from __future__ import annotations
import time
import uuid
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from .api.router import api_router
from .config import settings
from .core.errors import register_exception_handlers
from .core.logging import configure_logging, get_logger
configure_logging()
logger = get_logger("plate_ai.app")
app = FastAPI(
title="plate-ai-api",
version="0.1.0",
description="Kennzeichen- und Fahrzeugerkennung als API (DE/EU-Fokus).",
docs_url="/docs" if not settings.is_production or settings.debug else None,
redoc_url=None,
)
if settings.cors_origins_list:
app.add_middleware(
CORSMiddleware,
allow_origins=settings.cors_origins_list,
allow_methods=["GET", "POST", "DELETE"],
allow_headers=["*"],
)
@app.middleware("http")
async def add_request_context(request: Request, call_next):
request.state.request_id = request.headers.get("X-Request-ID") or str(uuid.uuid4())
start = time.perf_counter()
response = await call_next(request)
response.headers["X-Request-ID"] = request.state.request_id
response.headers["X-Response-Time-ms"] = str(int((time.perf_counter() - start) * 1000))
return response
register_exception_handlers(app)
app.include_router(api_router)
@app.on_event("startup")
async def _startup():
if settings.secret_key.startswith("CHANGE_ME"):
logger.warning("insecure_default_secret", extra={"event": "config_warning"})
logger.info("startup", extra={"event": "startup"})
@app.get("/")
def root():
return {"service": "plate-ai-api", "version": "0.1.0", "docs": "/docs",
"health": f"{settings.api_prefix}/health"}