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
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
---
|
||||
title: "Job AGV — Réception production vers ASRS"
|
||||
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-05-12
|
||||
last_updated: 2026-07-17
|
||||
author: Arthur
|
||||
---
|
||||
|
||||
# Job AGV — Réception production vers ASRS
|
||||
# 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 buffer d'entrée production
|
||||
> (alimentant le PIE de l'ASRS). Concerne uniquement les réceptions
|
||||
> production (CstAtt04 = "ASN").
|
||||
> 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),
|
||||
@@ -25,6 +25,12 @@ author: Arthur
|
||||
|
||||
## 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
|
||||
@@ -72,39 +78,82 @@ sequenceDiagram
|
||||
|
||||
## Logique d'éligibilité
|
||||
|
||||
Le job parcourt tous les supports positionnés sur des images de quai.
|
||||
Un support est éligible si **toutes** les conditions suivantes sont
|
||||
réunies :
|
||||
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 |
|
||||
|-----------|--------|
|
||||
| Séquence 8000* | Support fictif créé lors de la déclaration image de quai ([LIM-64](https://easywmsfrance.atlassian.net/browse/LIM-64)) |
|
||||
| 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 |
|
||||
| CstAtt06 vide | Pas encore traité par ce job |
|
||||
| Aucune tâche active | Statuts actifs = Bloqué, Créé, En attente, En attente d'annulation, En cours. Statuts historiques (ignorés) = Annulé, Terminé |
|
||||
| Aucune tâche active | `!c.Tasks.Any()` - aucun ordre de mouvement rattaché au conteneur |
|
||||
|
||||
La double vérification CstAtt06 + absence de tâche active est une
|
||||
**sécurité anti-doublon**.
|
||||
> **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 support éligible
|
||||
## Traitement d'un conteneur éligible
|
||||
|
||||
### Marquage
|
||||
|
||||
Le job positionne `CstAtt06` = valeur du paramètre
|
||||
`DESTINATION_PRODUCTION` (ex : "ENTREE_PRODUCTION").
|
||||
|
||||
### Création de la tâche
|
||||
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 | Sous-emplacement de l'image de quai |
|
||||
| Destination | Déterminée par la **stratégie de rangement** configurée (MU d'entrée Est ou Ouest, Est par défaut) |
|
||||
| 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é
|
||||
@@ -124,37 +173,39 @@ destination ; c'est le WMS qui reroute si nécessaire.
|
||||
|
||||
| Paramètre | Description | Valeur par défaut |
|
||||
|-----------|-------------|-------------------|
|
||||
| DESTINATION_PRODUCTION | Code du buffer d'entrée production (destination des tâches AGV) | ENTREE_PRODUCTION |
|
||||
| ~~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
|
||||
de quai est **ignoré** - il est géré par le
|
||||
[Mega Job](../03-picking/job-assignation-pk.md) (LIM-70)
|
||||
- Le marquage CstAtt06 a été simplifié en cours de développement
|
||||
(certains cas de tests marqués "Plus utilisé") — la vérification
|
||||
par absence de tâche active reste la sécurité principale
|
||||
- La stratégie de rangement détermine l'entrée Est/Ouest ; le
|
||||
paramètre DESTINATION_PRODUCTION n'est plus directement utilisé
|
||||
comme destination de tâche
|
||||
- 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 ?
|
||||
- ❓ Redirection multi-poumons / multi-PIE : config EasyS prête ?
|
||||
(@Nicolas)
|
||||
- [ ] CstAtt06 encore nécessaire comme marqueur si la vérification
|
||||
par tâche active suffit ? (@Fabien)
|
||||
- ~~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 | 2026 |
|
||||
| [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 |
|
||||
| [LIM-66](https://easywmsfrance.atlassian.net/browse/LIM-66) | Ticket Jira (passage PIE) | 2026 |
|
||||
|
||||
Reference in New Issue
Block a user