/* global React, HashBadge, AttestationStatePill, ReasonCodeChip, LatencyBudgetMeter, MerkleProofTree, TimelineAxis, ThresholdGateIndicator, PartyAttestationRow, Spark */ const { useState: useS, useMemo: useM } = React; /* ========================================================= FRAUD DECISION AUDIT CONSOLE — hero screen ========================================================= */ function FraudConsole() { const decisions = [ { id: "ATT-7F4A2C91", t: "14:22:07.384921", mcc: "5411", amt: "€82.40", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 2.14, codes: ["F00"], risk: 0.08 }, { id: "ATT-7F4A2C90", t: "14:22:07.312044", mcc: "7995", amt: "€1,240.00", outcome: "DECLINE", state: "finalized", model: "v4.2.1", lat: 3.41, codes: ["F14","F22"], risk: 0.91 }, { id: "ATT-7F4A2C8F", t: "14:22:07.294113", mcc: "5732", amt: "€340.10", outcome: "STEP_UP", state: "witnessed", model: "v4.2.1", lat: 2.88, codes: ["F07"], risk: 0.52 }, { id: "ATT-7F4A2C8E", t: "14:22:07.201770", mcc: "5411", amt: "€12.19", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 1.94, codes: [], risk: 0.04 }, { id: "ATT-7F4A2C8D", t: "14:22:07.140219", mcc: "6011", amt: "€500.00", outcome: "DECLINE", state: "finalized", model: "v4.2.1", lat: 2.63, codes: ["F02"], risk: 0.77 }, { id: "ATT-7F4A2C8C", t: "14:22:07.098001", mcc: "4829", amt: "€2,500.00", outcome: "STEP_UP", state: "signed", model: "v4.2.0", lat: 3.86, codes: ["F11","F07"], risk: 0.63 }, { id: "ATT-7F4A2C8B", t: "14:22:07.001220", mcc: "5812", amt: "€44.90", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 1.72, codes: [], risk: 0.02 }, { id: "ATT-7F4A2C8A", t: "14:22:06.982147", mcc: "5944", amt: "€180.00", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 2.05, codes: ["F00"], risk: 0.11 }, { id: "ATT-7F4A2C89", t: "14:22:06.870311", mcc: "5999", amt: "€8,200.00", outcome: "DECLINE", state: "failed", model: "v4.2.1", lat: 3.12, codes: ["F22","F14","F07"], risk: 0.96 }, { id: "ATT-7F4A2C88", t: "14:22:06.811400", mcc: "5411", amt: "€29.00", outcome: "APPROVE", state: "finalized", model: "v4.2.1", lat: 1.58, codes: [], risk: 0.06 }, ]; const [selected, setSelected] = useS(1); // the €1,240 decline — interesting const d = decisions[selected]; const rcMap = { F00: ["velocity", "low"], F02: ["device reputation", "high"], F07: ["geo mismatch", "med"], F11: ["merchant risk", "med"], F14: ["BIN risk + amount", "high"], F22: ["graph cluster", "high"], }; return (
| timestamp | outcome | risk | lat | state |
|---|---|---|---|---|
| {x.t.slice(6)} |
{x.codes.map(c => {c})}
|
|
3 ? "var(--ak-latency-warn)" : "var(--ak-fg-1)" }}>{x.lat.toFixed(2)} |