from fastapi import FastAPI, Request, HTTPException from fastapi.responses import RedirectResponse from fastapi.templating import Jinja2Templates from fastapi.staticfiles import StaticFiles from model.database import init_db from routers import index, logins, users, product, profile, jobs, client import logging # Создаём таблицы в БД init_db() # Инициализация приложения app = FastAPI(title="API для turboapply", description="🚀 Это кастомное описание для Swagger UI", # ✅ Описание version="1.0.3", # ✅ Версия API # docs_url="/api/v1/documentation/", redoc_url=None, # docs_url=None, # Отключаем дефолтный Swagger openapi_url="/openapi.json", swagger_ui_parameters={"filter": True}, # on_startup=[start_workers] ) # Настройка шаблонов templates = Jinja2Templates(directory="templates") # Подключение статики (делаем это ОДИН раз) app.mount("/static", StaticFiles(directory="static"), name="static") # Подключение маршрутов app.include_router(index.router, tags=["callback"], include_in_schema=False) app.include_router(logins.router, tags=["login"], include_in_schema=False) app.include_router(users.router, tags=["users"], include_in_schema=False) app.include_router(product.router, tags=["product"], include_in_schema=False) app.include_router(client.router, tags=["client"]) # Подключение роутеров app.include_router(profile.router, tags=["Profile"]) app.include_router(jobs.router, tags=["Jobs"], include_in_schema=False) # Обработка 404 @app.exception_handler(404) async def not_found(request: Request, exc: HTTPException): return templates.TemplateResponse("working.html", {"request": request}, status_code=404) @app.exception_handler(HTTPException) async def auth_exception_handler(request: Request, exc: HTTPException): if exc.status_code == 401: return RedirectResponse(url="/login") return RedirectResponse(url="/error") @app.on_event("startup") async def startup(): await init_db()