feat: actualizar Tablero CDC con administracion de listas
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
# Notificaciones personales — CDC Brief / Nuevos
|
||||
|
||||
Actualización: 2026-08-12
|
||||
|
||||
## Comportamiento
|
||||
|
||||
La navegación queda en este orden:
|
||||
|
||||
`Todos → Activos → Cerrados → Nuevos → No aprobados`
|
||||
|
||||
El apartado **Nuevos** muestra un badge rojo únicamente cuando el usuario autenticado tiene briefs pendientes que todavía no ha visto.
|
||||
|
||||
- Cada usuario mantiene su propio estado de lectura en Supabase.
|
||||
- Entrar a **Nuevos** marca como vistos, para ese usuario, todos los briefs que estén pendientes en ese momento y el badge desaparece.
|
||||
- El hecho de que un usuario entre a **Nuevos** no borra la notificación de los demás usuarios.
|
||||
- Si otra persona aprueba o no aprueba un brief, deja de contar como pendiente para todos y los contadores se actualizan.
|
||||
- Un brief que llegue después vuelve a incrementar el badge de quienes todavía no lo hayan visto.
|
||||
- Mientras el usuario permanece en **Nuevos**, los briefs nuevos que aparecen en la cola visible se marcan como vistos para esa persona.
|
||||
|
||||
## Supabase
|
||||
|
||||
El estado por usuario se guarda en:
|
||||
|
||||
`public.tablero_cdc_brief_inbox_seen`
|
||||
|
||||
RPCs nuevas:
|
||||
|
||||
- `tablero_cdc_get_unseen_brief_count()`
|
||||
- `tablero_cdc_mark_briefs_seen()`
|
||||
|
||||
La solución usa una relación `(user_id, inbox_id)` y no un timestamp global, evitando que un brief que llegue concurrentemente quede marcado como visto por accidente.
|
||||
|
||||
## SQL a ejecutar
|
||||
|
||||
- Si todavía **no** se había ejecutado el SQL anterior de la bandeja: ejecutar `supabase_cdc_brief_review_inbox.sql` completo.
|
||||
- Si el SQL anterior **ya** estaba instalado: ejecutar solamente `supabase_cdc_brief_unread_notifications.sql`.
|
||||
|
||||
## Producción / dist
|
||||
|
||||
Se conserva el bundle principal ya probado. El nuevo comportamiento de la bandeja se carga desde:
|
||||
|
||||
`dist/assets/brief-review-inbox-v2.js`
|
||||
|
||||
En el código fuente React la actualización usa Supabase Realtime y un fallback periódico. El módulo de `dist` conserva un refresco periódico y por foco/visibilidad para mantener compatibilidad con el build híbrido existente sin reemplazar el bundle principal.
|
||||
Reference in New Issue
Block a user