Files
cdc-project-management/HORAS_EQUIPO_ETAPA_2_2026-09-01.md
T

53 lines
2.9 KiB
Markdown

# 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`.