Aller au contenu principal

Export Templates

Système de templates pré-configurés pour réutiliser des configurations d'export avec champs sélectionnés.

Vue d'ensemble

Les templates d'export permettent de :

  • Sauvegarder des configurations d'export réutilisables
  • Définir des templates par défaut par entité/format
  • Réutiliser des sélections de champs personnalisées
  • Simplifier la création d'exports planifiés

Architecture

Backend

Table : export_templates

Stocke les templates avec :

  • Nom et description
  • Entité et format
  • Champs sélectionnés
  • Flag is_default pour les templates par défaut

Service : ExportTemplatesService

  • Fichier : backend/src/export-templates/export-templates.service.ts
  • Responsabilités :
    • Gestion des templates (CRUD)
    • Récupération des templates par défaut
    • Gestion de l'unicité des templates par défaut

API Endpoints

Liste des templates

Endpoint: GET /api/export-templates

Response:

[
{
"id": "uuid",
"owner_id": "uuid",
"name": "Basic Contact Export",
"description": "Export minimal avec nom et email",
"entity": "contacts",
"format": "csv",
"selected_fields": ["first_name", "last_name", "email"],
"is_default": true,
"created_at": "2025-01-10T10:00:00Z",
"updated_at": "2025-01-10T10:00:00Z"
}
]

Récupérer un template par défaut

Endpoint: GET /api/export-templates/default?entity=contacts&format=csv

Response: Template par défaut pour l'entité et le format spécifiés, ou null si aucun template par défaut n'existe.

Créer un template

Endpoint: POST /api/export-templates

Request Body:

{
"name": "Basic Contact Export",
"description": "Export minimal avec nom et email",
"entity": "contacts",
"format": "csv",
"selected_fields": ["first_name", "last_name", "email"],
"is_default": true
}

Response: Template créé

Note : Si is_default est true, tous les autres templates par défaut pour la même entité/format seront automatiquement désactivés.

Mettre à jour un template

Endpoint: PUT /api/export-templates/:id

Request Body: Même structure que la création (tous les champs sont optionnels)

Note : Si vous définissez is_default à true, les autres templates par défaut pour la même entité/format seront automatiquement désactivés.

Supprimer un template

Endpoint: DELETE /api/export-templates/:id

Utilisation avec les Exports

Utiliser un template dans un export manuel

# Récupérer le template par défaut
GET /api/export-templates/default?entity=contacts&format=csv

# Utiliser les champs du template dans l'export
GET /api/export?entity=contacts&format=csv&fields=first_name,last_name,email

Utiliser un template dans un export planifié

{
"entity": "contacts",
"format": "csv",
"export_template_id": "uuid-of-template",
"scheduled_at": "2025-01-15T10:00:00Z"
}

Le template fournira automatiquement les selected_fields et le format.

Champs Disponibles par Entité

Sessions

  • id, title, status, start_date, end_date, location, user_rate_id, notes, created_at, updated_at

Contacts

  • id, first_name, last_name, email, phone_number, street, city, zipcode, country, created_at, updated_at

Quotes

  • id, title, amount, status, valid_until, description, created_at, updated_at

Invoices

  • id, title, amount, status, due_date, paid_at, description, created_at, updated_at

Exemples d'Utilisation

Créer un template pour export minimal de contacts

curl -X POST "http://localhost:3000/api/export-templates" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Minimal Contact Export",
"description": "Export avec seulement nom et email",
"entity": "contacts",
"format": "csv",
"selected_fields": ["first_name", "last_name", "email"],
"is_default": true
}'

Créer un template pour export complet de sessions

curl -X POST "http://localhost:3000/api/export-templates" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Complete Session Export",
"description": "Export complet de toutes les informations de session",
"entity": "sessions",
"format": "excel",
"selected_fields": [
"id", "title", "status", "start_date", "end_date",
"location", "user_rate_id", "notes", "created_at", "updated_at"
],
"is_default": false
}'

Utiliser un template dans un export planifié

curl -X POST "http://localhost:3000/api/scheduled-exports" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"entity": "contacts",
"format": "csv",
"export_template_id": "uuid-of-template",
"scheduled_at": "2025-01-15T10:00:00Z",
"recurrence_pattern": {
"frequency": "weekly",
"interval": 1
},
"send_email": true,
"email_recipient": "user@example.com"
}'

Templates par Défaut

Un seul template peut être défini comme "par défaut" pour chaque combinaison entité/format. Quand vous créez ou mettez à jour un template avec is_default: true :

  1. Tous les autres templates par défaut pour la même entité/format sont automatiquement désactivés
  2. Le nouveau template devient le template par défaut
  3. Il sera automatiquement utilisé si aucun template n'est spécifié

Bonnes Pratiques

  1. Nommage : Utilisez des noms descriptifs pour vos templates
  2. Description : Ajoutez une description pour expliquer l'usage du template
  3. Templates par défaut : Définissez un template par défaut pour chaque entité/format que vous utilisez fréquemment
  4. Réutilisation : Créez des templates pour les configurations d'export que vous utilisez régulièrement

Fichiers

  • backend/src/export-templates/export-templates.service.ts - Service principal
  • backend/src/export-templates/export-templates-crud.service.ts - CRUD operations
  • backend/src/export-templates/export-templates.controller.ts - Endpoints REST
  • infra/liquibase/changes/0140_create_export_templates/ - Migration

Voir aussi

  • Export System - Documentation du système d'export
  • Scheduled Exports - Documentation des exports planifiés
  • Import System (documentation technique backend) - Documentation du système d'import