feat(demo): plain-language integration status, richer audit, reset integrity

Integration status badges across Dashboard/Automation now show honest
plain-language labels instead of raw backend state strings (and fix a
few states that had no matching CSS colour class at all). Audit trail
gets a "view related events" action reusing the existing correlation_id
filter. About page gains scope/architecture/security/testing sections
and a guided-demo entry point. POST /api/v1/demo/reset now runs and
records a server-side scenario-integrity check. Also fixes a second real
race condition (caught by the return-review e2e test): the odometer
scenario pre-fill now resolves before ReturnForm mounts instead of
patching its value in after the fact.
This commit is contained in:
NuklearRabbit
2026-08-03 15:00:11 +02:00
parent cf9a889547
commit 5fa4fe0811
13 changed files with 254 additions and 48 deletions
+18
View File
@@ -0,0 +1,18 @@
import type { IntegrationStatus } from "../api/types";
// Plain-language status per section 12 of the demo brief: a visitor shouldn't have to
// decode raw backend state strings to tell whether an integration is actually working.
// `statusClass` maps onto an existing `.status-*` CSS modifier so the badge keeps
// correct colour-coding; `label` is the human-readable text shown instead of the raw value.
export const N8N_STATE_META: Record<IntegrationStatus["n8n"]["state"], { statusClass: string; label: string }> = {
disabled: { statusClass: "not_configured", label: "Not connected" },
unavailable: { statusClass: "unavailable", label: "Delivery failed" },
degraded: { statusClass: "needs_attention", label: "Retry available" },
operational: { statusClass: "available", label: "Operational" },
no_evidence: { statusClass: "no_events", label: "Prepared" },
};
export const MCP_STATE_META: Record<IntegrationStatus["mcp_hub"]["state"], { statusClass: string; label: string }> = {
not_configured: { statusClass: "not_configured", label: "Not connected" },
configured: { statusClass: "no_events", label: "Prepared" },
};