--- title: "Job AGV - Réception production vers ASRS" tags: [agv, job, reception, production, asrs, pie] status: draft standard_ref: architecture/galileo-integration.md jira_refs: [LIM-71, LIM-64, LIM-66] confluence_refs: [] sources: ["LIM-71 LOT1.2 RECEPTION PRODUCTION AGV Job de création des tâches images de quai ASRS.md"] last_updated: 2026-07-17 author: Arthur --- # Job AGV - Réception production vers ASRS > **Résumé** : job périodique (30 s) qui crée les tâches de déplacement > AGV depuis les images de quai vers le PIE de l'ASRS, via les stratégies > de rangement. Concerne les réceptions production (CstAtt04 = "ASN") et > les piles de palettes vides (code `PAL`). > **Standard EasyWMS** : → voir > [Galileo Integration](../../architecture/galileo-integration.md), > [Galileo Integration](../../architecture/galileo-integration.md) > Ce qui suit documente les **spécificités Limagrain** par rapport au > standard. ## Contexte projet > **Statut (LIM-71)** : en préprod (test client). Revues de code validées > le 27/03/2026, le 28/04/2026 (ajout piles de palettes) et le 01/07/2026 > (ajout job de régénération). Deux tentatives ont été **annulées en cours > de dev** : le marquage `CstAtt06` (abandonné, cf. plus bas) et la condition > `CstAtt12` sur les conteneurs production (non requise : pas d'étiquette). Dans le flux de réception production, les palettes arrivent de la production (ou de l'ancien magasin) et vont **directement dans l'ASRS** sans passer par un poste de travail. Elles sont déchargées par un cariste sur une image de quai puis déclarées via le TRF en type "Production" ([LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64)). Ce job crée les tâches de déplacement AGV depuis les images de quai vers le buffer d'entrée production, qui a une route virtuelle vers une table d'entrée du convoyeur. > **Périmètre** : uniquement les réceptions de type Production (supports > avec CstAtt04 = "ASN"). Les réceptions fournisseur / intersite / > retour client sont gérées par le > [Mega Job d'assignation PK](../03-picking/job-assignation-pk.md) > ([LIM-70](https://easywmsfrance.atlassian.net/browse/LIM-70)). ## Process complet de réception production ```mermaid sequenceDiagram participant Cariste participant TRF as TRF (LIM-64) participant Job as Job AGV (LIM-71) participant AGV participant PIE as PIE (LIM-66) participant ASRS Cariste->>TRF: Décharge palette sur image de quai TRF->>TRF: Déclaration type "Production" Note over TRF: Support fictif séq. 8000*
CstAtt04 = "ASN" Job->>Job: Détecte support éligible Job->>Job: Crée tâche "En attente" Note over Job: Origine = image de quai
Dest = stratégie rangement Job-->>AGV: Tâche passe "Créé" → GNA → iGo AGV->>PIE: Transport vers entrée production PIE->>PIE: Suppression support virtuel
Création palette ASN PIE->>ASRS: Stockage ou rejet ``` ## Configuration du job - **Type** : job périodique - **Fréquence** : toutes les **30 secondes** ## Logique d'éligibilité Le job parcourt tous les conteneurs positionnés sur des **stages d'image de quai** (`LocationType.DockStage`). Un conteneur est éligible si **toutes** les conditions suivantes sont réunies : | Condition | Détail | |-----------|--------| | Emplacement = DockStage | Conteneur posé sur un stage d'image de quai | | Code `8000*` **ou** `PAL*` | Support fictif production (séq. 8000, [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64)) **ou** pile de palettes vides (`PAL`) | | CstAtt04 = "ASN" | Support de type production | | Aucune tâche active | `!c.Tasks.Any()` - aucun ordre de mouvement rattaché au conteneur | > **Reversal marquage CstAtt06** : la logique initiale prévoyait de marquer > `CstAtt06` = destination pour éviter les doublons. Décidé en interne > (19/03/2026) de **ne pas l'implémenter** : l'absence de tâche active suffit > comme anti-doublon, et ne pas marquer `CstAtt06` permet de **regénérer** une > tâche de rangement au prochain cycle si la précédente a été annulée. Ce job > **n'utilise donc pas** `CstAtt06`. > > **Reversal condition CstAtt12** : une condition `CstAtt12 = true` (étiquette > posée) a été ajoutée puis **retirée** pour la production et les piles de > palettes - ces conteneurs n'ont pas d'étiquette. `CstAtt12` ne conditionne > que les réceptions **fournisseur** vers les PK. ## Traitement d'un conteneur éligible Pour chaque conteneur récupéré, le job effectue une **recherche d'emplacement** basée sur les **stratégies de rangement** configurées, puis génère la tâche de rangement si un emplacement est trouvé. | Champ | Valeur | |-------|--------| | Origine | Stage de l'image de quai | | Destination | Déterminée par la **stratégie de rangement** (PIE_01 / PIE_02, entrée Est ou Ouest, **Est par défaut**) | | Statut initial | "En attente" | Les stratégies sont importées et configurées via la vue standard `LocationPutawayStrategyVList`, modifiée pour autoriser les **stages** comme station d'origine (type Stage, ou un stage précis). Les stratégies vont des stages vers PIE_01 / PIE_02 en « fin de séquence ». Le passage "en attente" → "créé" est géré par le WMS standard (`Task_GenerateMovementJob_PR`). Le module AGV / GNA écoute ce changement et envoie les tâches à la flotte iGo. ### Éléments AD (LIM-71) | Élément AD | Type | Rôle | |------------|------|------| | `CST_StoreProductionContainer_Job` | Workflow + Job (30 s) | Récupère les conteneurs via la query, cherche un emplacement pour chacun et génère la tâche de rangement si trouvé | | `CST_AvailableProductionContainers` | Query | Récupère les conteneurs candidats : sur DockStage, `CstAtt04 = "ASN"`, code `8000*` ou `PAL*`, sans tâche active | | `LocationPutawayStrategyVList` | Vue | Ajout des stages dans la liste des stations d'origine (sélection type Stage ou stage précis) | | `Galileo_PIEEventHandler_PR` | Workflow | Ignore l'erreur de lecture d'étiquette au PIE quand il s'agit d'une pile de palettes | ## Piles de palettes vides Le job gère aussi le rangement des **piles de palettes vides** (conteneurs dont le code commence par `PAL`). Elles suivent le même mécanisme (query + stratégie de rangement + tâche AGV). Au PIE, l'erreur de lecture d'étiquette est ignorée pour ces piles (`Galileo_PIEEventHandler_PR`). ## Job de régénération des tâches réception → PK En complément (ajouté sous LIM-71, revue de code OK 01/07/2026), un job distinct **régénère** les tâches manquantes pour les conteneurs de réception **fournisseur** qui ont un PK assigné mais aucune tâche. | Élément AD | Type | Rôle | |------------|------|------| | `CST_Reception_RegenerateTask_Job` | Workflow + Job (15 s) | Crée une tâche pour les conteneurs de réception (`CstAtt08`) avec un PK assigné (`CstAtt06`) posés sur une image de quai sans tâche. Vérifie que la station de picking est trouvée | | `CST_ReceptionContainers_WithoutTasksToPK` | Query | Récupère ces conteneurs de réception sans tâche vers leur PK | > Ce job de régénération relève du flux **réception fournisseur → PK** > (cf. [Réception fournisseur](../01-inbound/reception-fournisseur.md), > LIM-67 / LIM-74) et non de la réception production. Il confirme l'usage de > `CstAtt06` = code du PK assigné côté réception fournisseur. ## Redirection si PIE saturé Gérée en **standard** par le système de routes et distances configuré dans EasyS : - Route principale : distance 1 - Routes secondaires : distance 2 On ferme le PIE de production → le WMS redirige automatiquement vers les autres entrées disponibles. Ce job envoie toujours vers la même destination ; c'est le WMS qui reroute si nécessaire. > ⚠️ À vérifier si faisable avec plusieurs poumons, plusieurs PIE et > si la config EasyS actuelle est prête pour ce mode dégradé. ## Paramètres | Paramètre | Description | Valeur par défaut | |-----------|-------------|-------------------| | ~~DESTINATION_PRODUCTION~~ | ~~Code du buffer d'entrée production~~ - **obsolète** : la destination est désormais déterminée par les stratégies de rangement, plus par ce paramètre | ~~ENTREE_PRODUCTION~~ | ## Points d'attention - Un support non ASN (fournisseur, intersite, retour) sur une image de quai est **ignoré** - il est géré par le [Mega Job](../03-picking/job-assignation-pk.md) (LIM-70) - Ce job **n'utilise pas** `CstAtt06` (marquage abandonné) : l'anti-doublon repose uniquement sur l'absence de tâche active, ce qui permet la régénération après annulation - La stratégie de rangement détermine l'entrée Est/Ouest (Est par défaut) ; le paramètre `DESTINATION_PRODUCTION` est **obsolète** - Les piles de palettes vides (`PAL*`) sont traitées par le même job ; l'erreur de lecture d'étiquette au PIE est ignorée pour ces piles ## Questions ouvertes - ❓ Redirection multi-poumons / multi-PIE : config EasyS prête ? (@Nicolas) - ~~CstAtt06 encore nécessaire comme marqueur ?~~ → **Résolu (LIM-71)** : marquage CstAtt06 abandonné, l'absence de tâche active suffit. ## Historique des modifications | Date | Auteur | Modification | |------|--------|--------------| | 2026-05-12 | Arthur | Création initiale depuis LIM-71 | | 2026-07-17 | Arthur | Relecture 18 commentaires : abandon marquage CstAtt06 (anti-doublon = tâche active), destination via stratégies de rangement (DESTINATION_PRODUCTION obsolète), gestion piles de palettes (PAL), reversal CstAtt12 (non requis production), éléments AD (CST_StoreProductionContainer_Job, CST_AvailableProductionContainers, LocationPutawayStrategyVList, Galileo_PIEEventHandler_PR), job régénération CST_Reception_RegenerateTask_Job, statut préprod + 3 revues de code | ## Références | Source | Type | Date | |--------|------|------| | [LIM-71](https://easywmsfrance.atlassian.net/browse/LIM-71) | Ticket Jira (18 commentaires) | 2026-03 → 2026-07 | | [LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64) | Ticket Jira (déclaration image quai) | 2026 | | [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) | Ticket Jira (passage PIE) | 2026 |