Trier
Objectif
Réordonner les lignes produites par une étape antérieure du pipeline selon une colonne choisie, en ordre croissant ou décroissant, et tronquer éventuellement le résultat aux N premières lignes. Sort est interne au pipeline (voir /docs/fr/concepts/pipeline-orchestration) : il consomme la sortie du nœud prédécesseur et émet les mêmes colonnes dans un nouvel ordre. Un usage courant : ordonner une liste fraîchement scrapée par completeness décroissant et garder les 200 premières avant de transmettre le résultat à une étape de recherche d'emails ou de prospection. Sort n'ajoute, ne retire ni ne réécrit jamais de colonnes — la troncature est le seul changement de contenu qu'il puisse appliquer.
Entrées
La configuration est attachée au nœud de pipeline. Il n'y a pas de corps de requête autonome.
| Champ | Type | Requis | Défaut | Description |
|---|---|---|---|---|
sort_by |
chaîne (enum) | oui | completeness |
Colonne servant de clé de tri. |
direction |
"asc" | "desc" |
oui | desc |
Sens du tri. |
top_n |
entier | null |
non | null |
Garder uniquement les top_n premières lignes après tri. Min 1. |
Valeurs acceptées pour sort_by :
| Valeur | Signification |
|---|---|
completeness |
Taux global de remplissage des champs d'enrichissement d'une ligne. |
note |
Note en étoiles de l'établissement (Google Maps). |
nb_avis |
Nombre d'avis sur l'établissement. |
email_quality |
Score de qualité de l'email extrait (personnel > rôle). |
top_n doit être un entier positif ou null. Une valeur null conserve toutes les lignes.
Sorties
Même schéma que le nœud prédécesseur — sort est déclaré passthrough dans le graphe du pipeline. Le nœud aval voit les mêmes colonnes qu'il aurait vues sans l'étape de tri, simplement dans un ordre différent et éventuellement avec moins de lignes.
| Propriété | Comportement |
|---|---|
| Colonnes | Identiques à l'entrée, octet pour octet. |
| Ordre des lignes | Déterminé par sort_by et direction. |
| Nombre de lignes | min(input_count, top_n) si top_n est défini, sinon égal à l'entrée. |
| Type de pipeline | Identique à la source amont (résolu transitivement à travers sort/filter). |
Cycle de vie
Cycle de vie de job standard — voir /docs/fr/concepts/jobs-lifecycle. Une étape de tri est créée automatiquement par le runner de pipeline lorsque le prédécesseur atteint done, et est traitée comme une étape structurelle de pipeline plutôt que comme une action facturable.
Pipeline
| Propriété | Valeur |
|---|---|
| Catégorie | process |
| Pipelinable | oui |
| Needs | aucun (accepte toute entrée) |
| Produces | aucun (sortie passthrough) |
| Type d'entrée pipeline | any_pois |
| Type de sortie pipeline | passthrough |
Comme le type de sortie est passthrough, le type effectif en aval est hérité du prédécesseur non-passthrough le plus proche. Un tri placé après scrap expose le même contrat aval que scrap exposerait seul.
Endpoints
Sort n'a pas d'endpoint REST public — il est interne au pipeline (voir /docs/fr/concepts/pipeline-orchestration) et créé exclusivement par le runner de pipeline lorsque le nœud prédécesseur termine, via l'aide interne create_pipeline_internal_job(job_type="sort", …).
Pour utiliser sort, le définir comme un nœud dans un pipeline créé via l'API pipelines :
| Méthode | Chemin | Rôle |
|---|---|---|
| POST | /api/pipelines |
Créer un pipeline contenant un nœud sort. |
| GET | /api/pipelines/{id} |
Inspecter la configuration et les statuts. |
Une entrée de nœud pour sort ressemble à :
{
"type": "sort",
"config": {
"sort_by": "completeness",
"direction": "desc",
"top_n": 200
}
}
Le runner lit config à l'exécution et émet le CSV trié dans le répertoire de job du nœud.
Limites
Limites globales — voir /docs/fr/concepts/limits. Sort n'est pas facturé (coût quota 0), tourne dans le pool parallèle standard, et sa taille d'entrée maximale est bornée par la sortie du prédécesseur, pas par sort lui-même.
Erreurs
| Condition | Résultat |
|---|---|
sort_by référence une colonne inconnue |
Le nœud passe à failed ; les nœuds aval restent pending. |
direction n'est pas asc ou desc |
Le nœud passe à failed avec une erreur de validation. |
top_n vaut 0 ou est négatif |
Rejeté à la création du pipeline ; l'API renvoie 400. |
| Entrée vide | Le nœud termine en done avec un CSV de sortie vide. |
Prédécesseur n'ayant pas atteint done |
Sort reste pending ; il n'est jamais planifié tant que le parent n'a pas fini. |