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_defaultpour 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 :
- Tous les autres templates par défaut pour la même entité/format sont automatiquement désactivés
- Le nouveau template devient le template par défaut
- Il sera automatiquement utilisé si aucun template n'est spécifié
Bonnes Pratiques
- Nommage : Utilisez des noms descriptifs pour vos templates
- Description : Ajoutez une description pour expliquer l'usage du template
- Templates par défaut : Définissez un template par défaut pour chaque entité/format que vous utilisez fréquemment
- 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 principalbackend/src/export-templates/export-templates-crud.service.ts- CRUD operationsbackend/src/export-templates/export-templates.controller.ts- Endpoints RESTinfra/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