Files
arthur 7496aafe64 lint(limagrain): corrections completes Phase 1+2
- Bloquants: mermaid 03-picking/_index reconstitue (archive 11-05), 13 liens vers pages squelette retires, 2 liens recibles (anoxie, application-dictionary)
- Conventions: 910 em dashes -> tirets simples, 145 checklists -> puces question, 13 questions resolues barrees
- Liens: 9 ancres reparees (slugs GitHub)
- Delta: 12 standard_ref remappes, blocs Standard EasyWMS + sections References ajoutes, front matter complete
- Glossaire: 15 termes standard deplaces en section rappel avec renvoi
- Rapport: limagrain/_lint_report.md (Phase 1 + Phase 2 + re-scan final)
- Inclut les pages des sessions precedentes non commitees + CLAUDE.md et consume.log en l'etat
2026-07-20 12:56:42 +02:00

11 KiB

title, tags, status, standard_ref, jira_refs, confluence_refs, sources, last_updated, author
title tags status standard_ref jira_refs confluence_refs sources last_updated author
Séquençage des tâches de picking TK → PS
picking
séquençage
transstockeur
événement
workflow
algorithme
draft concepts/picking.md
LIM-84
LIM-61
LIM-80
LIM-82
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
Jira LIM-84 (commentaires revue de code)
2026-07-17 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

Statut (LIM-84) : dev terminé, en attente de déploiement pour test. Revue de code validée le 02/07/2026 (après une itération NOK le 29/06 et corrections le 01/07).

Déclenchement

Implémentation définitive (revue de code 02/07/2026) : le séquençage est réalisé pendant l'assignation de stock, et non sur TaskCreatedEvent comme le proposait la note de conception (Solution 4, voir historique).

