Stack Production — Intégrations¶
Updo Backend intègre un ensemble de bibliothèques tierces pour une stack production complète.
CORS (django-cors-headers)¶
Gestion des en-têtes Cross-Origin Resource Sharing pour les frontends SPA.
# settings.py (via .env)
CORS_ALLOWED_ORIGINS = ["http://localhost:3000", "http://localhost:5173"]
CORS_ALLOW_CREDENTIALS = True
Le middleware CorsMiddleware est positionné avant SessionMiddleware
dans la pile middleware.
OpenAPI / Swagger (drf-spectacular)¶
Documentation API auto-générée depuis les ViewSets DRF.
URL |
Description |
|---|---|
|
Téléchargement du schéma OpenAPI 3.0 (YAML) |
|
Interface Swagger UI interactive |
|
Documentation ReDoc |
Configuration dans SPECTACULAR_SETTINGS du settings.py.
Throttling / Rate Limiting¶
Protection contre les abus via les classes de throttling DRF intégrées.
REST_FRAMEWORK = {
"DEFAULT_THROTTLE_CLASSES": [
"rest_framework.throttling.AnonRateThrottle",
"rest_framework.throttling.UserRateThrottle",
],
"DEFAULT_THROTTLE_RATES": {
"anon": "100/hour",
"user": "1000/hour",
},
}
Anonymes : 100 requêtes/heure
Authentifiés : 1000 requêtes/heure
Audit Trail (django-auditlog)¶
Suivi automatique de toutes les modifications de modèles Django.
INSTALLED_APPS = [..., "auditlog"]
MIDDLEWARE = [..., "auditlog.middleware.AuditlogMiddleware"]
AUDITLOG_INCLUDE_ALL_MODELS = True
L’historique des modifications est accessible via l’admin Django
(table auditlog_logentry). Chaque entrée contient :
Modèle et instance modifiés
Type d’action (create, update, delete)
Champs modifiés (ancien/nouveau)
Utilisateur ayant effectué la modification
Timestamp
Import/Export de données (django-import-export)¶
Les données de référence (Currency, Country, Department, UoM) peuvent être importées/exportées via l’admin Django en CSV, XLSX, JSON.
# Exemple d'import programmatique
from src.share_kernel.admin import CurrencyResource
resource = CurrencyResource()
dataset = resource.export()
print(dataset.csv)
L’admin de chaque modèle de référence hérite de
TranslatableAdmin + ImportExportModelAdmin.
Sentry (Error Tracking)¶
Intégration Sentry pour le suivi des erreurs en production.
Activé uniquement si SENTRY_DSN est défini dans .env.
SENTRY_DSN=https://xxxxx@o12345.ingest.sentry.io/12345
Configuration :
traces_sample_rate=0.1— 10% des transactions tracéesprofiles_sample_rate=0.1— 10% des profils CPUsend_default_pii=False— pas de données personnelles envoyées
Pre-commit Hooks¶
Le fichier .pre-commit-config.yaml configure les hooks suivants :
pre-commit-hooks — trailing whitespace, EOF, YAML, merge conflicts
ruff — lint + auto-fix
ruff-format — formatage du code
mypy — vérification de types statique
Installation :
pip install pre-commit
pre-commit install
Les hooks s’exécutent automatiquement avant chaque git commit.