docs + fix: Leads module doc, badges onsite doc, license access fix, QR log cleanup

- Add MODULE__AE_Events_Exhibitor_Leads.md — full module reference (auth model, tabs,
  data model, routes, offline/PWA notes, OSIT admin notes)
- Add MODULE__AE_Events_Badges_Onsite.md — onsite printing guide (browser settings,
  CUPS/Linux setup, Zebra ZC10L section with test results, Epson stub, troubleshooting)
- Archive PROJECT__AE_Events_Exhibitor_Leads_v3*.md + Zebra test day doc → history/
- Fix leads license management access: ae_tab__manage.svelte license section now visible
  to administrator_access OR shared-passcode sign-in (type === 'shared'); matches spec
- Add type field to LeadsLocState.auth_exhibit_kv interface (was set at runtime but missing from type)
- Silence QR code console noise: entry log gated at log_lvl >= 2, data URL log removed
- vite.config.ts: exclude documentation/ and tests/ from Vite HMR file watcher

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-20 12:58:57 -04:00
parent 9673cbefe3
commit 14c2635df4
11 changed files with 462 additions and 12 deletions

View File

@@ -175,10 +175,11 @@ export async function js_generate_qr_code(qr_type: string, params: key_val = {})
key,
val,
js,
str
str,
log_lvl = 0
} = params;
console.log(`*** js_generate_qr_code() *** qr_type=${qr_type}`, params);
if (log_lvl >= 2) console.log(`*** js_generate_qr_code() *** qr_type=${qr_type}`, params);
let qr_data: string | null = null;
@@ -251,7 +252,6 @@ export async function js_generate_qr_code(qr_type: string, params: key_val = {})
scale: 10, // Corresponds to box_size
type: 'image/png'
});
console.log('Generated QR code data URL:', data_url);
return data_url;
} catch (error) {
console.error('Error generating QR code:', error);

View File

@@ -29,8 +29,8 @@ export interface LeadsLocState {
tracking__qry__sort_order: string;
tracking__qry__licensee_email: string;
entered_passcode: string | null;
// Value shape: { key: string; updated_on: string } — entries expire after a configurable max age.
auth_exhibit_kv: Record<string, { key: string; updated_on: string }>;
// Value shape: key = passcode/email used; type = 'shared' | 'licensed'; entries expire after a configurable max age.
auth_exhibit_kv: Record<string, { key: string; type: string; updated_on: string }>;
edit_license_li: boolean;
// Key = exhibit ID (random), value = last-used tab name.
tab: Record<string, string>;