Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

PAC Report Generator

Un script Python pour générer un rapport PDF complet à partir d'un fichier XML TelePAC (Politique Agricole Commune française).

Fonctionnalités

Données extraites

  • Producteur : Numéro PACAGE, campagne, fichier XSD
  • Demandeur : Exploitation, SIRET, email, certificat environnemental
  • RPG (Registre Parcellaire Graphique) :
    • Ilots avec numéros, communes, géométries
    • Parcelles avec cultures, surfaces, statut bio
    • Gestion des codes culture avec mapping vers libellés
  • SNA (Surfaces Non Agricoles) :
    • Catégories et types avec libellés
    • Surfaces, largeurs, dates
    • Intersections avec ilots et parcelles
  • ZDH (Zones de Densité de Haies) :
    • Numéros, densités de végétation
    • Géométries
  • Demandes d'aides :
    • Pilier 1 (aides découplées, écorégime, légumineuses, etc.)
    • Autres demandes spécifiques
  • Pièces jointes : Liste avec codes, types et intitulés
  • Autres obligations : BCAE, transmission de données, ISN

Statistiques calculées

  • Nombre total d'ilots et de parcelles
  • Surface totale admissible
  • Surface en agriculture biologique avec pourcentage
  • Répartition des cultures par surface et pourcentage
  • Nombre et surface totale des SNA
  • Nombre de ZDH

Géométries GML

  • Parsing des polygones (gml:Polygon)
  • Parsing des points (gml:Point)
  • Extraction des coordonnées
  • Comptage des points pour les polygones

Formats de sortie

Le script génère par défaut les deux formats :

Format Fichier Nécessite Description
Markdown rapport_pac_XXXX_YYYYMMDD_HHMMSS.md Toujours Rapport au format Markdown, lisible et modifiable
PDF rapport_pac_XXXX_YYYYMMDD_HHMMSS.pdf WeasyPrint Rapport mis en page pour impression ou partage

Le format PDF utilise les styles CSS définis dans templates/pdf_style.css pour une mise en page professionnelle avec :

  • En-tête et pied de page
  • Tableaux colorés
  • Titres stylisés
  • Polices lisibles

Personnalisation du PDF : Modifiez le fichier templates/pdf_style.css pour adapter les couleurs, polices et mise en page du rapport PDF.

Exemple de sortie

Le rapport généré contient :

# Rapport PAC 20XX - 021162297

> Généré le : 20XX-07-25 15:33:06
> Source : Echanges-producteur-export-20XX-V1

---

## [RESUME] Résumé

### Identification
- **Numéro PACAGE** : 021162297
- **Campagne** : Courante
- **Exploitation** : SCEA ABC
- **SIRET** : 65f4654654XXXX
- **Email** : xxxxxxx.xxxxxxx@xxxxxx.xx

### Statistiques globales
- **Nombre d'ilots** : 9
- **Nombre de parcelles** : 10
- **Surface totale admissible** : 4886.00 ha
- **Surface en agriculture biologique** : 4886.00 ha (100.0%)
- **Nombre de SNA** : 47
- **Surface SNA totale** : 98.20 ha
- **Nombre de ZDH** : 4

Utilisation

Méthode recommandée : Utilisez Docker pour éviter toute configuration manuelle.

Avec le script principal

# Génération d'un rapport avec les paramètres par défaut (MD + PDF)
python pac_report_generator.py ./input/Dossier-PAC-20XX_dossier_XXXXXXXXXX.xml

# Générer uniquement en Markdown (pas de PDF)
python pac_report_generator.py ./input/Dossier-PAC-20XX_dossier_XXXXXXXXXX.xml --no-pdf

# Générer uniquement en PDF (nécessite weasyprint)
python pac_report_generator.py ./input/Dossier-PAC-20XX_dossier_XXXXXXXXXX.xml --pdf-only

# Avec options personnalisées
python pac_report_generator.py ./input/Dossier-PAC-20XX_dossier_XXXXXXXXXX.xml \
    --output ./rapports \
    --config ./config/my_crop_codes.json \
    --template ./templates/my_template.md

