Files
2026-01-09 23:14:12 +01:00

69 lines
1.7 KiB
Python

"""Main FastAPI application for AI Insights Service."""
import structlog
from app.core.config import settings
from app.core.database import init_db, close_db
from app.api import insights
from shared.service_base import StandardFastAPIService
# Initialize logger
logger = structlog.get_logger()
class AIInsightsService(StandardFastAPIService):
"""AI Insights Service with standardized monitoring setup"""
async def on_startup(self, app):
"""Custom startup logic for AI Insights"""
# Initialize database
await init_db()
logger.info("Database initialized")
await super().on_startup(app)
async def on_shutdown(self, app):
"""Custom shutdown logic for AI Insights"""
await super().on_shutdown(app)
# Close database
await close_db()
logger.info("Database connections closed")
# Create service instance
service = AIInsightsService(
service_name="ai-insights",
app_name="AI Insights Service",
description="Intelligent insights and recommendations for bakery operations",
version=settings.SERVICE_VERSION,
log_level=getattr(settings, 'LOG_LEVEL', 'INFO'),
cors_origins=getattr(settings, 'ALLOWED_ORIGINS', ["*"]),
api_prefix=settings.API_V1_PREFIX,
enable_metrics=True,
enable_health_checks=True,
enable_tracing=True,
enable_cors=True
)
# Create FastAPI app
app = service.create_app()
# Add service-specific routers
service.add_router(
insights.router,
tags=["insights"]
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(
"app.main:app",
host="0.0.0.0",
port=8000,
reload=True,
log_level=settings.LOG_LEVEL.lower()
)