# Recall — Tickets técnicos MVP-4 (Camino Producto) ## 🎯 Objetivo Convertir Recall en una herramienta confiable, rápida y diaria, enfocada en: - búsqueda tipo Google personal - navegación instantánea - confianza (historial + backup) - contexto activo --- # 🧩 EPIC 1 — Búsqueda avanzada (Google personal) ## [P1] Ticket 01 — Parser de query avanzada **Objetivo** Permitir búsquedas expresivas tipo: `docker tag:backend type:command` **Alcance** - Crear `src/lib/query-parser.ts` - Soportar: - texto libre - `type:` - `tag:` - `is:favorite`, `is:pinned` - Devolver AST simple **Criterios** - Queries válidas parsean correctamente - Soporta combinación de filtros + texto - Tests unitarios incluidos --- ## [P1] Ticket 02 — Integrar query avanzada en search **Objetivo** Aplicar parser en `/api/search` **Alcance** - Filtrar por AST antes de scoring - Mantener scoring existente **Criterios** - `type:command docker` filtra correctamente - `tag:api error` funciona - No rompe búsqueda actual --- ## [P1] Ticket 03 — Búsqueda en tiempo real **Objetivo** Actualizar resultados mientras el usuario escribe **Alcance** - Debounce en `search-bar.tsx` - Fetch automático - Estado loading ligero **Criterios** - Resultados cambian en <300ms - No bloquea UI --- ## [P1] Ticket 04 — Navegación por teclado en búsqueda **Objetivo** UX tipo Spotlight **Alcance** - ↑ ↓ para moverse - Enter para abrir - ESC para cerrar **Criterios** - Navegación sin mouse - Estado seleccionado visible --- # 🧠 EPIC 2 — Contexto activo ## [P1] Ticket 05 — Sidebar contextual inteligente **Objetivo** Mostrar contexto dinámico mientras navegas **Alcance** - Crear `note-context-sidebar.tsx` - Mostrar: - relacionadas - co-uso - backlinks - recientes **Criterios** - Siempre muestra contenido relevante - No rompe layout responsive --- ## [P2] Ticket 06 — Sugerencias dinámicas en lectura **Objetivo** Recomendar contenido mientras lees **Alcance** - Hook en `notes/[id]/page.tsx` - Actualizar sugerencias según scroll/uso **Criterios** - Sugerencias cambian según contexto - No afecta performance --- # 🔐 EPIC 3 — Confianza total ## [P1] Ticket 07 — Historial de versiones **Objetivo** Permitir ver y revertir cambios **Alcance** - Modelo `NoteVersion` - Guardar snapshot en cada update - Endpoint `/api/notes/[id]/versions` **Criterios** - Se pueden listar versiones - Se puede restaurar versión - No rompe edición actual --- ## [P1] Ticket 08 — UI historial de versiones **Objetivo** Visualizar cambios **Alcance** - Vista en `notes/[id]` - Mostrar lista de versiones - Botón restaurar **Criterios** - UX clara - Confirmación antes de revertir --- ## [P2] Ticket 09 — Backup automático **Objetivo** Evitar pérdida de datos **Alcance** - Export JSON automático - Guardar en local (descarga o storage) **Criterios** - Backup se genera periódicamente - No bloquea app --- # ⚡ EPIC 4 — Rendimiento y UX ## [P1] Ticket 10 — Cache de resultados de búsqueda **Objetivo** Reducir latencia **Alcance** - Cache en cliente por query - Invalidación simple **Criterios** - Queries repetidas son instantáneas - No datos stale críticos --- ## [P2] Ticket 11 — Preload de notas frecuentes **Objetivo** Abrir notas más rápido **Alcance** - Prefetch en hover/listado - Usar Next.js prefetch **Criterios** - Navegación instantánea en notas frecuentes --- # 🧪 EPIC 5 — Calidad ## [P1] Ticket 12 — Tests query avanzada - parser - integración search --- ## [P1] Ticket 13 — Tests historial versiones - creación - restore - edge cases --- ## [P2] Ticket 14 — Tests navegación teclado - selección - acciones --- # 🗺️ Orden sugerido ## Sprint 1 - Query parser - Integración search - Real-time search - Tests base ## Sprint 2 - Navegación teclado - Sidebar contextual - Cache búsqueda ## Sprint 3 - Historial versiones (API + UI) ## Sprint 4 - Backup automático - Preload notas - Tests finales --- # ✅ Definition of Done - Feature usable sin bugs críticos - Tests pasando - No regresiones - UX fluida (<300ms interacción)