Options disponibles

  • --output, -o : Dossier de sortie (par défaut: output)
  • --config, -c : Chemin vers le fichier de configuration (par défaut: config/crop_codes.json)
  • --template, -t : Chemin vers le template Markdown (par défaut: templates/report_template.md)
  • --no-pdf : Désactive la génération du PDF (génère uniquement Markdown)
  • --pdf-only : Génère uniquement le fichier PDF (pas de Markdown)

Comportement par défaut : Les deux formats (Markdown et PDF) sont générés, sauf si WeasyPrint n'est pas installé ou n'a pas ses dépendances système.

Exécution avec Docker

Pour une exécution simplifiée avec toutes les dépendances préinstallées, utilisez Docker.

Prérequis

Construction et exécution

# Construire l'image
docker build -t pac-report-generator -f .devcontainer/Dockerfile .

# Générer un rapport
docker run -it --rm \
    -v ${PWD}:/workspace \
    -w /workspace \
    pac-report-generator \
    python pac_report_generator.py input/votre_fichier.xml

# Avec options
docker run -it --rm \
    -v ${PWD}:/workspace \
    -w /workspace \
    pac-report-generator \
    python pac_report_generator.py input/votre_fichier.xml --output ./rapports --no-pdf

Pour le développement avec VS Code : Consultez .devcontainer/README.md pour configurer l'environnement de développement complet avec l'extension Remote - Containers.


Informations techniques

Structure du projet

PAC/
├── PACReportGenerator.py    # Module principal avec la classe PACReportGenerator
├── pac_report_generator.py  # Script principal CLI
├── pac_to_md.py            # Script simplifié (ancienne version)
├── config/
│   └── crop_codes.json     # Configuration des codes culture, SNA, ZDH
├── templates/
│   ├── report_template.md  # Template Jinja2 pour le rapport Markdown
│   └── pdf_style.css       # Styles CSS pour la génération PDF
├── input/
│   └── Dossier-PAC-20XX_dossier_XXXXXXXXXX.xml  # Fichier exemple
├── output/
│   ├── rapport_pac_*.md   # Rapports Markdown générés
│   └── rapport_pac_*.pdf   # Rapports PDF générés (si activé)
└── README.md

Prérequis

Pour une installation locale :

  • Python 3.7+
  • Bibliothèques requises : lxml, jinja2, weasyprint

Installation des dépendances

pip install -r requirements.txt

Configuration

Le fichier config/crop_codes.json contient les mappings pour :

  • Codes culture (ex: FVL → Féverole)
  • Catégories SNA (ex: AT → Autre, VG → Végétal)
  • Types SNA (ex: V1 → Végétal type 1)
  • Densités de végétation (ex: MOINS_10 → Moins de 10%)

Template Markdown

Le template templates/report_template.md utilise Jinja2 pour générer le rapport. Il contient les sections :

  • Résumé avec identification et statistiques
  • Répartition des cultures (tableau)
  • Détail des ilots et parcelles
  • Surfaces Non Agricoles (SNA)
  • Zones de Densité de Haies (ZDH)
  • Demandes d'aides
  • Pièces jointes
  • Autres obligations

Développement

Architecture

Le projet suit une architecture modulaire :

  • PACReportGenerator : Classe principale qui gère tout le parsing et la génération
  • config/ : Fichiers de configuration
  • templates/ : Templates Jinja2
  • output/ : Rapports générés

Extension

Pour ajouter de nouveaux codes culture ou types SNA, modifiez simplement le fichier config/crop_codes.json.

Problèmes connus et solutions

Encodage Windows

Sur Windows, l'affichage des caractères accentués dans la console peut poser problème. Le rapport généré est cependant correctement encodé en UTF-8.

Chemins de fichiers

Utilisez des chemins relatifs ou absolus avec des barres obliques simples (/).

Contribution

Les contributions sont les bienvenues. Pour toute suggestion ou bug, créez une issue ou une pull request.

Licence

Ce projet est sous licence MIT.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages