L2.3 : garde-fous get_workflow_details et search_logs
Deux anomalies préexistantes au lot 1, mesurées le 24/08/2026 :
- get_workflow_details({}) renvoyait success: true avec le premier
workflow du cache : getWorkflowDetails() comparait w.Id/w.Code/w.Name,
clés qui n'existent pas sur les objets AD réels (minuscules, D5) —
undefined === undefined matchait. Clés mortes supprimées (id et name
seuls existent, les parseInt sur des GUID étaient morts aussi), garde
d'entrée rejetant workflow_id absent avec renvoi vers search_workflows.
- search_logs({}) plantait en "Cannot read properties of undefined
(reading 'toLowerCase')" : garde d'entrée nommant "keyword" avec un
exemple d'appel.
Le wrapper D23 rejette déjà ces appels via required — les gardes côté
code restent, la validation SDK n'étant pas garantie pour les appelants
directs des services.
Mesures :
- via le protocole, les deux appels {} -> "Paramètre(s) requis
manquant(s) pour ... " (wrapper D23)
- gardes appelées en direct (sans wrapper) :
getWorkflowDetails(undefined) jette "workflow_id est requis (id ou nom
exact du workflow)..." ; search_logs({}) répond success: false avec le
message nommant keyword
- get_workflow_details avec un id réel (2e workflow du cache, pas le
premier) -> objet brut complet ($id, validFrom, ..., data), id/name
conformes à la recherche
ROADMAP : L2.3 retirée, lot 2 soldé.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+3
-23
@@ -12,31 +12,11 @@ contient que ce qui reste à faire.
|
||||
|
||||
---
|
||||
|
||||
## Lot 2 — Correctif de fond
|
||||
|
||||
La cause racine commune du lot (résolution `Name` -> `TableName` via l'API
|
||||
Metadata) est livrée — la règle et ses mesures vivent en **D21**.
|
||||
|
||||
### L2.3 — Arguments manquants : deux garde-fous
|
||||
|
||||
Découverts lors de la révision du lot 1 (24/08/2026), en bouclant sur les 23
|
||||
outils avec des arguments vides. Préexistants au lot 1 (vérifié sur le diff) :
|
||||
|
||||
- `get_workflow_details` sans `workflow_id` renvoie `success: true` avec **le
|
||||
premier workflow du cache**. Cause : `getWorkflowDetails()`
|
||||
(`workflow-service.js`) compare `w.Code === workflowId` — or `Code`, `Id`,
|
||||
`Name` n'existent pas sur les objets réels (clés minuscules, D5), donc
|
||||
`undefined === undefined` matche. Supprimer les clés mortes de la
|
||||
comparaison et rejeter un `workflow_id` absent avec un message actionnable.
|
||||
- `search_logs` sans terme de recherche renvoie
|
||||
`Search failed: Cannot read properties of undefined (reading 'toLowerCase')`
|
||||
— le contrat d'erreur tient, mais le message viole la convention 4
|
||||
(actionnable). Garde d'entrée avec le nom du paramètre attendu.
|
||||
|
||||
---
|
||||
|
||||
## Lot 3 — Ergonomie et documentation
|
||||
|
||||
Le lot 2 (résolution `Name` -> `TableName`, rejet des paramètres inconnus,
|
||||
garde-fous d'arguments manquants) est livré — voir **D21** et **D23**.
|
||||
|
||||
### L3.1 — Bornage des sorties volumineuses
|
||||
|
||||
- `get_system_parameters` : ajouter `limit` / `offset`, aujourd'hui absents
|
||||
|
||||
Reference in New Issue
Block a user