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