From 372d79df2bfc167284097a573685254680d9e199 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Wed, 8 Apr 2026 00:20:59 -0400 Subject: [PATCH] docs(idaa): track contact_li_json_ext search gap + message sent to backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TODO__Agents.md: added task for contact search — backend to whitelist contact_li_json_ext in event search, frontend to add OR condition in search__event() and update local IDB fast-path filter. Blocked on backend. - CLIENT__IDAA_and_customized_mods.md: documented the search architecture gap under Recovery Meetings — what default_qry_str contains, why contact_li_json is unsearchable as raw JSON, what contact_li_json_ext is and what needs to happen to enable contact name/email search. Backend agent notified via ae_send_message 2026-04-08. Co-Authored-By: Claude Sonnet 4.6 --- documentation/CLIENT__IDAA_and_customized_mods.md | 15 +++++++++++++++ documentation/TODO__Agents.md | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/documentation/CLIENT__IDAA_and_customized_mods.md b/documentation/CLIENT__IDAA_and_customized_mods.md index f7db28a3..77d08de0 100644 --- a/documentation/CLIENT__IDAA_and_customized_mods.md +++ b/documentation/CLIENT__IDAA_and_customized_mods.md @@ -372,6 +372,21 @@ Members can filter meetings by: Search is debounced (250ms) and uses the standard Aether SWR pattern. +### Search Architecture — What Is and Isn't Searched + +The fulltext search runs against the `default_qry_str` field (backend-computed, contains: +`id_random`, type, name, description, timezone, recurring pattern/text, location text). + +**Contact names and emails are NOT currently searchable.** The `contact_li_json` field is a +JSON longtext — MariaDB cannot efficiently substring-search it directly. The backend already +has a `contact_li_json_ext` (STORED GENERATED, indexed) column to work around this, but it +has not yet been added to the searchable fields whitelist in the API. + +**Pending fix (tracked in TODO__Agents.md, 2026-04-08):** +- Backend: add `contact_li_json_ext` to the event object searchable fields whitelist +- Frontend: add `contact_li_json_ext` as an OR condition in `search__event()`, and update + the local IDB fast-path filter to parse `contact_li_json` for instant cache results + ### Edit Form — Sections and Key Fields The edit form (`ae_idaa_comp__event_obj_id_edit.svelte`) is organized into these sections. diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index 268b6e4f..01a04fab 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -85,6 +85,21 @@ suddenly jumps to 0 errors, verify it's not because a bad `.d.ts` replaced a pac Run `npx svelte-check 2>&1 | grep ModalProps` to get the current list. Fix pattern: replace `children` prop binding with Svelte snippet syntax per flowbite-svelte docs. +- [ ] **[IDAA] Make `contact_li_json_ext` searchable — Recovery Meeting contact search (2026-04-08)** + Members cannot search for meetings by contact name or email. `contact_li_json` data is not + included in `default_qry_str` and MariaDB cannot substring-search a JSON longtext directly. + The `event` table already has `contact_li_json_ext` (STORED GENERATED, indexed) to work around this. + + **Backend (blocked on this first):** Add `contact_li_json_ext` to the searchable fields + whitelist for the `event` object type — likely a one-line change in `ae_obj_types_def.py` + or the event object definition. Message sent to backend agent 2026-04-08. + + **Frontend (after backend ships):** + - `src/lib/ae_events/ae_events__event.ts` → `search__event()`: add `contact_li_json_ext` + as an OR condition alongside `default_qry_str` when `qry_str` is present. + - `src/routes/idaa/(idaa)/recovery_meetings/+page.svelte` fast-path IDB filter: parse + `contact_li_json` and include contact names/emails in the local text match check. + - [ ] **[IDAA / Events] Audit `default_qry_str` coverage in other event search pages.** The backend was updated 2026-03-31 to expose `default_qry_str` in API responses. Frontend fix applied to Recovery Meetings (`+page.svelte` + `properties_to_save`).