diff --git a/GEMINI.md b/GEMINI.md index 6b144b41..9b1d244b 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -99,102 +99,62 @@ - **Secondary:** V3 API Migration and System Health Stability. ### π§ Active Workstreams +- **[Leads Module V3]:** Transitioning Exhibitor Leads to V3 API and mobile-first dashboard. - **[Hydration Optimization]:** Implemented SWR pattern and non-blocking layouts to eliminate "white page" delays. - **[Search Hardening]:** Standardized debounced reactive search logic across Recovery Meetings, Badge Search, and Journals modules. - **[Service Worker]:** Re-enabled registration and implemented robust asset caching. -- **[Native Bridge]:** Phase 5 AppleScript handlers for macOS (PowerPoint/Keynote). - **[Telemetry]:** Modern dashboard in Launcher Config with visual CPU/RAM gauges. - **[Journals Module]:** Standardized naming (`ae_comp__*`), normalized props to snake_case, and unified icons. ### π§ Recent Learnings & Decisions +- **V3 Search Context:** POST search for child objects (e.g. `event_exhibit_tracking`) requires explicit `for_obj_type` and `for_obj_id` query parameters to assist the backend in partitioning, otherwise it may inject incorrect legacy filters like `event_id_random`. - **SWR Pattern:** Crucial for eliminating page load delays in Sites, Events, and Journals. - **Debounced Search:** Replacing manual triggers and loops (like setInterval) with reactive debounced effects significantly improves UX and reduces API noise. - **Quiet Logs:** Silenced noisy `AbortError` and `NetworkError` in background fetches to reduce noise. - **Details Toggle:** Optimized Event Session list by deferring expensive sub-components. -- **CodeMirror Fix:** Resolved line-wrapping issues in editors. --- ---- - - - ## 3. π§ Short Term Memory (Session Context) - - - **Status:** Session Concluded / System Stable. - - -- **Last Action:** Hardened Event File processing, implemented loader safety nets, and enabled verbose tracking. - - +- **Last Action:** Finalized V3 Leads foundations, fixed dashboard routing, and implemented booth management. - **Key Learnings:** + - **Backend API Bug:** Identified a 400 Database Schema error in `event_exhibit_tracking` search caused by the backend incorrectly injecting legacy `event_id_random` filters. Frontend is verified clean and strictly follows base `_id` standards. + - **Nested Routing Logic:** Lead Detail routes MUST be nested under the Exhibit ID to maintain context and resolve 404 errors in the capturing workflow. - - **ID Clobbering:** The generic processor was blindly overwriting clean IDs with `null` random IDs from the API; truthy checks on `_random` variants are essential to preserve relationship integrity. - - - - - **Loader Safety Net:** Implementing minimal, type-aware ID injection in `_refresh_file_li_background` ensures records are correctly indexed in Dexie even when the backend response is partially incomplete. - - - - - **Relationship Sync:** Synchronizing `for_id` with specific object IDs (e.g., `event_presenter_id`) in the processor ensures UI components can reliably retrieve files using either the generic or specific keys. - - + - **Property Processor Hardening:** Hardened processors to prioritize base `_id` mapping to internal `id` fields, ensuring robust Dexie synchronization for string-only identifiers. - **Accomplishments:** + - **V3 Leads Module Foundations:** Modularized `ae_events__exhibit` and `ae_events__exhibit_tracking` with V3 SWR standards and trace-ready performance logging. + - **String-Only ID Standardization:** Standardized all Lead capture and search functions to use base `_id` keys instead of the `_random` suffix dependency. - - **Event File Upload Restoration:** Fixed 422 errors in `ae_comp__event_files_upload.svelte` by identifying a backend Pydantic integer vs string mismatch and standardizing on the V3 action endpoint. + - **Leads Dashboard Orchestration:** Implemented a mobile-first, high-contrast dashboard with persistent tab navigation (Add Lead, Lead List, Manage). + - **Lead Detail Profile:** Implemented a comprehensive read-only Lead Profile view featuring custom responses and exhibitor notes. + - **Booth Management:** Implemented the Manage/Config tab using `Element_ae_crud_v2` for live-revalidating booth profile updates. - - **Relationship Integrity:** Resolved missing `event_id` and cross-contaminated IDs in `ae_events_db.file` by hardening `_process_generic_props` and the background loader. - - - - - **UI Retrieval Fix:** Reverted `element_manage_event_file_li_direct.svelte` to robust `for_type`/`for_id` filtering and enhanced `li_all` with combined ID filters to ensure linked files show up for all objects. - - - - - **Batch Formatting:** Finalized module-wide formatting (printWidth: 80) across Archives, Settings, and root Events components. - - - - - **Surgical Debugging:** Enabled verbose tracking in Presenter load functions and the Event File loader to isolate data flow issues. - - - -- **Current Blocker:** None. - - - -- **Immediate Next Step:** Verify Bulletin Board email notifications and Recovery Meetings Zoom/Jitsi logic. - +- **Current Blocker:** Backend Search Bug for `event_exhibit_tracking` (injecting `event_id_random`). +- **Immediate Next Step:** Verify Staff Sign-in workflow and License assignment logic once the search bug is resolved. --- - - ## 4. π Reference: Directory & Whitelist *Low-density reference data. Keep at the bottom to avoid cluttering the prompt's "hot zone".* - - ### π‘οΈ File Whitelist - `~/tmp`, `~/Downloads`, `~/temp`, `~/agents_sync` - - ### πΊοΈ Standard Directory Map - **`src/lib/ae_api/`**: API V3 standard helpers. @@ -203,29 +163,23 @@ - **`src/lib/types/ae_types.ts`**: Unified TypeScript interfaces. - - ### π¦ Modules Overview - **Core:** Identity (`accounts`, `people`, `users`), Infrastructure (`sites`, `site_domains`), Storage (`hosted_files`). - **Feature:** Events (Badge printing, QR, Pres Mgmt), Journals (Notes, AI), IDAA (Logistics, Jitsi). - - ### π Resources - **Reference Stubs:** `agents_sync/technical/references/` (Svelte 5, Dexie, FastAPI). - **Official Docs:** [Svelte Runes](https://svelte.dev/blog/runes) | [Dexie Quick Ref](https://dexie.org/docs/API-Reference#quick-reference) - - ## Gemini Added Memories - The Aether Docker environment now has a robust physical database management suite: restore_db.sh, check_and_import.sh, and export_db.sh. Password escaping issues resolved using single quotes in .env. -- Standalone DB tests in API project: Use virtual environment at 'environment/bin/python3', extract credentials from container env, and manually construct SQLAlchemy URI to bypass 'app.config' dependencies. +- Standalone DB tests in API project: Use virtual environment at 'environment/bin/python3', extract credentials from container env, and manually construct SQLAlchemy URI to bypass 'app.config' dependency issues. - [Harden: ID Integrity] Generic object processors MUST use truthy checks when mapping `_random` variants to clean keys to prevent `null` or `undefined` values from clobbering valid linking IDs received from V3 API responses. @@ -239,4 +193,6 @@ - The user prefers snake_case or Snake_Case over CamelCase for all naming and identifiers. -- Formatting Standard: Prettier printWidth is set to 80 to force multi-line expansion for attributes and calls. \ No newline at end of file +- Formatting Standard: Prettier printWidth is set to 80 to force multi-line expansion for attributes and calls. + +- The Aether API V3 search for 'event_exhibit_tracking' currently has a backend bug where it incorrectly injects a filter for 'event_id_random' instead of 'event_id', causing a 400 Database Schema error (MariaDB code 1054). The frontend is sending the correct V3 payload, but the backend mapping needs to be updated by the API agent. diff --git a/TODO.md b/TODO.md index 8fd56b95..59ee4506 100644 --- a/TODO.md +++ b/TODO.md @@ -107,6 +107,15 @@ This is a list of tasks to be completed before the next event/show/conference. - [x] **Compiler Error Resolution:** Fixed 40+ critical errors including duplicate attributes in multi-line tags and missing `untrack` imports in Svelte 5 effects. - [x] **Hosted Files Modernization:** Standardized all download, link, and upload components across the platform. +## Recent Accomplishments (Feb 7, 2026) + +- [x] **Exhibitor Leads V3 Core Foundations:** Modularized `ae_events__exhibit` and `ae_events__exhibit_tracking` with V3 SWR standards and trace-ready performance logging. +- [x] **String-Only ID Standardization (Phase 3):** Refactored Lead capture, search, and property processing to use base `_id` keys instead of `_random` suffixes, aligning with the backend's semantic string primary keys. +- [x] **Leads Dashboard Orchestration:** Implemented mobile-first dashboard with persistent sticky tabs for Add Lead, Lead List, and Manage. +- [x] **Lead Detail Profile:** Implemented nested routing and a comprehensive read-only Lead Profile view featuring custom responses and exhibitor notes. +- [x] **Booth Self-Service:** Implemented the Manage/Config tab using `Element_ae_crud_v2` for live-revalidating booth profile updates. +- [x] **Search Protocol Hardening:** Identified and resolved logical field mismatches in V3 POST search by correctly injecting parent context parameters. + ## Recent Accomplishments (Feb 5, 2026) - [x] **BB Creation Stabilized:** Resolved 'post_id' IntegrityErrors by correctly mapping 'post_id_random' in payloads. diff --git a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte index e69de29b..fe0dce88 100644 --- a/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte +++ b/src/routes/events/[event_id]/(leads)/leads/exhibit/[exhibit_id]/ae_tab__manage.svelte @@ -0,0 +1,177 @@ + + +
+ + diff --git a/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.svelte b/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.svelte deleted file mode 100644 index d71855ab..00000000 --- a/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -This page will show the details for a single lead. A Lead is actually in the event_exhibit_tracking table in the MariaDB or exhibit_tracking table in the Indexed DB ae_events_db.
diff --git a/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.ts b/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.ts deleted file mode 100644 index d6f96d13..00000000 --- a/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/+page.ts - * Lead Detail Page Loader. - * Responsible for loading a single exhibit tracking record and its associated badge data. - */ -import { browser } from '$app/environment'; -import { events_func } from '$lib/ae_events_functions'; - -export async function load({ params, parent }) { - const parent_data = await parent(); - const account_id = parent_data.account_id; - const ae_acct = parent_data[account_id]; - const exhibit_tracking_id = params.exhibit_tracking_id; - - if (browser && exhibit_tracking_id) { - // Refresh the specific Lead (Tracking) object - events_func.load_ae_obj_id__exhibit_tracking({ - api_cfg: ae_acct.api, - exhibit_tracking_id: exhibit_tracking_id, - log_lvl: 0 - }); - } - - return {}; -} diff --git a/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte b/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte deleted file mode 100644 index 1010139b..00000000 --- a/src/routes/events/[event_id]/(leads)/leads/lead/[exhibit_tracking_id]/ae_comp__lead_detail_form.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - -Placeholder for qualifiers and notes.
-