Files
mcp-wms-wiki/wiki_old_13-05-2026/sources/archives/LIM-84 LOT2.2 [PICKING] Séquençage des tâches de picking TK PS.md
T
2026-05-20 09:41:27 +02:00

95 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Séquençage TK → PS — Notes de conception
## Contexte
Process de séquençage des tâches de picking (TK) vers les postes de sortie (PS), déclenché sur les événements du cycle de vie des ordres de sortie (OS).
---
## Historique des solutions envisagées
### Solution 1 — Process isolé sur finalisation des tâches d'OS
**Principe :**
1. Process déclenché à la finalisation de la création des tâches d'un OS
2. Séquençage des tâches via OS.Line.CstAtt
3. OS marqué comme traité via OS.CstAtt = true
**Problème :** Pas assez dynamique en cas de recréation de tâches suite à des imprévus dans le WMS.
---
### Solution 2 — Calcul dans le workflow stacker_crane
**Principe :** Intégrer le tri directement dans le WF Galileo_StackerCraneSearch_PR / StackerCrane_SortTasks_PR, avec recalcul complet du pool de tâches à chaque exécution. Supprime le besoin de OS.Line.CstAtt et OS.CstAtt
**Problème :** Wallah cest compliqué
`.Where(t=>t.CustomAttribute <= t.OutboundOrder.SelectMany(o=>o.Tasks).Where(ot.ProcessType == XXX)).OrderBy(ot=>ot.CustomAttribute).FirstOrDefault()))`
---
### Solution 3 — Solution 1 transformée en job
**Principe :** Reprendre le process de la solution 1 sous forme de job planifié, en excluant les tâches de picking en cours.
**Problème :** Pas assez réactif par rapport à la cadence de recherche d'ordre des TK.
---
### Solution 4 — Process événementiel (retenu)
**Principe :** Reprendre la solution 1 et la déclencher sur deux événements :
- TaskCreatedEvent
- Vérifier que la tâche est de type picking et que l'OS associé est au statut Released
- Si oui :
1. Passer OS.CstAtt = false pour bloquer la prise en charge par stacker_crane
2. Récupérer l'ensemble des tâches de l'OS
3. Filtrer sur les tâches en attente (exclure les tâches en cours)
4. Appliquer l'algorithme de séquençage (cf. section suivante)
5. Repasser OS.CstAtt = true
- OutboundOrderReleasedEvent
- Passer OS.CstAtt = false pour bloquer la prise en charge par stacker_crane
- Peut arriver si OS arrêté puis relancé
- Appliquer directement l'algorithme de séquençage sur les tâches
- Passer OS.CstAtt = true
**Avantages :**
- Plus simple à développer
- Isolée et découplée
- Flexible et réactive
---
## Algorithme de séquençage (TK → PS)
- Si la table TP est vide → priorité à la tâche de picking négatif (1 palette)
- Vérification de la capacité PK/BUFFER _(déjà custom_ [https://easywmsfrance.atlassian.net/browse/LIM-61](https://easywmsfrance.atlassian.net/browse/LIM-61) _— à modifier)_ :
- Prendre en compte les palettes sources ayant des tâches de picking pour plusieurs PK
_(ex. : une palette peut enchaîner PK1 → ES_5 → PK2)_
- Paramètre MAX_NB_BUFFER_PK : nombre de buffers disponibles par PK — **valeur par défaut : 3**