/** * src/workspaces/DiffMergeWorkspace/DiffMergeWorkspace.tsx */ import { useState } from "react"; import { logEvent } from "../../store/registryStore"; const THEME_CSS = ` .glass-panel { background: linear-gradient(135deg, rgba(13,17,23,0.75), rgba(22,27,34,0.6)); backdrop-filter: blur(16px) saturate(1.2); -webkit-backdrop-filter: blur(16px) saturate(1.2); border: 1px solid rgba(88,166,255,0.2); box-shadow: 0 8px 32px rgba(0,0,0,0.5), inset 1px 1px 0 rgba(255,255,255,0.05); } `; export function DiffMergeWorkspace() { const [primaryId, setPrimaryId] = useState("n-primary-1"); const [duplicateId, setDuplicateId] = useState("n-dup-2"); const [msg, setMsg] = useState(""); const handleMerge = async () => { try { const res = await fetch("/api/enrich/merge", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ primary_id: primaryId, duplicate_ids: [duplicateId] }) }); const data = await res.json(); if (data.merged_into) { setMsg(`Merge success: redirected ${data.edges_updated} edges to ${data.merged_into}`); logEvent("merge", `Merged ${duplicateId} → ${data.merged_into} · ${data.edges_updated} edges redirected`, { primary: data.merged_into, duplicate: duplicateId, edgesUpdated: data.edges_updated, }); } else { setMsg("Merge failed..."); } } catch (err) { setMsg("Error calling merge endpoint."); } }; return (

Entity Diff & Merge

Compare suspected duplicate entities and reconcile them.

{/* Primary View */}

Primary Entity

setPrimaryId(e.target.value)} style={{ width: "100%", background: "rgba(0,0,0,0.3)", border: "1px solid rgba(255,255,255,0.1)", color: "#fff", padding: "8px 12px", borderRadius: 6, marginBottom: 24 }} />
Name
Sample Company Inc.
Founded
2004-05-12
{/* Duplicate View */}

Duplicate Entity

setDuplicateId(e.target.value)} style={{ width: "100%", background: "rgba(0,0,0,0.3)", border: "1px solid rgba(255,255,255,0.1)", color: "#fff", padding: "8px 12px", borderRadius: 6, marginBottom: 24 }} />
Name
{/* Amber highlight for differing values */}
Sample Company
Founded
2004-05-12
{msg}
); }