M14: add n8n execution health telemetry
This commit is contained in:
@@ -315,6 +315,9 @@ export interface N8nWorkflowEvidence {
|
||||
name: string;
|
||||
built: boolean;
|
||||
last_seen_at: string | null;
|
||||
state: "no_evidence" | "healthy" | "stale" | "failed";
|
||||
last_status: "succeeded" | "failed" | null;
|
||||
last_execution_id: string | null;
|
||||
}
|
||||
|
||||
export interface N8nErrorHandlerStatus {
|
||||
|
||||
@@ -37,6 +37,10 @@
|
||||
"description": "{{known}} of {{expected}} canonical n8n workflows have live evidence of running.",
|
||||
"notBuilt": "Not built yet",
|
||||
"noEvidence": "No evidence yet",
|
||||
"healthy": "Healthy",
|
||||
"stale": "Evidence is stale",
|
||||
"failed": "Latest execution failed",
|
||||
"executionId": "Execution",
|
||||
"columns": {
|
||||
"name": "Workflow",
|
||||
"status": "Status",
|
||||
|
||||
@@ -36,7 +36,11 @@
|
||||
"title": "Workflows d'automatisation",
|
||||
"description": "{{known}} workflows n8n canoniques sur {{expected}} disposent de preuves actuelles de fonctionnement.",
|
||||
"notBuilt": "Pas encore créé",
|
||||
"noEvidence": "Aucune preuve pour l'instant",
|
||||
"noEvidence": "Aucune preuve pour l’instant",
|
||||
"healthy": "Sain",
|
||||
"stale": "Preuve obsolète",
|
||||
"failed": "Dernière exécution échouée",
|
||||
"executionId": "Exécution",
|
||||
"columns": {
|
||||
"name": "Workflow",
|
||||
"status": "Statut",
|
||||
|
||||
@@ -37,6 +37,10 @@
|
||||
"description": "{{known}} van {{expected}} canonieke n8n-workflows hebben actuele evidentie van werking.",
|
||||
"notBuilt": "Nog niet gebouwd",
|
||||
"noEvidence": "Nog geen evidentie",
|
||||
"healthy": "Gezond",
|
||||
"stale": "Evidentie verouderd",
|
||||
"failed": "Laatste uitvoering mislukt",
|
||||
"executionId": "Uitvoering",
|
||||
"columns": {
|
||||
"name": "Workflow",
|
||||
"status": "Status",
|
||||
|
||||
@@ -279,9 +279,13 @@ export function Automation() {
|
||||
const displayName = slug ? t(`workflows.names.${slug}`) : w.name;
|
||||
const badge = !w.built
|
||||
? { status: "not_configured", label: t("workflows.notBuilt") }
|
||||
: w.last_seen_at
|
||||
? { status: "available", label: t("statusLabels.operational") }
|
||||
: { status: "no_events", label: t("workflows.noEvidence") };
|
||||
: w.state === "healthy"
|
||||
? { status: "available", label: t("workflows.healthy") }
|
||||
: w.state === "stale"
|
||||
? { status: "degraded", label: t("workflows.stale") }
|
||||
: w.state === "failed"
|
||||
? { status: "failed", label: t("workflows.failed") }
|
||||
: { status: "no_events", label: t("workflows.noEvidence") };
|
||||
return (
|
||||
<tr key={w.name}>
|
||||
<td data-label={t("workflows.columns.name")}>{displayName}</td>
|
||||
@@ -298,7 +302,7 @@ export function Automation() {
|
||||
<td data-label={t("workflows.columns.technicalId")}>
|
||||
<details className="evidence-disclosure">
|
||||
<summary>{t("common:actions.technicalDetails")}</summary>
|
||||
<span className="table-subtext">{w.name}</span>
|
||||
<span className="table-subtext">{w.name}{w.last_execution_id ? ` · ${t("workflows.executionId")}: ${w.last_execution_id}` : ""}</span>
|
||||
</details>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user