Passation lot 5 : clore la famille D24 (fenêtre workflow, garde requêtes, champ tool)

Deux mesures nouvelles du 25/08/2026 aggravent le dossier : une requête
Reading ordinaire query_wms_entities(Products, limit 200) pèse 957 234
caractères et search_wms_data(PAL) 847 543 — le dépassement du seuil de
rejet client (~70 000, D24) ne se limite donc pas au Writing ni aux
workflows. Les points ouverts correspondants deviennent un lot 5 planifié
dans la ROADMAP (L5.1 fenêtre verbatim sur le blob data, L5.2 garde de
taille commune aux trois outils de requête avec le cas limite d'une
ligne seule au-dessus du plafond, L5.3 balayage du champ tool).

Pas de nouveau numéro de décision : le lot étend D24. D27 réservable si
besoin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Arthur Ria
2026-08-25 11:57:39 +02:00
parent b941f367ae
commit 90b2c89ff1
2 changed files with 247 additions and 20 deletions
+35 -20
View File
@@ -84,6 +84,41 @@ plus riche que `/AD/api/Application/GetAll`), `GET /healthcheck?tenantCode=` et
---
## Lot 5 — Clore la famille D24 (rejets client sur sorties volumineuses)
Mesures du 25/08/2026 (protocole, LIMAGRAIN), toutes au-dessus du seuil de
rejet client (~70 000 caractères, D24) :
| Appel | Taille |
|---|---:|
| `query_wms_entities("Products", limit: 200)` — Reading ordinaire | **957 234** |
| `search_wms_data("PAL")` | **847 543** |
| `get_workflow_details(CST_SendRejectContainersToPK)` | ~101 800 |
| `call_query_api("Products", query_type: 1, limit: 1)`**une seule ligne** Writing | **95 288** |
### L5.1 — Paginer le blob `data` de `get_workflow_details`
La définition complète d'un workflow dépasse le seuil (~101 800 pour
`CST_SendRejectContainersToPK`, 79 092 pour un `StackerCrane_…` EasyWMS).
Découper le blob `data` en tranches verbatim (paramètres de fenêtre au schéma),
signalées D24 — sans jamais résumer ni reformuler le contenu.
### L5.2 — Garde de taille sur les outils de requête
Une ligne Writing = un agrégat complet sérialisé (95 288 caractères là où la
même ligne Reading en fait ~4 500) ; 200 lignes Reading = ~957 000 ; `search_wms_data`
= ~848 000. Garde de taille commune sur `query_wms_entities`, `call_query_api`
et `search_wms_data` : lignes entières écartées, `truncated`/`returned`/`omitted`/`hint`
(D24). Ne pas réduire `MAX_QUERY_ROWS` ni les limites par défaut.
### L5.3 — Champ `tool` absent des erreurs construites localement
Les `catch` locaux d'`api-tools.js` renvoient `{ success: false, error }` sans
le champ `tool` du contrat (convention 3) — antérieur au lot 4. Balayer tous
les modules d'outils pour le même motif.
---
## Écarté
| Proposition | Raison |
@@ -118,26 +153,6 @@ plus riche que `/AD/api/Application/GetAll`), `GET /healthcheck?tenantCode=` et
début de chaque appel).
- **`select_expression`** : les projections via le paramètre `Select` provoquent
des erreurs de compilation côté serveur (D13). Irritant principal restant.
- **`get_workflow_details` peut dépasser le seuil de rejet client** (constaté
le 25/08/2026, livraison du lot 4). La définition complète de
`CST_SendRejectContainersToPK` (application `CustomApp`) fait ~101 800
caractères via le protocole — au-delà du seuil de rejet mesuré en D24
(~70 000). Comportement antérieur au lot 4 (les grosses définitions
`EasyWMS` sont dans le même cas) : à borner et signaler (`truncated`/`hint`,
D24) dans un lot futur.
- **Une ligne Writing est énorme** (mesuré le 25/08/2026, révision du lot 4).
`call_query_api("Products", query_type: 1, limit: 1)` → **95 288 caractères
pour une seule ligne** : le modèle Writing sérialise l'agrégat complet
(navigations, `$id`…), là où la même ligne en Reading pèse ~4 500 caractères.
Au-delà du seuil de rejet client (~70 000, D24) dès `limit: 1`. À traiter
avec le point `get_workflow_details` ci-dessus : même famille D24 (borner et
signaler), et l'avertissement mérite d'apparaître dans la description du
paramètre `query_type`.
- **Champ `tool` absent des erreurs construites localement** (constaté le
25/08/2026). Les `catch` locaux d'`api-tools.js` renvoient
`{ success: false, error }` sans le champ `tool` du contrat (convention 3) —
motif antérieur au lot 4. Cosmétique : soit laisser l'erreur remonter au
wrapper (qui ajoute `tool`), soit l'ajouter aux enveloppes locales.
- **Déploiement SSH sur la VM** : l'exécutable est validé, la configuration SSH
reste à faire.
- **Historique des shipment templates** : hors de portée, les logs concernés