Files
marquiz-metrics/app/main.py
13orlov b05a6165aa
All checks were successful
continuous-integration/drone/push Build is passing
good release 2.0 code name: chiki-puki
2025-08-31 22:28:24 +01:00

61 lines
2.5 KiB
Python
Raw Permalink 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.

# app/main.py
# 1. Импорты из стандартной библиотеки Python
from contextlib import asynccontextmanager
# 2. Импорты сторонних библиотек (third-party)
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from loguru import logger
# 3. Импорты из нашего собственного приложения (local application)
from app.api.v1.endpoints import auth, counters
from app.core.config import settings
from app.core.logging import setup_logging
# Вызываем настройку логирования
setup_logging()
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("Application startup...")
logger.info(f"Log level is set to: {settings.LOG_LEVEL}")
logger.info("Service is ready to accept requests.")
yield
logger.info("Application shutdown...")
app = FastAPI(
title="Marquiz Metrica Connector",
version="1.0.0",
description="Микросервис для автоматизации настройки Яндекс.Метрики для квизов.",
lifespan=lifespan
)
# --- НАСТРОЙКА CORS ---
# Список доменов, с которых разрешены запросы
origins = [
"https://test.mgforest.ru", # Наш тестовый frontend
"http://localhost", # Для локальной разработки
"http://localhost:8080", # Для локальной разработки
# сюда прокидываем домен теста и прода Марквиз
# "https://marquiz.ru",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins, # Разрешить запросы с этих доменов
allow_credentials=True, # Разрешить передачу cookie (на всякий случай)
allow_methods=["*"], # Разрешить ВСЕ методы (GET, POST, OPTIONS и т.д.)
allow_headers=["*"], # Разрешить ВСЕ заголовки
)
# ------------------
# Подключаем роутеры
app.include_router(auth.router, prefix="/api/v1/auth", tags=["Authentication"])
app.include_router(counters.router, prefix="/api/v1/counters", tags=["Counters"])
@app.get("/", tags=["Health Check"])
def health_check():
logger.info("Health check endpoint was requested.")
return {"status": "ok", "message": "Welcome to Marquiz Metrica Connector!"}
logger.info("FastAPI app instance created and configured.")