From e56485d014fd640da072ced1e5a0375ead05121b Mon Sep 17 00:00:00 2001 From: Patrick Schurig Date: Wed, 21 Oct 2026 14:00:57 +0200 Subject: [PATCH] =?UTF-8?q?outil(protocole)=20:=20bloc=20g=C3=A9n=C3=A9r?= =?UTF-8?q?=C3=A9=20=C2=AB=20errors=20=C2=BB,=20les=20erreurs=20que=20renv?= =?UTF-8?q?oie=20l'optimiseur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit etm-powersync-gen-protocol-doc sait rendre un bloc `errors` : une table des methods[].errors puis de x-etm-message-errors (code, méthode, message, connexion après l'erreur, quand), suivie de ce que le moteur fait d'une réponse error (x-etm-errors-engine). Aucune prose n'utilise encore le bloc : --check reste vert sur l'état commité. Co-Authored-By: Claude Opus 5.5 --- tools/etm-powersync-gen-protocol-doc | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/etm-powersync-gen-protocol-doc b/tools/etm-powersync-gen-protocol-doc index 59e72c3..2ed8603 100755 --- a/tools/etm-powersync-gen-protocol-doc +++ b/tools/etm-powersync-gen-protocol-doc @@ -17,7 +17,9 @@ est écrit à la main. `` : - `table:.params` — les params d'une méthode ; - `table:.result` — son résultat ; - `table:` — un schéma de `components.schemas` (un `oneOf` donne une table par branche) ; -- `rules` — `x-etm-semantic-rules` ; `reason-codes` — codes émissibles et leurs clés de paramètres. +- `rules` — `x-etm-semantic-rules` ; `reason-codes` — codes émissibles et leurs clés de paramètres ; +- `errors` — les erreurs que renvoie l'optimiseur : `methods[].errors`, puis `x-etm-message-errors` + (protocole 1.2), et ce que le moteur fait d'une réponse error (`x-etm-errors-engine`). Une table déroule les objets EN LIGNE (`declared.minPowerW`) ; un `$ref` renvoie à la table de son composant. Un `` inconnu, une balise sans fin, un bloc imbriqué : erreur (code 2). @@ -222,7 +224,28 @@ class Rendu: out.append(f'| `{code}` | {", ".join(f"`{k}`" for k in cles.get(code, [])) or "—"} |') return out + def erreurs(self): + messages = self.doc.get('x-etm-message-errors', {}) + out = ['| Code | Méthode | `message` | Connexion après l\'erreur | Quand |', '|---|---|---|---|---|'] + moteur = [] + for m in self.doc.get('methods', []): + for e in m.get('errors', []): + out.append(f'| `{e["code"]}` | {m["name"]} | {self.sens({"description": e.get("message", "")})} | ' + f'{e.get("x-etm-connection", "—")} | {self.sens({"description": e.get("data", "")})} |') + if m.get('x-etm-errors-engine'): + moteur.append(f'- **{m["name"]}** : {self.sens({"description": m["x-etm-errors-engine"]})}') + for e in messages.get('items', []): + out.append(f'| `{e["code"]}` | toute | {self.sens({"description": e.get("message", "")})} | ' + f'{e.get("x-etm-connection", "—")} | {self.sens({"description": e.get("data", "")})} |') + if messages.get('description'): + out += ['', self.sens(messages)] + if moteur: + out += ['', 'Ce que fait le moteur d\'une réponse error :', ''] + moteur + return out + def bloc(self, quoi): + if quoi == 'errors': + return self.erreurs() if quoi == 'rules': return self.regles() if quoi == 'reason-codes':