Spaces:
Sleeping
Sleeping
| import os | |
| from fastapi import FastAPI, Depends | |
| from fastapi.middleware.cors import CORSMiddleware | |
| import logging | |
| from app.core.config import settings | |
| from app.core.database import SessionLocal | |
| from app.core.init_db import init_db | |
| from app.api.v1 import auth, employees, departments, enrollment, kiosk, attendance, reports, analytics, settings as settings_api, audit | |
| # Logging configuration | |
| logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") | |
| logger = logging.getLogger("NetraID") | |
| from fastapi.staticfiles import StaticFiles | |
| app = FastAPI( | |
| title=settings.PROJECT_NAME, | |
| version="1.0.0", | |
| docs_url="/docs", | |
| redoc_url="/redoc" | |
| ) | |
| # Mount uploads directory as static files | |
| app.mount("/uploads", StaticFiles(directory=settings.UPLOAD_DIR), name="uploads") | |
| # CORS configuration | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=settings.cors_origins, | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # Create folders on startup | |
| def startup_event(): | |
| logger.info("Starting NetraID Backend...") | |
| # Create upload directory | |
| os.makedirs(settings.UPLOAD_DIR, exist_ok=True) | |
| logger.info(f"Uploads directory verified: {settings.UPLOAD_DIR}") | |
| # Create models directory | |
| os.makedirs(settings.MODELS_DIR, exist_ok=True) | |
| logger.info(f"Models directory verified: {settings.MODELS_DIR}") | |
| # Initialize and Seed database | |
| db = SessionLocal() | |
| try: | |
| init_db(db) | |
| except Exception as e: | |
| logger.error(f"Error seeding database: {e}") | |
| finally: | |
| db.close() | |
| # Health check | |
| def health_check(): | |
| return { | |
| "status": "healthy", | |
| "project": settings.PROJECT_NAME, | |
| "version": "1.0.0" | |
| } | |
| # Include API Routers | |
| app.include_router(auth.router, prefix=f"{settings.API_V1_STR}/auth", tags=["Authentication"]) | |
| app.include_router(employees.router, prefix=f"{settings.API_V1_STR}/employees", tags=["Employee Management"]) | |
| app.include_router(departments.router, prefix=f"{settings.API_V1_STR}/departments", tags=["Department Management"]) | |
| app.include_router(enrollment.router, prefix=f"{settings.API_V1_STR}/enrollment", tags=["Face Enrollment"]) | |
| app.include_router(kiosk.router, prefix=f"{settings.API_V1_STR}/kiosk", tags=["Kiosk Attendance Screen"]) | |
| app.include_router(attendance.router, prefix=f"{settings.API_V1_STR}/attendance", tags=["Attendance Logs & Feeds"]) | |
| app.include_router(reports.router, prefix=f"{settings.API_V1_STR}/reports", tags=["Reporting & Exports"]) | |
| app.include_router(analytics.router, prefix=f"{settings.API_V1_STR}/analytics", tags=["Dashboard Analytics"]) | |
| app.include_router(settings_api.router, prefix=f"{settings.API_V1_STR}/settings", tags=["System Settings"]) | |
| app.include_router(audit.router, prefix=f"{settings.API_V1_STR}/audit", tags=["System Audit Logs"]) | |