Backend: - New ivanti_finding_overrides table (finding_id, field, value) with UNIQUE(finding_id, field) — same survival-across-sync pattern as notes - PUT /api/ivanti/findings/:id/override (editor/admin only) — saves or clears a field override; empty value = revert to Ivanti - Overrides merged into findings at read time via readOverrides() - Whitelisted fields: hostName, dns Frontend: - OverrideCell component — click to edit inline (editor/admin only), Enter/blur to save, Escape to cancel - Amber dot indicator on cells with an active local override - Hover tooltip shows original Ivanti value when overridden - RotateCcw button reverts cell back to Ivanti value in one click - canWrite() gating via useAuth — viewers see the value, can't edit Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20 KiB
20 KiB