4NK_IA_back/README.md
root 5d8ad901d1 Initial commit: Pipeline notarial complet
- Infrastructure complète de traitement de documents notariaux
- API FastAPI d'ingestion et d'orchestration
- Pipelines Celery pour le traitement asynchrone
- Support des formats PDF, JPEG, PNG, TIFF, HEIC
- OCR avec Tesseract et correction lexicale
- Classification automatique des documents avec Ollama
- Extraction de données structurées
- Indexation dans AnythingLLM et OpenSearch
- Système de vérifications et contrôles métier
- Base de données PostgreSQL pour le métier
- Stockage objet avec MinIO
- Base de données graphe Neo4j
- Recherche plein-texte avec OpenSearch
- Supervision avec Prometheus et Grafana
- Scripts d'installation pour Debian
- Documentation complète
- Tests unitaires et de performance
- Service systemd pour le déploiement
- Scripts de déploiement automatisés
2025-09-08 22:05:22 +02:00

300 lines
6.2 KiB
Markdown

# Pipeline Notarial - Infrastructure as Code
## Vue d'ensemble
Ce projet implémente un pipeline complet de traitement de documents notariaux en infrastructure as code. Il permet l'ingestion, le préprocessing, l'OCR, la classification, l'extraction de données, l'indexation et la recherche de documents notariaux.
## Architecture
### Composants principaux
- **host-api** : API FastAPI d'ingestion et d'orchestration
- **worker** : Tâches asynchrones Celery pour le traitement
- **PostgreSQL** : Base de données métier
- **MinIO** : Stockage objet S3-compatible
- **Redis** : Queue de messages et cache
- **Ollama** : Modèles LLM locaux
- **AnythingLLM** : Workspaces et embeddings
- **Neo4j** : Base de données graphe pour les contextes
- **OpenSearch** : Recherche plein-texte
- **Prometheus + Grafana** : Supervision et métriques
### Pipeline de traitement
1. **Préprocessing** : Validation et préparation des documents
2. **OCR** : Extraction de texte avec correction lexicale
3. **Classification** : Identification du type de document
4. **Extraction** : Extraction de données structurées
5. **Indexation** : Indexation dans AnythingLLM et OpenSearch
6. **Vérifications** : Contrôles métier et validation
7. **Finalisation** : Mise à jour de la base de données
## Installation
### Prérequis
- Docker et Docker Compose
- 8 Go de RAM minimum
- 20 Go d'espace disque
### Installation automatique
#### Debian/Ubuntu
```bash
# Installation des dépendances
sudo bash ops/install-debian.sh
# Reconnectez-vous ou exécutez
newgrp docker
```
### Configuration
1. Cloner le dépôt
2. Copier le fichier d'environnement :
```bash
cp infra/.env.example infra/.env
```
3. Modifier les variables dans `infra/.env`
4. Initialiser l'infrastructure :
```bash
make bootstrap
```
## Utilisation
### Démarrage des services
```bash
# Démarrer tous les services
make up
# Vérifier le statut
make ps
# Voir les logs
make logs
```
### Import d'un document
```bash
curl -F "file=@mon_document.pdf" \
-F "id_dossier=D-2025-001" \
-F "source=upload" \
-F "etude_id=E-001" \
-F "utilisateur_id=U-123" \
http://localhost:8000/api/import
```
### Accès aux interfaces
- **API** : http://localhost:8000/api
- **AnythingLLM** : http://localhost:3001
- **Grafana** : http://localhost:3000
- **MinIO Console** : http://localhost:9001
- **Neo4j Browser** : http://localhost:7474
- **OpenSearch** : http://localhost:9200
## Configuration
### Variables d'environnement
Les principales variables à configurer dans `infra/.env` :
```bash
# Base de données
POSTGRES_USER=notariat
POSTGRES_PASSWORD=notariat_pwd
POSTGRES_DB=notariat
# MinIO
MINIO_ROOT_USER=minio
MINIO_ROOT_PASSWORD=minio_pwd
MINIO_BUCKET=ingest
# AnythingLLM
ANYLLM_API_KEY=change_me
ANYLLM_BASE_URL=http://anythingllm:3001
# Ollama
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_MODELS=llama3:8b,mistral:7b
# Neo4j
NEO4J_AUTH=neo4j/neo4j_pwd
# OpenSearch
OPENSEARCH_PASSWORD=opensearch_pwd
```
### Modèles Ollama
Les modèles sont téléchargés automatiquement au bootstrap :
- llama3:8b (recommandé)
- mistral:7b (alternative)
## API
### Endpoints principaux
- `POST /api/import` : Import d'un document
- `GET /api/documents/{id}` : Récupération d'un document
- `GET /api/documents` : Liste des documents
- `GET /api/health` : Santé de l'API
- `GET /api/admin/stats` : Statistiques
### Formats supportés
- PDF (avec ou sans texte)
- Images : JPEG, PNG, TIFF, HEIC
## Types de documents supportés
- Actes de vente immobilière
- Actes d'achat immobilière
- Donations
- Testaments
- Successions
- Contrats de mariage
- Procurations
- Attestations
- Factures notariales
## Supervision
### Métriques Prometheus
- Taux d'erreur par étape
- Latence de traitement
- Qualité OCR (CER/WER)
- Précision de classification
- Performance d'extraction
### Dashboards Grafana
- Vue d'ensemble du pipeline
- Métriques de performance
- Qualité des traitements
- Utilisation des ressources
## Développement
### Structure du projet
```
notariat-pipeline/
├── docker/ # Dockerfiles
├── infra/ # Docker Compose et configuration
├── ops/ # Scripts d'installation et seeds
├── services/ # Code applicatif
│ ├── host_api/ # API FastAPI
│ ├── worker/ # Pipelines Celery
│ └── charts/ # Dashboards Grafana
└── tests/ # Tests automatisés
```
### Tests
```bash
# Tests unitaires
pytest tests/
# Tests d'intégration
pytest tests/integration/
# Tests de performance
locust -f tests/performance/locustfile.py
```
## Sécurité
### Chiffrement
- Chiffrement des volumes Docker
- Chiffrement applicatif des données sensibles
### Cloisonnement
- Séparation par étude via workspaces
- Index nommés par étude
- Labels Neo4j par contexte
### Audit
- Journaux structurés JSON
- Traçabilité complète des traitements
- Horodatage et versions
## Maintenance
### Sauvegarde
```bash
# Sauvegarde de la base de données
docker exec postgres pg_dump -U notariat notariat > backup.sql
# Sauvegarde des volumes
docker run --rm -v notariat_pgdata:/data -v $(pwd):/backup alpine tar czf /backup/pgdata.tar.gz -C /data .
```
### Mise à jour
```bash
# Mise à jour des images
make build
# Redémarrage des services
make restart
```
## Dépannage
### Logs
```bash
# Logs de tous les services
make logs
# Logs d'un service spécifique
docker compose logs -f host-api
```
### Vérification de santé
```bash
# Statut des services
make status
# Test de connectivité
curl http://localhost:8000/api/health
```
### Problèmes courants
1. **Modèles Ollama non téléchargés** : Vérifier la connectivité et relancer le bootstrap
2. **Erreurs MinIO** : Vérifier les credentials et la connectivité
3. **Problèmes de mémoire** : Augmenter les limites Docker
4. **Erreurs OCR** : Vérifier l'installation de Tesseract
## Contribution
1. Fork le projet
2. Créer une branche feature
3. Commiter les changements
4. Pousser vers la branche
5. Ouvrir une Pull Request
## Licence
MIT License - voir le fichier LICENSE pour plus de détails.
## Support
Pour toute question ou problème :
- Ouvrir une issue sur GitHub
- Consulter la documentation
- Contacter l'équipe de développement