# Horas del equipo — Etapa 2 ## Objetivo Agregar al Tablero CDC una vista clara para consultar las horas registradas por persona y por día, combinando automáticamente: - Horas históricas migradas desde `Registro horas`. - Horas nuevas creadas desde el módulo `Tiempo` de la app. ## Experiencia de usuario El encabezado del Tablero incorpora el botón **Horas del equipo**. Al abrirlo se muestra un módulo visual integrado con el estilo de la aplicación que incluye: - Periodos rápidos: hoy, 7 días, 30 días, este mes y todo. - Rango personalizado desde/hasta. - Filtro por Equipo actual / Histórico / Todos. - Búsqueda de personas. - Orden por más horas, actividad reciente o nombre. - Resumen del periodo: horas, personas con horas, días con actividad y promedio por persona/día. - Resumen individual: total, promedio diario y días con registros. - Desglose diario seleccionable. - Detalle de proyecto, tarea, país, duración y nota. - Paginación de actividades. El promedio diario se calcula sobre los días en los que la persona tiene al menos un registro; no presupone una jornada objetivo ni inventa feriados. ## Identidad de personas Las horas nuevas traen correo y se vinculan directamente al roster activo. Para el histórico, la app realiza una conciliación conservadora por nombre: coincidencia exacta o al menos dos componentes del nombre coincidentes de forma no ambigua. Esto permite unificar, por ejemplo, variantes del nombre usadas antes y después de la app sin fusionar nombres ambiguos como `Thaía Suplencia Gerardo`. ## Seguridad y datos - No se modifica `tablero_cdc_projects`. - No se modifica `tablero_cdc_project_time_entries`. - No se modifica `tablero_cdc_time_history`. - No se modifica el workflow de sincronización de Registro horas. - No se modifica el sistema de métricas. - El módulo reutiliza `public.tablero_cdc_time_combined`, creada en la Etapa 1. - El SQL de esta etapa solo crea `public.tablero_cdc_get_team_hours_roster()`, un RPC de lectura mínima que devuelve nombre/correo de usuarios activos después de validar que quien consulta tiene acceso al Tablero. ## Instalación 1. Ejecutar `supabase_tablero_cdc_team_hours_dashboard.sql` en Supabase. 2. Probar el `dist` incluido en el ZIP. 3. Entrar al Tablero y abrir **Horas del equipo**. 4. Confirmar que en **Equipo actual** aparecen también usuarios con 0 horas en el periodo. 5. Probar 7 días, 30 días, este mes y Todo. 6. Seleccionar una persona y un día; comprobar el detalle de actividades. ## Compatibilidad El `dist` actual contiene `assets/team-hours-dashboard-v1.js` para mantener la misma estrategia de despliegue del ZIP recibido, que ya utiliza módulos complementarios para Tiempo, Listas, Briefs, métricas y persistencia. El código fuente también incluye la implementación nativa React (`TeamHoursDialog.tsx` + `teamHours.ts`) para que una compilación futura conserve la funcionalidad sin depender del parche del `dist`.