from fastapi import FastAPI from loguru import logger from contextlib import asynccontextmanager # --- НОВЫЙ ИМПОРТ --- from fastapi.middleware.cors import CORSMiddleware from app.core.logging import setup_logging from app.core.config import settings from app.api.v1.endpoints import auth from app.api.v1.endpoints import counters # Вызываем настройку логирования в самом начале 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", # Для локальной разработки # !!! В будущем сюда нужно будет добавить домен самого Marquiz !!! # "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.")