=================================== 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. .. code-block:: python # 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. .. list-table:: :header-rows: 1 * - URL - Description * - ``/api/schema/`` - Téléchargement du schéma OpenAPI 3.0 (YAML) * - ``/api/docs/`` - Interface Swagger UI interactive * - ``/api/redoc/`` - 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. .. code-block:: python 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. .. code-block:: python 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. .. code-block:: python # 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``. .. code-block:: bash SENTRY_DSN=https://xxxxx@o12345.ingest.sentry.io/12345 Configuration : - ``traces_sample_rate=0.1`` — 10% des transactions tracées - ``profiles_sample_rate=0.1`` — 10% des profils CPU - ``send_default_pii=False`` — pas de données personnelles envoyées Pre-commit Hooks ================= Le fichier ``.pre-commit-config.yaml`` configure les hooks suivants : 1. **pre-commit-hooks** — trailing whitespace, EOF, YAML, merge conflicts 2. **ruff** — lint + auto-fix 3. **ruff-format** — formatage du code 4. **mypy** — vérification de types statique Installation : .. code-block:: bash pip install pre-commit pre-commit install Les hooks s'exécutent automatiquement avant chaque ``git commit``.