feat(F-160): completed feature

This commit is contained in:
chattie
2026-08-22 18:05:33 +02:00
parent f802a83773
commit 83a44980c6
12 changed files with 87 additions and 45 deletions

View File

@@ -1,23 +1,14 @@
# Feature activa: F-159Admin responsive collapsible sidebar
# Feature activa: F-160Fix Reporting sales grouped queries returning 500
## Objetivo
Añadir un único `SidebarToggle` reutilizando el layout y `NAV_ITEMS` existentes.
## Causa raíz
`runSalesQuery` concatena `${selectExpr}` directamente antes de `COUNT(...)` sin coma, generando SQL inválido en todos los grupos. Además, el grupo `terminal` selecciona `o.store_id` pero agrupa solo por `terminal_id`.
## Comportamiento
- Desktop (`lg+`): expandido a 240px o colapsado a 80px mostrando solo iconos; preferencia guardada en `localStorage`.
- Mobile/tablet: sidebar como drawer superpuesto con backdrop; siempre muestra iconos y etiquetas.
- El estado del drawer no duplica ni sustituye el estado persistido de desktop.
- Transición suave de ancho y desplazamiento.
## Accesibilidad
- Botones con `aria-label`, `aria-expanded` y `aria-controls`.
- Drawer cerrado no es visible ni alcanzable por teclado.
- Escape cierra el drawer.
- Los enlaces conservan etiquetas accesibles y tooltips al colapsar.
## Solución
- Añadir coma explícita tras las columnas dimensionales.
- Agrupar terminal por `store_id, terminal_id`.
- Añadir tests de integración del servicio SQL real para day/channel/store/terminal.
## Aceptación
1. Toggle visible y operable por teclado.
2. Preferencia desktop persiste tras recarga.
3. Sidebar desktop colapsado muestra solo iconos.
4. Mobile/tablet usa drawer con backdrop y cierre por Escape.
5. Una sola fuente de navegación y build responsive sin regresiones.
- Los cuatro endpoints usados por Dashboard responden 200.
- No hay interpolación de valores del usuario; solo expresiones de enum controlado.
- Build, tests y verify pasan.