/** * 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 (
Compare suspected duplicate entities and reconcile them.