ncantu 6f64ae157f feat: Implémentation complète des pipelines de traitement et API notariale
-  Pipelines de traitement complets (preprocess, ocr, classify, extract, index, checks, finalize)
-  Worker Celery avec orchestration des pipelines
-  API complète avec base de données SQLAlchemy
-  Modèles de données complets (Document, Entity, Verification, etc.)
-  Interface web avec correction des erreurs JavaScript
-  Configuration Docker Compose complète
-  Documentation exhaustive et tests
-  Gestion d'erreurs robuste et mode dégradé
-  Système prêt pour la production

Progression: 100% - Toutes les fonctionnalités critiques implémentées
2025-09-09 04:56:37 +02:00

70 lines
2.2 KiB
Python

"""
Configuration de la base de données
"""
import os
from sqlalchemy import create_engine, Column, String, Integer, DateTime, Text, JSON, Boolean, Float
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from .models import Base
# Configuration de la base de données
DATABASE_URL = os.getenv(
"DATABASE_URL",
"postgresql+psycopg://notariat:notariat_pwd@localhost:5432/notariat"
)
# Création du moteur de base de données
engine = create_engine(DATABASE_URL, echo=False)
# Session factory
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def get_db():
"""Dependency pour obtenir une session de base de données"""
db = SessionLocal()
try:
yield db
finally:
db.close()
def init_db():
"""Initialise la base de données en créant toutes les tables"""
try:
Base.metadata.create_all(bind=engine)
print("✅ Base de données initialisée avec succès")
return True
except Exception as e:
print(f"❌ Erreur lors de l'initialisation de la base de données: {e}")
return False
def check_db_connection():
"""Vérifie la connexion à la base de données"""
try:
with engine.connect() as connection:
connection.execute("SELECT 1")
print("✅ Connexion à la base de données réussie")
return True
except Exception as e:
print(f"❌ Erreur de connexion à la base de données: {e}")
return False
def get_db_stats():
"""Retourne les statistiques de la base de données"""
try:
from .models import Document, Entity, Verification, ProcessingLog
db = SessionLocal()
try:
stats = {
"documents": db.query(Document).count(),
"entities": db.query(Entity).count(),
"verifications": db.query(Verification).count(),
"processing_logs": db.query(ProcessingLog).count()
}
return stats
finally:
db.close()
except Exception as e:
print(f"❌ Erreur lors de la récupération des statistiques: {e}")
return {"error": str(e)}