Files
recall/backlog/recall-mvp4-tickets.md
Daniel Arroyo 9af25927b7 feat: MVP-4 Sprint 1 - Query parser, real-time search, keyboard navigation
- Add query-parser.ts with AST for type:, tag:, is:favorite, is:pinned filters
- Integrate parser into search API
- Add real-time search with 300ms debounce in search-bar
- Add keyboard navigation (↑↓ Enter ESC) for Spotlight-like UX
- Add dropdown results display with loading state
- Add 22 tests for query parser

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:33:17 -03:00

253 lines
4.1 KiB
Markdown

# 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)