Roadmap : ajoute le lot 4 (modèle de données et applications)

Deux angles morts mesurés sur le tenant LIMAGRAI2512.

L4.1 — QueryType est figé à 0 (Reading) en dur dans api-service.js : le modèle
Writing est inatteignable. Ce n'est pas une limite de l'API, QueryType 1
répond correctement sur Context.Products — il manque le paramètre. D3 reste
vrai en revanche : en Writing les statuts sont des énumérations, donc le
défaut doit rester 0.

L4.2 — Application vient de WMS_APPLICATION, partagé par tous les profils,
sans surcharge possible. Le MCP n'interroge que EasyWMS alors que
/AD/api/Application/GetAll en déclare 9. CustomApp porte le spécifique client
(153 workflows, 54 queries, 11 entités préfixés CST_) et est entièrement
invisible ; avec AGV, Notifications, GalileoFaults et Common, ce sont 260
workflows hors périmètre.

Côté API AD le correctif est simple, l'application n'étant qu'un champ du
payload — vérifié, ["CustomApp", tenant, 5, 0] renvoie bien les workflows CST_.
Il faudra en revanche indexer les caches par application.

Côté QueryExecute c'est non résolu : passer Application "CustomApp" ne change
pas le contexte de lecture, les entités CST_ ne répondent ni au singulier ni au
pluriel et aucune n'apparaît dans les 232 entités du Metadata EasyWMS. Elles
sont définies dans EasyBuilder (FromMetadata: false). Consigné comme question
ouverte, sans solution promise.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Arthur Ria
2026-08-24 15:45:52 +02:00
parent 1a1b9ebe03
commit 7621b87c49
+62
View File
@@ -151,6 +151,68 @@ que la cause réelle est l'absence de signal.
--- ---
## Lot 4 — Modèle de données et applications
Deux angles morts constatés le 24/08/2026, plus larges que les lots 1 à 3. Les
chiffres ci-dessous sont mesurés sur le tenant `LIMAGRAI2512`.
### L4.1 — Le modèle Writing est inatteignable
`QueryType` est figé à `0` (Reading) en dur dans `api-service.js`
(`executeQuery` et `executeScalarQuery`). Aucun outil ne permet d'interroger le
modèle **Writing**.
Ce n'est pas une limite de l'API : `{"Application":"EasyWMS","QueryType":1,
"Expression":"Context.Products.OrderBy(z => z.Id)","Take":1}` répond
correctement. Il manque simplement le paramètre.
Attention en l'exposant : D3 reste vrai — en `QueryType: 1` les champs de statut
sont des **énumérations**, donc les comparaisons par chaîne (`== "Release"`)
échouent. Le défaut doit rester `0`, et la bascule être un choix explicite et
documenté, pas une option qu'on active au hasard.
### L4.2 — Une seule application sur neuf est visible
`Application` vient de `WMS_APPLICATION` dans `.env`, **partagé par tous les
profils**, sans surcharge par appel ni paramètre d'outil. Le MCP n'interroge donc
jamais que `EasyWMS`.
`POST /AD/api/Application/GetAll` en déclare **9** :
| Application | Workflows | Queries | Entities |
|---|---:|---:|---:|
| EasyWMS | 4012 | 2239 | 338 |
| **CustomApp** | **153** | **54** | **11** |
| AGV | 71 | 14 | 5 |
| Notifications | 26 | 35 | 24 |
| GalileoFaults | 9 | 20 | 24 |
| Common | 1 | 7 | 25 |
| SmartUI, User, WarehouseWebDesigner | 0 | 08 | 0 |
**CustomApp porte le spécifique client** — ses workflows sont préfixés `CST_`
(`CST_SendRejectContainersToPK`, `CST_Task`, `CST_Container`…). C'est
précisément ce qu'on cherche en debug, et c'est aujourd'hui invisible. Au total
**260 workflows et ~130 queries** hors périmètre.
Deux chantiers de difficulté très différentes :
**API AD — simple.** L'application est un champ du payload
(`[application, tenant, pageSize, offset]`). Vérifié : `["CustomApp", tenant,
5, 0]` sur `/Workflow/GetByApplication` renvoie bien les workflows `CST_`. Il
suffit d'un paramètre `application` sur les outils AD et workflow, avec une clé
de cache incluant l'application (sinon un cache pollué mélange les
applications).
**QueryExecute — non résolu, à investiguer.** Passer `Application: "CustomApp"`
ne change **pas** le contexte de lecture : l'erreur reste
`ApplicationReadingContext ne contient pas de définition pour …`. Les 11 entités
`CST_` ne sont atteignables ni au singulier ni au pluriel, et **aucune** n'est
présente dans les 232 entités du Metadata `EasyWMS` (vérifié). Elles sont
définies dans EasyBuilder (`FromMetadata: false`) — reste à déterminer si elles
sont interrogeables, et sous quel nom. Ne rien promettre avant d'avoir tranché.
---
## Écarté ## Écarté
| Proposition | Raison | | Proposition | Raison |