7496aafe64
- 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
212 lines
10 KiB
Markdown
212 lines
10 KiB
Markdown
---
|
|
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*<br/>CstAtt04 = "ASN"
|
|
Job->>Job: Détecte support éligible
|
|
Job->>Job: Crée tâche "En attente"
|
|
Note over Job: Origine = image de quai<br/>Dest = stratégie rangement
|
|
Job-->>AGV: Tâche passe "Créé" → GNA → iGo
|
|
AGV->>PIE: Transport vers entrée production
|
|
PIE->>PIE: Suppression support virtuel<br/>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 |
|