"""
Application FastAPI principale
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import HTMLResponse
from app.routers import admission, rh
from app.core.config import settings
# Configuration de l'application
app = FastAPI(
title="API Admission Rush School",
description="API pour gérer les documents d'admission et le module RH",
version="1.0.0",
debug=settings.debug
)
# Configuration CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:3000", "http://localhost:5173", "*"], # À restreindre en production
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Inclure les routers
app.include_router(admission.router, prefix="/api/v1")
app.include_router(rh.router, prefix="/api/v1")
@app.get("/", response_class=HTMLResponse)
async def root():
"""Page d'accueil de l'API"""
return """
API Admission Rush School
📋 Endpoints disponibles
GET /api/v1/admission/candidates
Récupère tous les candidats
GET /api/v1/admission/candidates/{record_id}/documents
Récupère le statut des documents d'un candidat
POST /api/v1/admission/candidates/{record_id}/documents/cv
Upload d'un CV
POST /api/v1/admission/candidates/{record_id}/documents/cin
Upload d'une carte d'identité
POST /api/v1/admission/candidates/{record_id}/documents/lettre-motivation
Upload d'une lettre de motivation
POST /api/v1/admission/candidates/{record_id}/documents/carte-vitale
Upload d'une carte vitale
POST /api/v1/admission/candidates/{record_id}/documents/dernier-diplome
Upload d'un dernier diplôme
GET /api/v1/admission/health
Vérification de santé de l'API
📚 Documentation
📖 Documentation Swagger UI
📘 Documentation ReDoc
ℹ️ Informations
- Taille maximum des fichiers: 10 MB
- Formats autorisés: PDF, DOC, DOCX, JPG, JPEG, PNG
- Base de données: Airtable
"""
@app.get("/api/v1/health")
async def health():
"""Endpoint de santé global"""
return {
"status": "healthy",
"service": "admission-api",
"version": "1.0.0"
}
if __name__ == "__main__":
import uvicorn
uvicorn.run(
"main:app",
host=settings.host,
port=settings.port,
reload=settings.debug
)