import logging from contextlib import asynccontextmanager from fastapi import FastAPI from loguru import logger from ctp_slack_bot.api.routes import router from ctp_slack_bot.core.config import settings from ctp_slack_bot.core.logging import setup_logging from ctp_slack_bot.tasks.scheduler import start_scheduler, stop_scheduler @asynccontextmanager async def lifespan(app: FastAPI): """ Lifespan context manager for FastAPI application. Handles startup and shutdown events. """ # Setup logging #setup_logging() logger.info("Starting application") # Start scheduler #scheduler = start_scheduler() #logger.info("Started scheduler") yield # Shutdown logger.info("Shutting down application") #stop_scheduler(scheduler) #logger.info("Stopped scheduler") app = FastAPI( title="CTP Slack Bot", description="A Slack bot for processing and analyzing Zoom transcripts using AI", version="0.1.0", lifespan=lifespan, ) # Include routers app.include_router(router) @app.get("/health") async def health_check(): """Health check endpoint""" return {"status": "healthy"} if __name__ == "__main__": import uvicorn uvicorn.run( "main:app", host="localhost", #settings.API_HOST, port=8000, #settings.API_PORT, reload=True #settings.DEBUG, )