
- ✅ 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
70 lines
2.2 KiB
Python
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)} |