Le workflow de séquençage CST_PickingTasksSequencing_PR est appelé par les workflows d'assignation de stock :

  • Outbound_StockAssignProcess_PR - assignation de stock (à la libération de l'OS)
  • OutboundOrder_StockReassign_PR - réassignation de stock (imprévu, blocage, relance)

La libération de l'OS est déclenchée par la subscription CST_PKAssigned_ReleaseOrder (WF CST_OutboundOrder_PKAssigned_ReleaseOrder_PR) lorsqu'un PK est assigné à l'OS (LIM-80), ce qui déclenche l'assignation de stock. L'assignation/réassignation se fait par job (les subscriptions standard sont désactivées, cf. LIM-80).

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

Le TaskType (OrdinaryPicking / NegativePicking) est déterminé à la création des tâches. Conditions définitives (revue de code LIM-84) :

SI  % à prélever ≥ NegativePickingPercent (55% du stock actuel de la source)
ET  remplissage source ≥ NegativeMinCompletePercent (25% de la capacité pleine)
ET  palette source mono-lot
ET  poids_unitaire_sac ≥ 7 kg          // check custom Limagrain
ALORS → PICKING_NÉGATIF
SINON → PICKING_DIRECT
  • Le picking négatif est désormais autorisé même si des attributs logistiques sont précisés dans la commande (levée d'une restriction initiale).
  • Les 2 conditions de pourcentage sont standard EasyWMS (Outbound_CreatePickingContainerTasksNegative_CheckPercents_PR_V1) ; seul le check de poids (≥ 7 kg) est custom (Outbound_CreatePickingContainerTasksNegative_PR_V1 récupère le lot et le poids de l'article).

Paramètres WMS

Paramètre Défaut Note V1.1
CONTROLE_TRAITEMENT_COMMERCIAL false Désactivé
NegativePickingPercent (% à prélever du stock actuel) 55% Standard
NegativeMinCompletePercent (% remplissage min source) 25% Standard, capacité pleine
Poids min picking négatif 7 kg Custom Limagrain
Seuil remplissage palette ~95% Nouveau
Poids max palette 1 250 kg Corrigé
MAX_NB_BUFFER_PK 3 Inchangé

Implémentation définitive (LIM-84)

Reflète le code livré et validé (revue de code du 02/07/2026, après une itération NOK le 29/06 et corrections le 01/07). Prime sur les notes de conception ci-dessus en cas d'écart.

Le séquençage ne se contente pas de trier : CST_PickingTasksSequencing_PR calcule d'abord la composition des palettes finales (quels stocks vont sur quelle palette fille, via les records CST_PickingPalletList / CST_PickingStockList), puis écrit le numéro de séquence (CstAtt1 de la tâche) sur chaque tâche. Le stacker crane consomme ensuite les tâches via CST_Tasks_PendingOutboundForStackerCrane, en respectant le verrou OS.CstAtt et l'ordre Line.CstAtt croissant.

Workflows

Workflow Rôle
CST_PickingTasksSequencing_PR Calcule la constitution des palettes finales pour les tâches de picking d'un OS selon les critères actifs, puis écrit le numéro de séquence sur chaque tâche.
CST_OutboundOrder_PKAssigned_ReleaseOrder_PR Libère l'OS (appelé par la subscription CST_PKAssigned_ReleaseOrder).
Outbound_StockAssignProcess_PR Assignation de stock - appelle le séquençage.
OutboundOrder_StockReassign_PR Réassignation de stock - appelle le séquençage.
NegativePicking_CheckAllowsNegativePickingTask_PR Conditions picking négatif : palette source mono-lot ; négatif autorisé même si des attributs logistiques sont précisés dans la commande.
Outbound_CreatePickingContainerTasksNegative_PR_V1 Récupère le lot du stock et le poids de l'article.
Outbound_CreatePickingContainerTasksNegative_CheckPercents_PR_V1 Ajoute la condition de poids unitaire min (≥ 7 kg) aux 2 checks % standard.

Records / Lists

Élément Rôle
CST_PickingPalletList Palette construite au picking (caractéristiques physiques + stocks), pour le calcul de constitution des palettes finales.
CST_PickingStockList Stock à prélever au picking et sa tâche, pour le calcul de constitution.

Queries et vue

Élément Rôle
CST_PickingStocksToSequence_ByOutboundOrder Stocks à prélever d'un OS qui ne font pas déjà partie du séquençage.
CST_Tasks_ForView Format du CstAtt1 (numéro de séquence).
CST_Tasks_PendingOutboundForStackerCrane Tâches en attente pour le stacker crane (corrigée le 29/06 pour les tâches de mouvement - test recertification).
TaskVList (vue) Ajout de CstAtt1 : le numéro de séquence est visible dans la vue des tâches.

Points confirmés en revue de code

  • Recalcul : les tâches déjà en cours conservent leur séquence ; seules les tâches en attente sont re-séquencées.
  • Réassignation après épuisement : si une réassignation de stock survient alors que toutes les tâches précédentes sont faites, le séquençage repart de 0. L'info de séquence sert uniquement à l'ordonnancement.
  • Concurrence inter-OS : plusieurs OS simultanés sur un même PK est interdit ; chaque OS a son propre pool de tâches et son propre verrou OS.CstAtt.

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

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
2026-07-17 Arthur Relecture revue de code LIM-84 (préprod, validée 02/07) : nouvelle section « Implémentation définitive » (WF CST_PickingTasksSequencing_PR = constitution palettes + séquence, records CST_PickingPalletList/CST_PickingStockList, queries CST_PickingStocksToSequence_ByOutboundOrder / CST_Tasks_ForView / CST_Tasks_PendingOutboundForStackerCrane, vue TaskVList +CstAtt1) ; déclenchement réel = pendant l'assignation de stock (Outbound_StockAssignProcess_PR / OutboundOrder_StockReassign_PR) + subscription CST_PKAssigned_ReleaseOrder, et non TaskCreatedEvent ; conditions picking négatif définitives (mono-lot, autorisé même avec attributs logistiques, poids ≥ 7 kg) + ajout NegativeMinCompletePercent 25% ; points confirmés (recalcul, repart de 0, inter-OS interdit) ; statut préprod

Références

Source Type Date
LIM-84 Ticket Jira (séquençage, 5 commentaires, préprod) 2026-06 → 07
LIM-61 Ticket Jira (capacité PK/buffer) 2026
LIM-80 Ticket Jira (assignation PK, release OS) 2026
LIM-82 Ticket Jira (placement PS → PK, consomme Line.CstAtt) 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