Historique des actions
Lire les lignes d'actions sortantes de votre espace de travail, filtrer celles au résultat inconnu en attente de réconciliation, et les réconcilier.
createKernelClient(...).actionHistory liste et lit les lignes
action_outbound_request : les unités sortantes qu'une Action du noyau a
mises en file, envoyées ou attend de réconcilier. Il répond à la question que
les opérateurs ne pouvaient pas autrement se poser — quelles lignes sont au
résultat inconnu (Outcome unknown), retiennent une cible, et ont besoin
d'une décision — sans connaissance hors bande.
À la différence de actionApprovals, cette lecture est limitée à l'espace de
travail entier, pas à une ontologie : une unité sortante n'est pas elle-même
un objet d'ontologie, il n'y a donc aucune ontologie à choisir.
La liste commence par la ligne la plus récente. Quand hasMore vaut true,
renvoyez nextCursor comme cursor pour lire les lignes créées avant la
dernière de la page.
const page = await ontology.actionHistory.list({
status: "outcome_unknown",
});
for (const row of page.items) {
console.log(row.effectId, row.status, row.target, row.canReconcile);
}
const row = await ontology.actionHistory.get({ effectId: page.items[0].effectId });Filtres
| Filtre | Signification |
|---|---|
status | Un état du cycle de vie (requested à reconciled_failed, y compris outcome_unknown). |
target | La cible exacte à laquelle l'unité sortante est liée. |
source | La destination exacte (liaison ou simulation) par laquelle l'unité est envoyée. |
createdAfter / createdBefore | Bornes ISO 8601 sur createdAt. |
cursor / limit | Pagination par curseur, de la plus récente à la plus ancienne, liée au filtre et à votre niveau d'habilitation. |
Ce qu'une ligne transporte
| Champ | Signification |
|---|---|
effectId | L'identifiant de la ligne — la référence que prend action.outbound.reconcile. |
status, verificationState | Le cycle de vie sortant (@scrydon/common/security ACTION_OUTBOX_STATUS) et sa vérification de livraison. |
operation, target, source, destinationMode | Ce que fait l'unité, contre quoi, par où, et comment (simulation ou link). |
requestedBy, requestedByCaller | Qui a demandé, et si c'est vous. |
parameters, parametersRedacted | Les paramètres de l'unité, visibles uniquement par le demandeur ou un administrateur de l'organisation — masqués entièrement sinon, pas valeur par valeur. |
lifecycleHistory | Chaque transition d'état enregistrée par le serveur, en ajout seul. |
canReconcile | Vrai uniquement pour un administrateur de l'organisation, et uniquement sur une ligne au résultat inconnu. |
Chaque ligne porte le marquage de l'action qui l'a admise, et n'est renvoyée qu'à un lecteur dont le niveau d'habilitation est égal ou supérieur à ce marquage. Une ligne admise sous une approbation de requête exacte est en outre soumise au marquage de cette approbation. Une ligne au-dessus de votre habilitation n'est pas renvoyée du tout : elle est absente de la liste et sa lecture détaillée est introuvable, si bien que ni son opération, ni sa cible, ni sa liaison, ni son demandeur ne sont divulgués. Les administrateurs de l'organisation sont soumis à la même règle : être administrateur élargit ce que vous voyez d'une ligne que vous pouvez lire, jamais les lignes que vous pouvez lire.
Réconcilier une ligne au résultat inconnu
canReconcile sur une ligne vous indique si vous pouvez la décider — ne le
redérivez jamais vous-même à partir du seul status, car cela requiert aussi
la décision d'administrateur de l'organisation que le noyau a lui-même prise.
Quand il vaut true, soumettez l'action native existante
action.outbound.reconcile :
await ontology.actions.submit({
actionType: "action.outbound.reconcile",
input: {
effectId: row.effectId,
outcome: "succeeded", // ou "failed", ou "still_unknown"
reason: "livraison confirmée hors bande",
},
idempotencyKey: `reconcile-${row.effectId}-succeeded`,
});succeeded et failed font passer la ligne à son état terminal
correspondant et libèrent la retenue sur la cible de la ligne. still_unknown
enregistre la tentative (elle est auditée, comme toute Action du noyau) et
laisse la ligne exactement où elle était — un autre administrateur pourra
encore la réconcilier plus tard.