--- title: "Séquençage des tâches de picking TK → PS" tags: [picking, séquençage, transstockeur, événement, workflow, algorithme] status: draft standard_ref: concepts/picking.md jira_refs: [LIM-84, LIM-61] confluence_refs: [] sources: ["LIM-84 LOT2.2 [PICKING] Séquençage des tâches de picking TK PS.md", "Logique combinatoire picking - TK vers PS - V1.1.md", "REU PICKING SEQUENCAGE 11-05-2026 - Analyse comparative notes + AF + devops.md"] last_updated: 2026-05-12 author: Arthur --- # Séquençage des tâches de picking TK → PS > **Résumé** : algorithme événementiel (V1.1) qui ordonne les tâches > de picking depuis les transstockeurs (TK) vers les postes de sortie > (PS). Il écrit les numéros de séquence `Line.CstAtt` sur chaque > tâche et contrôle le flag `OS.CstAtt` pour autoriser le > stacker_crane. > **Standard EasyWMS** : → voir [Picking](../../concepts/picking.md) ## Déclenchement L'algorithme est déclenché sur **deux événements** : - **TaskCreatedEvent** — nouvelle tâche de picking créée (MINI JOB LIM-75 ou réassignation). Condition : tâche type PICKING et OS statut Released - **OutboundOrderReleasedEvent** — OS passe en Released (lancement ou relance après arrêt) ## Process principal 1. `OS.CstAtt ← false` (verrouille le stacker_crane) 2. Récupérer toutes les tâches de picking de l'OS 3. Filtrer : tâches **en attente** uniquement (en cours = intouchables) 4. Trier selon les 5 critères ci-dessous 5. Écrire les séquences `Line.CstAtt` 6. `OS.CstAtt ← true` (déverrouille le stacker_crane) ## Contraintes amont (constitution palettes filles) **C1. Palettes les plus complètes possible** — seuil ~95%. Calcul en pro rata Bag/pal : chaque sac = `1/Bag_pal` de son lot. Additif, gère nativement les multi-lots. **C2. Ne pas splitter les lignes de stock** — prioritaire sur les règles de tri. Regrouper la ligne complète quitte à décaler le maïs. | Contrainte | Valeur | |------------|--------| | Poids max palette | **1 250 kg** | | Hauteur max | 1,90 m | | Gerbage | Interdit | | Mélange espèces | Autorisé | | Traitement commercial | **Désactivé** (V1.1) | ## Les 5 critères de tri (V1.1) ``` tâches.trier_par( (1) type_picking ASC // NÉGATIF (0) avant DIRECT (1) (2) espèce_maïs ASC // MAÏS (0) avant autres (1) (3) quantité_espèce DESC // espèce la + volumineuse (4) poids_article DESC // article le + lourd en base (5) palette_source // regroupement par palette ) ``` ### Critère 1 — Picking négatif en premier Prioritaire sur tout, y compris Maïs first. Condition cumulative (V1.1) : % quantité > seuil fiche article (défaut 55%) **ET** poids unitaire sac ≥ 7 kg. ### Critère 2 — Espèce Maïs en premier Le maïs est lourd/stable → base de palette fille. ### Critère 3 — Espèce la plus volumineuse Espèce avec la plus grande quantité totale de sacs dans l'OS. ### Critère 4 — Article le plus lourd en base Les semences essais (légères) se retrouvent naturellement en haut. ### Critère 5 — Regroupement par palette source L'opérateur enchaîne toutes les tâches d'une palette avant de la libérer. ## Écriture des séquences (Line.CstAtt) Deux tâches **interchangeables** reçoivent le **même numéro** de séquence (ex-aequo), laissant au stacker_crane la liberté d'optimiser. Interchangeables si : même palette source, OU tous les critères de tri identiques. ## Détermination picking négatif (MINI JOB LIM-75) ``` SI quantité_à_prélever > seuil_article × quantité_palette_source ET article unique dans la palette source ET pas d'attribut logistique à capturer ET poids_unitaire_sac ≥ 7 kg ALORS → PICKING_NÉGATIF SINON → PICKING_DIRECT ``` ## Paramètres WMS | Paramètre | Défaut | Note V1.1 | |-----------|--------|-----------| | `CONTROLE_TRAITEMENT_COMMERCIAL` | **false** | Désactivé | | Seuil picking négatif (fiche article) | 55% | Inchangé | | Poids min picking négatif | **7 kg** | Nouveau | | Seuil remplissage palette | **~95%** | Nouveau | | Poids max palette | **1 250 kg** | Corrigé | | `MAX_NB_BUFFER_PK` | 3 | Inchangé | ## Points d'attention ⚠️ Le custom LIM-61 (capacité buffer) doit gérer les palettes multi-PK. ⚠️ En cas d'erreur du process, l'OS reste bloqué (CstAtt = false). ⚠️ Condition poids ≥ 7 kg : évite l'instabilité palette (gros sacs ramenés sur petits sacs). ## Liens - [Placement PS → PK](placement-ps-pk.md) — algorithme aval - [Picking combinatoire](picking-combinatoire.md) — vue d'ensemble - [Historique et arbitrage](sequencage-tk-ps-historique.md) — solutions envisagées + arbitrage contradictions réunion 11/05/2026 ## Historique des modifications | Date | Auteur | Modification | |------|--------|--------------| | 2026-05-12 | Arthur | Création initiale depuis LIM-84 | | 2026-05-12 | Arthur | Refonte V1.1 : algo complet, 5 critères, contraintes amont, arbitrage réunion 11/05 | | 2026-05-12 | Arthur | Découpage : historique solutions + arbitrage → page dédiée | ## Références | Source | Type | Date | |--------|------|------| | [LIM-84](https://easywmsfrance.atlassian.net/browse/LIM-84) | Ticket Jira | 2026 | | [LIM-61](https://easywmsfrance.atlassian.net/browse/LIM-61) | Ticket Jira | 2026 | | Logique combinatoire picking - TK vers PS - V1.1 | Spec technique | 11/05/2026 | | REU PICKING SEQUENCAGE 11-05-2026 | CR réunion | 11/05/2026 |