|
import config |
|
from fastapi import FastAPI |
|
from fastapi.middleware.cors import CORSMiddleware |
|
from fastapi.staticfiles import StaticFiles |
|
import uvicorn |
|
import argparse |
|
|
|
from database import init_mongodb |
|
import auth, chat, conversations, admin |
|
|
|
app = FastAPI(title="Medic.ial", description="Assistant IA spécialisé sur la maladie de la schizophrénie") |
|
|
|
|
|
app.add_middleware( |
|
CORSMiddleware, |
|
allow_origins=config.CORS_ORIGINS, |
|
allow_credentials=True, |
|
allow_methods=["*"], |
|
allow_headers=["*"], |
|
) |
|
|
|
init_mongodb() |
|
|
|
app.include_router(auth.router) |
|
app.include_router(chat.router) |
|
app.include_router(conversations.router) |
|
app.include_router(admin.router) |
|
|
|
|
|
|
|
app.mount("/", StaticFiles(directory="static", html=True), name="static") |
|
''' |
|
@app.get("/") |
|
async def root(): |
|
"""Page d'accueil de l'API Medic.ial.""" |
|
return { |
|
"app_name": "Medic.ial - Assistant IA sur la schizophrénie", |
|
"version": "1.0.0", |
|
"api_endpoints": [ |
|
{"path": "/api/login", "method": "POST", "description": "Connexion utilisateur"}, |
|
{"path": "/api/register", "method": "POST", "description": "Création d'un compte"}, |
|
{"path": "/api/chat", "method": "POST", "description": "Poser une question à l'assistant"}, |
|
{"path": "/api/conversations", "method": "GET", "description": "Liste des conversations"}, |
|
{"path": "/api/conversations/{id}/messages", "method": "GET", "description": "Messages d'une conversation"} |
|
], |
|
"documentation": "/docs", |
|
"status": "En ligne", |
|
"environment": "Développement" |
|
} |
|
''' |
|
if __name__ == "__main__": |
|
parser = argparse.ArgumentParser() |
|
parser.add_argument("--host", default=config.HOST) |
|
parser.add_argument("--port", type=int, default=config.PORT) |
|
parser.add_argument("--reload", action="store_true", default=True) |
|
parser.add_argument("--ssl_certfile") |
|
parser.add_argument("--ssl_keyfile") |
|
args = parser.parse_args() |
|
|
|
uvicorn.run( |
|
"app:app", |
|
host=args.host, |
|
port=args.port, |
|
reload=args.reload, |
|
ssl_certfile=args.ssl_certfile, |
|
ssl_keyfile=args.ssl_keyfile, |
|
) |