Foco: matar repetición y adaptar respuestas. Los handlers tenían ~30 strings hardcodeadas (3-7 lugares cada una). Aliases hacían substring exacto. - pg_trgm + GIN indexes en product_aliases / alias_product_mappings. Captura plurales, diminutivos, typos sin reglas. catalogRetrieval re-busca el snapshot con normalized_alias cuando el query original no rinde (vasio→vacio→Vacío). - reply_templates table + replyTemplates.js. 20 keys, 2-3 variantes c/u con DEFAULTS hardcodeados como fallback. pickVariant excluye las usadas en context.recent_replies (FIFO cap 8). Wired en idle/cart/cartHelpers/ shipping/payment/waiting. - failed_searches counter en context. count>=3 escala via humanFallback. Reset en cada add_to_cart exitoso. - storeContext.js: vars derivadas de getStoreConfig (delivery_zones, hours, zonas) listas para inyectar en templates cuando los datos se carguen. - replyRewriter.js: LLM call opcional (REPLY_REWRITER=1) que adapta el template al hilo conversacional. 1.5s timeout, fallback al template puro. Sólo activo en 8 slots semánticamente importantes. - 12 unit tests para replyTemplates (rotation, recency, FIFO, vars). 208 tests totales pasando. Plan completo: ~/.claude/plans/ok-creo-que-tiene-humming-sutton.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18 lines
714 B
SQL
18 lines
714 B
SQL
-- migrate:up
|
|
-- pg_trgm para fuzzy matching de aliases:
|
|
-- - Captura plurales (vacio↔vacios), diminutivos (costillita↔costilla),
|
|
-- typos (vasio↔vacio) sin escribir reglas.
|
|
CREATE EXTENSION IF NOT EXISTS pg_trgm;
|
|
|
|
CREATE INDEX IF NOT EXISTS product_aliases_norm_trgm_idx
|
|
ON product_aliases USING gin (normalized_alias gin_trgm_ops);
|
|
|
|
CREATE INDEX IF NOT EXISTS alias_product_mappings_alias_trgm_idx
|
|
ON alias_product_mappings USING gin (alias gin_trgm_ops);
|
|
|
|
-- migrate:down
|
|
DROP INDEX IF EXISTS alias_product_mappings_alias_trgm_idx;
|
|
DROP INDEX IF EXISTS product_aliases_norm_trgm_idx;
|
|
-- Intencionalmente NO se hace DROP EXTENSION pg_trgm:
|
|
-- puede ser usada por otras consultas/migraciones futuras.
|