Files
mcp-wms-wiki/wiki/limagrain/04-outbound/assignation-image-quai.md
T
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

9.4 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
Assignation automatique de l'image de quai (OS/Tournée)
outbound
expédition
image-quai
stage
job
assignation
AGV
review concepts/shipping.md
LIM-94
LIM-88
Expédition - LIMAGRAIN - DEV
Jira LIM-94 (lecture directe, 7 commentaires, revue de code)
2026-07-17 Arthur

Assignation automatique de l'image de quai (OS/Tournée)

Résumé : job périodique qui assigne automatiquement une image de quai (poumon d'expédition) aux ordres de sortie (OS) et tournées (RUT) éligibles, via un « faux » stage X_EXP. Automatise ce qui était une assignation manuelle et fournit le stage dont dépend le séquençage shipping (LIM-88).

Standard EasyWMS : → voir Shipping Ce qui suit documente les spécificités Limagrain par rapport au standard.

Contexte projet

Par défaut, l'assignation quai + image de quai pour l'expédition est manuelle (voir Quais, poumons et chargement). LIM-94 automatise l'assignation de l'image de quai aux OS et tournées.

Ce job est en amont du séquençage shipping par STOP (LIM-88) : le garde-fou Outbound_CreateShippingOrLoadTasksToDockOrStage_PR de LIM-88 refuse de créer une tâche de chargement tant qu'aucun stage (image de quai) n'est associé à l'OS. LIM-94 fournit cette association.

Stages virtuels X_EXP

Un OS ou une Route ne peut être assigné qu'à un « faux » stage nommé X_EXP, où X = code de l'image de quai (A_EXP pour l'image de quai A). Ce sont les seuls stages assignables à un OS/Route.

  • Layout : ajout des stages A_EXP, B_EXP, ... avec une capacité de 26 mais un seul emplacement
  • Pourquoi un stage virtuel à 1 emplacement ? L'assignation doit porter sur un emplacement et non une station. Sans ce stage virtuel, il faudrait choisir une position précise (1 parmi 26) de l'image de quai
  • Identification de l'image de quai associée à un stage : c'est la seule image de quai ayant une route vers ce stage (ex : la seule route vers A_EXP part de l'image de quai A)

Job CST_AssignDockStage

Job CST_AssignDockStage → WF CST_Job_AssignStage, exécuté toutes les 30 secondes.

Le job récupère les Routes et les OS (OS hors route, en excluant les OS de classe Recertification) et tente d'assigner une image de quai :

  1. Vérifie via CST_GetOutboundOrderAndRoutes_ToAssignStage s'il existe des ordres à assigner
  2. Si oui, cherche les stages disponibles via CST_DockStage_GetAvailableStageToAssign
  3. Boucle simple : assigne les ordres un par un jusqu'à épuisement des ordres ou des stages disponibles
  4. La commande d'assignation diffère selon le type (Route ou OS)

Priorisation : par priorité, puis par date de libération.

Conditions d'éligibilité de l'OS / Route

  • Libéré
  • Toutes les palettes de picking sont revenues dans le TK (même principe que la tâche d'ordonnancement TK)
  • Date actuelle à H-3 de la date d'expédition prévue

La query contrôle en pratique : OS Released, non déjà assigné à un stage, date d'expédition prévue < 3 h, picking terminé (aucun conteneur picking + tous les conteneurs client en APS). Correction revue de code (05/06) : utiliser la date d'expédition prévue (et non la date de chargement prévue) pour les OS.

Conditions d'assignabilité du stage

Un stage n'est assignable pour expédition que si le stage virtuel X_EXP et l'image de quai physique associée sont libres.

Stage virtuel X_EXP :

  • Non verrouillé
  • Aucune tâche vers lui
  • Aucun conteneur dessus
  • Aucun autre OS, Route ou réception assigné

Image de quai physique (identifiée par la route qui va vers le stage virtuel) :

  • Non verrouillée
  • Aucun conteneur dessus
  • Aucune tâche vers elle

Ces contrôles sont portés par la query CST_DockStage_GetAvailableStageToAssign.

Génération des mouvements (PS → image de quai)

Le placement final vers l'image de quai est calculé au poste de sortie (PS), pas à l'assignation du stage. Quand un conteneur arrive au PS, le WF Container_MovedEventHandler_PS_PR :

  1. Récupère l'image de quai correspondant au stage assigné (la seule image de quai ayant une route vers ce stage)
  2. Change la destination de la tâche vers le premier emplacement libre calculé de l'image de quai : l'emplacement avec le X le plus grand n'ayant ni conteneur ni conteneur en mouvement

Ce calcul « X le plus grand d'abord » rejoint le sens de dépose décrit dans Quais, poumons et chargement (décharger en commençant par l'emplacement le plus éloigné du quai) et limite le problème de dépose AGV sur emplacements serrés.

Désassignation à l'arrêt de l'OS / Route

Quand un OS (ou une Route) ayant une image de quai associée est stoppé (repasse au statut « En attente »), l'association est supprimée.

Pourquoi ? Sans cela, l'association peut devenir caduque : ex. image B choisie, puis 2 jours plus tard, après re-libération, l'image B est entre-temps réservée par une réception, ce qui pose problème.

  • WF CST_OutboundOrderUnassignStage_PR : désassigne le stage de l'OS s'il y en a un et que l'OS n'est pas inclus dans une route
  • WF CST_RouteUnassignStage_PR : désassigne le stage de la route
  • Souscription async CST_OutboundOrderStopped_UnassignStage sur l'événement OutboundOrderSetStoppingOperationEvent
  • Souscription async CST_RouteStopped_UnassignStage sur l'événement RouteStoppedEvent

Correction revue de code (05/06) : ces WF vérifient l'image de quai et non le quai de chargement.

Assignation manuelle (VAssist)

L'assignation manuelle reste possible : les vues VAssistOutboundOrderAssignDock et VAssistRouteAssignDock sont restreintes pour n'afficher que les DockStage disponibles, selon les mêmes critères que CST_DockStage_GetAvailableStageToAssign.

[CUSTOM] Éléments techniques (revue de code)

Statut : LIM-94 « En cours de test client (préprod) ». Revue de code réalisée (Maxime Halgand, Vincent Charvet).

Élément Type Rôle
Stages A_EXP, B_EXP, ... Layout Stage virtuel par image de quai (capacité 26, 1 emplacement)
CST_DockStage_GetAvailableStageToAssign Query Liste des stages virtuels assignables (contrôle virtuel + image de quai physique)
CST_GetOutboundOrderAndRoutes_ToAssignStage Query Liste unifiée (Id + Description) des OS et Routes éligibles, pour un tri indépendant du type ; exclut la classe Recertification
CST_Job_AssignStage WF Boucle d'assignation, appelée toutes les 30 s
CST_AssignDockStage Job Appelle CST_Job_AssignStage toutes les 30 s
Container_MovedEventHandler_PS_PR WF Fin d'ordre au PS : redirige la tâche vers le 1er emplacement libre (X max) de l'image de quai du stage
CST_OutboundOrderUnassignStage_PR WF Désassigne le stage d'un OS stoppé (hors route)
CST_RouteUnassignStage_PR WF Désassigne le stage d'une route stoppée
CST_OutboundOrderStopped_UnassignStage Souscription Async sur OutboundOrderSetStoppingOperationEvent
CST_RouteStopped_UnassignStage Souscription Async sur RouteStoppedEvent
VAssistOutboundOrderAssignDock / VAssistRouteAssignDock Vue Assignation manuelle restreinte aux stages disponibles

Commits : f0536cce0c (stages virtuels + redirection PS + vues), e3889b8003 (fix quai désassigné au passage du job + optim query), 5de1618104 (désassignation à l'arrêt OS/Route).

Points d'attention

⚠️ Le garde-fou LIM-88 (Outbound_CreateShippingOrLoadTasksToDockOrStage_PR) dépend de l'association de stage posée ici : sans stage assigné, pas de tâche de chargement, les palettes bloquent aux PS.

⚠️ La désassignation à l'arrêt évite les réservations caduques d'image de quai (conflit possible avec une réception qui réserverait entre-temps la même image).

Questions ouvertes

  • Condition « l'image de quai n'a aucune réception assignée » : marquée TBD dans la description initiale. La query intègre bien un contrôle « aucune réception assignée » sur le stage virtuel ; confirmer le périmètre exact (@Justine) → voir Questions ouvertes

Historique des modifications

Date Auteur Modification
2026-07-17 Arthur Création depuis LIM-94 (lecture directe + revue de code) : stages virtuels X_EXP, job CST_AssignDockStage/CST_Job_AssignStage (30 s), conditions d'éligibilité OS/Route et d'assignabilité stage, redirection PS Container_MovedEventHandler_PS_PR (X max), désassignation à l'arrêt (WF + souscriptions), VAssist restreintes, éléments techniques + commits

Références

Source Type Date
LIM-94 Ticket Jira (statut préprod / test client) 2026-07-17
LIM-88 Ticket Jira (séquençage shipping, dépend du stage) 2026
Revue de code LIM-94 (M. Halgand, V. Charvet) Commits f0536cce0c / e3889b8003 / 5de1618104 2026-05/06
Expédition - LIMAGRAIN - DEV Page Confluence 2026