Architecture
Architecture en couches suivant le flux : User > facade > models > generated models > client > api
- Façades de domaine (
fonds/
) : API de haut niveau par fonds documentaire- JURI (jurisprudence) - implémenté
- LODA, CODE, JORF - à venir
- Modèles de domaine (
models/
) : Structures de données métier - Modèles générés (
models/generated/
) : Modèles pour l'API - Client API (
client.py
) : Communication avec l'API Legifrance
Pourquoi cette architecture ?
La séparation entre fonds/juri.py
et models/juri/
suit un principe fondamental : séparer l'interface utilisateur de la logique technique.
-
fonds/
: Façade de domaine- Offre une API stable et intuitive pour les développeurs et juristes
- Masque la complexité technique de l'API Legifrance
- Fournit des objets métier enrichis avec des méthodes utiles
- Protège le code client des changements dans l'API sous-jacente
-
models/
: Modèles de données- Définit la structure précise des données juridiques
- Assure la validation via Pydantic (typage fort, contraintes)
- Gère la conversion bidirectionnelle avec les modèles d'API
- Organise le code par préoccupation technique
Cette architecture en couches permet un flux de données clair (User > facade > models > generated models > client > api) tout en offrant une séparation des responsabilités qui facilite la maintenance et l'évolution du code.
Diagrammes C4
Diagrammes basés sur C4 Model - du contexte global aux composants détaillés.
Niveau 1 : Diagramme de contexte système
Niveau 2 : Diagramme des conteneurs
Niveau 3 : Diagramme des composants
Flux de données
flowchart TD
dev[Développeur]
facade[Façade fonds/juri.py]
models[Modèles models/juri/]
gen[Modèles générés models/generated/]
client[LegifranceClient]
api[API Legifrance]
dev -->|"[1] Appelle"| facade
facade -->|"[2] Utilise"| models
models -->|"[3] to_api_model"| gen
gen -->|"[4] Utilisé par"| client
client -->|"[5] Envoie requête"| api
api -->|"[6] Réponse"| client
client -->|"[7] Transmet"| gen
gen -->|"[8] from_api_model"| models
models -->|"[9] Traitement"| facade
facade -->|"[10] Objets enrichis"| dev
classDef external fill:#999,stroke:#333,stroke-width:2px
classDef core fill:#9cf,stroke:#333,stroke-width:2px
class dev,api external
class facade,models,gen,client core
Avantages clés
- Stabilité : Interface publique indépendante des changements d'API
- Modèles métier : Fonctionnalités spécifiques au domaine juridique
- Validation robuste : Typage et validation via Pydantic
- Structure intuitive : Organisation par fonds documentaires juridiques