- 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
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 |
|
draft | concepts/picking.md |
|
|
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.CstAttsur chaque tâche et contrôle le flagOS.CstAttpour 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
TaskCreatedEventcomme 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
OS.CstAtt ← false(verrouille le stacker_crane)- Récupérer toutes les tâches de picking de l'OS
- Filtrer : tâches en attente uniquement (en cours = intouchables)
- Trier selon les 5 critères ci-dessous
- Écrire les séquences
Line.CstAtt 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_V1ré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
- Placement PS → PK - algorithme aval
- Picking combinatoire - vue d'ensemble
- Historique et arbitrage - 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 |
| 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 |