# PeopleExperience Módulo de encuestas de clima laboral (Work Environment Surveys). Cubre dos roles principales: - **Colaborador** — ver encuestas asignadas, responder preguntas, hacer seguimiento del estado. - **Manager** — ver sus encuestas activas/finalizadas, acceder a resultados de participación, eNPS, favorabilidad y heatmap. --- ## Pantallas y flujos | Pantalla / flujo | Descripción | Entrada | Ruta | |---|---|---|---| | Colaborador: listado | Encuestas asignadas al colaborador (pendientes / finalizadas) | `CollaboratorSurveys/` | `/people-experience/surveys` | | Colaborador: responder | Formulario de respuesta de una encuesta | `Survey/` | `/people-experience/surveys/:id` | | Manager: listado | Encuestas del manager (activas / finalizadas / importadas) | `ManagerSurveys/` | `/people-experience/manager/surveys` | | Manager: resultados | Tabs de participación, eNPS, favorabilidad y heatmap | `ManagerResults/` | `/people-experience/manager/surveys/:id/results` | | Manager: resultados (experimental) | Versión experimental de resultados con filtros avanzados | `experimental/ManagerResults/` | `/people-experience/manager/surveys/:id/results-experimental` | --- ## Archivos compartidos del módulo | Archivo | Contenido | |---|---| | `routes.ts` | URL builders (`pxRoutes`), path segments (`pxPaths`), links helpers (`pxLinks`) | | `services.ts` | Llamados a la API REST (`/people-experience/work-environment-survey/…`) | | `queries.ts` | Query keys (`pxKeys`) para React Query — colaborador, manager, analytics | | `types.ts` | Tipos de dominio, enums, tipos de API y formularios | | `constants.ts` | Constantes de filtros y segmentos (`getBaseSegments`) | | `utils.ts` | Helpers genéricos del módulo (formatting, etc.) | | `utils/segmentBlacklist.ts` | Lógica de blacklist de segmentos para filtros | --- ## Hooks del módulo | Hook | Descripción | Archivo | |---|---|---| | `useSurveyId` | Lee el `id` de `useParams` y lo convierte a `number` | `hooks/useSurveyId.ts` | | `useSurveyDetail` | Query del detalle de una encuesta de manager | `hooks/useSurveyDetail.ts` | | `useBackupAnswerMutation` | Mutación para guardar respuestas parciales | `hooks/useBackupAnswerMutation.ts` | | `useManagerParticipation` | Query paginada de participación por dimensión/segmento | `hooks/useManagerParticipation.ts` | --- ## Estructura de directorios ``` PeopleExperience/ ├── CollaboratorSurveys/ # Listado de encuestas del colaborador ├── Survey/ # Pantalla de respuesta de encuesta ├── ManagerSurveys/ # Listado de encuestas del manager ├── ManagerResults/ # Resultados (participación, eNPS, favorabilidad, heatmap) │ └── index.tsx ├── SurveyResults/ # Componentes reutilizables de resultados (heatmap) ├── experimental/ │ └── ManagerResults/ # Versión experimental de resultados con filtros avanzados ├── components/ # Componentes compartidos del módulo ├── hooks/ # Hooks scoped al módulo ├── utils/ # Utils scoped al módulo ├── routes.ts ├── services.ts ├── queries.ts ├── types.ts ├── constants.ts └── utils.ts ``` --- ## Wiring externo - `src/routes.tsx` monta todas las páginas vía `lazyRetry` usando los paths de `pxPaths`/`pxRoutes`. - `src/contexts/ManagerResultsFiltersContext.tsx` provee filtros globales para la vista de resultados del manager; importa tipos desde `types.ts`. - La navegación entre resultados usa `pxRoutes.surveyManagerResults()` y `pxLinks.*`. --- > Actualizar este README cuando se agreguen pantallas, se reorganicen carpetas o cambie el dominio colaborador vs manager.