With a few fails among tens of thousands of rows, 1-decimal rounding hid residual failures; keep extra precision so the UI never shows 100% when fails remain.
Co-authored-by: Cursor <cursoragent@cursor.com>
Collapse equal pair cells, hide display columns by default, fold field filters, and keep failed sheets first so diffs stand out.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show localized phases with progress bars on the runs tab and result board, and make cancel/status easier to act on during long compares.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show pending check items instead of a fake 100% pass, publish sheet results as each finishes, and use keyset chunk loads with rows-loaded progress.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run compares in the background with progress, persist fails first, and store success as sampled key+row_id hydrated from source so million-row sheets no longer block the API.
Co-authored-by: Cursor <cursoragent@cursor.com>
Skip Dest/Network headers when Total routes is 0; capture direction from match groups; expose workbook compare/data/sheet stats and prefer batch aliases in compare/cutover pickers.
Co-authored-by: Cursor <cursoragent@cursor.com>
BGP/ISIS (and any other metric) can share a metric_id with distinct sheet_id + row_filters; drop conflicting bgp state_or_pfx and keep state/pfx_rcd.
Co-authored-by: Cursor <cursoragent@cursor.com>
Mapped interfaces are the expect set and must appear after cutover; unmapped same-name down/up is anomaly. Success presets no longer treat bare unchanged as green.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move biz monitor/compare/migration under Cutover compare, split compare templates into their own page, and add monitor-template CRUD that overlays compare templates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Derive fail from missing+mismatch only, recompute pass rate accordingly, and put check-item count on one row aligned with fail/success/%.
Co-authored-by: Cursor <cursoragent@cursor.com>
Treat missing+mismatch as fail, match as success, and added as a special filter; show three right-aligned sheet badges.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fill started_at from batch lists, show compact times, and right-align color-only -/+~/ = counts per sheet.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the batch-run label, resolve NE from job tasks, and slim left-nav badges to pass or non-zero fail counts only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep device and collect time beside export actions; drop the run verdict row and show miss/extra/mismatch/match badges on each left-nav check item.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enrich run detail with before/after NE labels, and keep present-side values readable for added/removed rows instead of striking them out.
Co-authored-by: Cursor <cursoragent@cursor.com>
Make field purpose visible in the sticky table header so reviewers can tell identity vs check vs context at a glance.
Co-authored-by: Cursor <cursoragent@cursor.com>
Key stays single-value; other fields always render a paired 前/后 cell so cutover diffs are readable at a glance.
Co-authored-by: Cursor <cursoragent@cursor.com>