53 lines
2.9 KiB
Markdown
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`.
|