Files
mcp-wms-wiki/wiki/limagrain/05-agv/job-reception-production.md
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

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 |