feat: leads re-enable flow — detect removed leads on scan + Remove/Restore buttons

- QR scanner (single + multi): detect previously-removed leads via IDB enable flag;
  route to 'reenable' state instead of duplicate error; offer Re-activate button
- API fallback: if create fails and no IDB record, search API for disabled tracking
  record by event_exhibit_id + event_badge_id (adds qry_badge_id param to
  search__exhibit_tracking)
- Lead detail page: Replace raw enable checkbox with Remove Lead (two-click confirm,
  navigates back after) and Restore Lead card (shown when enable is falsy)
- Fix flash of disabled records in leads list: filter !enable in both filtered_lead_li
  derived and local IDB fast-path in handle_search_refresh
- eslint.config.js: disable svelte/no-navigation-without-resolve (no base path configured)
- Also includes _random field annotation cleanup (db_events, ae_types), iframe layout
  fixes, badge view tweaks, test updates, and doc updates from prior session

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-20 18:18:10 -04:00
parent 4586e809d7
commit 6662e82f40
18 changed files with 505 additions and 266 deletions

View File

@@ -22,11 +22,11 @@ const template_id = 'jgfixEpYp1B';
const mock_badge = {
id: badge_id,
event_badge_id: badge_id,
event_badge_id_random: badge_id,
event_badge_id_random: badge_id, // NO LONGER USE "_random"
event_id: event_id,
event_id_random: event_id,
event_badge_template_id: template_id,
event_badge_template_id_random: template_id,
event_badge_template_id_random: template_id, // NO LONGER USE "_random"
full_name_override: 'Scott Idem',
given_name: 'Scott',
family_name: 'Idem',
@@ -41,7 +41,7 @@ const mock_badge = {
const mock_template = {
id: template_id,
id_random: template_id,
id_random: template_id, // NO LONGER USE "_random"
event_badge_template_id: template_id,
badge_template_id: template_id,
event_id: event_id,

View File

@@ -42,11 +42,11 @@ function make_badge(badge_id: string, template_id: string, overrides: Record<str
return {
id: badge_id,
event_badge_id: badge_id,
event_badge_id_random: badge_id,
event_badge_id_random: badge_id,// NO LONGER USE "_random"
event_id: event_id,
event_id_random: event_id,
event_id_random: event_id,// NO LONGER USE "_random"
event_badge_template_id: template_id,
event_badge_template_id_random: template_id,
event_badge_template_id_random: template_id,// NO LONGER USE "_random"
full_name: 'Jane Doe',
full_name_override: null,
given_name: 'Jane',