# Performance Módulo de evaluaciones de desempeño: listado de ciclos, completado de reviews (own / leader / peer / external), selección de pares, share de resultados al evaluado y calibración para gerentes superiores. --- ## Pantallas y flujos | Pantalla / flujo | Descripción | Entrada | Ruta | |---|---|---|---| | Cycles List (home) | Listado paginado de ciclos de performance del usuario con búsqueda y acciones contextuales por ciclo | `CyclesList/index.tsx` | `/performance` | | Performance Review | Detalle de un ciclo: completar reviews, ver progreso del equipo (leader dashboard), share de resultados y my results | `PerformanceReview/index.tsx` | `/performance/:id` | | Peer Selection | Selección de pares para evaluar dentro de un ciclo | `PerformancePeerSelection/index.tsx` | `/performance/:id/peer` | | External Reviewer Overlay | Vista para reviewers externos (sin sesión): listado y completado de reviews vía link | `PerformanceExternalReview/index.tsx` | `/performance/:id/external` | | Calibration Detail | Vista de calibración para gerentes superiores: revisar y rellenar respuestas sobre un evaluado, comparación con subordinate review | `CalibrationDetail/index.tsx` | `/performance/:cycleId/calibration/:formReviewId` | --- ## Forms clave | Form | Descripción | Path | |---|---|---| | `ReviewForm` | Wizard principal de completado de un review (own / leader / peer): tabs por sección (form / goals / competencies), stepper, autosave, modal de confirmación final | `PerformanceReview/components/ReviewForm.tsx` | | `ExternalReviewForm` | Wizard equivalente para reviewers externos (sin sesión) — usa endpoints `external-reviewers`. Estructurado en subcomponentes (`ReviewedHeader`, `ReviewSectionsNav`, `ReviewFormActions`) + hooks (`useExternalReview` para data layer, `useReviewSteps` para navegación) | `PerformanceExternalReview/components/ExternalReviewForm/` | | `CalibrationForm` | Wizard de calibración: rellenar respuestas con steps, schema Zod, comparación con subordinados | `CalibrationDetail/CalibrationForm/` | | `Summary` (editor) | Edición y share del resumen final del review al evaluado | `PerformanceReview/components/Summary/` | | `PeerSelectComponent` | Autocomplete + alta de external reviewers + selección de pares por dirección | `PerformancePeerSelection/components/PeerSelectComponent/` | --- ## Componentes y hooks clave | Nombre | Descripción | Ubicación | |---|---|---| | `PerformanceReviewContext` | Context React con `selectedReview`, `reviews`, `nextReview`, `setUserToShareId`, `setMenuSelected`, etc. Provee state global del flujo de review | `PerformanceReviewContext.tsx` | | `usePerformanceCyclesList` | Lógica del home: paginación server-side, búsqueda con debounce, acciones por ciclo | `CyclesList/hooks/usePerformanceCyclesList.ts` | | `useLeaderDashboard` | Datos y filtros del dashboard de equipo dentro de PerformanceReview (stat cards, progreso, listado de colaboradores) | `PerformanceReview/hooks/useLeaderDashboard.ts` | | `useCalibrationDetail` | Carga el detalle de calibración y orquesta navegación entre formReviews | `CalibrationDetail/hooks/useCalibrationDetail.ts` | | `useCalibrationsSidebar` | Paginación + búsqueda del sidebar de calibraciones | `CalibrationDetail/hooks/useCalibrationsSidebar.ts` | | `useFillCalibration` | Mutación para enviar respuestas de calibración | `CalibrationDetail/hooks/useFillCalibration.ts` | | `useCalibrationFormSteps` | Construcción de steps del wizard de calibración a partir del cuestionario | `CalibrationDetail/CalibrationForm/hooks/useCalibrationFormSteps.ts` | | `useCalibrationComparison` | Lógica del drawer de comparación con respuestas de subordinados | `CalibrationDetail/CalibrationForm/hooks/useCalibrationComparison.ts` | | `useCurrentStepValidation` | Validación reactiva del paso actual de un review/calibration (RHF scoped subscription) | `hooks/useCurrentStepValidation.ts` | | `useMenuQueryParam` | Sincroniza el menú activo de PerformanceReview con un query param de la URL | `hooks/useMenuQueryParam.ts` | | `ReviewsMenu` | Menú lateral del flujo de review con grupos por dirección (own / leader / peer / external / others) | `components/ReviewsMenu.tsx` | | `ReviewInputSection` | Sección genérica del wizard de review/calibration: form / goal / competency questions | `components/ReviewInputSection/` | | `GetReviewInputComponent` | Dispatcher que renderiza el input correcto según el tipo de pregunta del review | `components/GetReviewInputComponent.tsx` | | `RichText` | Renderer de contenido rich-text (descripciones de form, etc.); incluye `constants.ts` y `utils.ts` propios | `components/RichText/` | --- ## Archivos compartidos del módulo | Archivo | Contenido | |---|---| | `routes.ts` | URL builders del módulo (`performance`, `review.detail`, `review.peer`, `calibration`) | | `services.ts` | Llamados a la API de performance-reviews (cycles, reviews, calibrations, external reviewers) | | `types.ts` | Tipos de dominio: `ReviewCycle`, `ReviewDetail`, `CalibrationReview`, `ReviewDirection`, etc. | | `queries.ts` | Query keys y helpers de invalidación de React Query | | `constants.ts` | `PILL_TYPE`, `PerformanceCycleActions`, `REVIEW_DIRECTION_ORDER`, `getReviewBoxMenuItems()` | | `components/rowConstants.ts` | Constantes de layout/columnas compartidas por listados de reviews y dashboards | | `utils.ts` | Utilidades de dominio: `groupReviewsByDirection`, `splitReviewInputs`, `createReviewAnswers`, `formatScore`, etc. | | `PerformanceReviewContext.tsx` | Context compartido entre `PerformanceReview` y `PerformancePeerSelection` | | `hooks/` | Hooks de scope módulo (`useCurrentStepValidation`, `useMenuQueryParam`) | | `components/` | Componentes compartidos por 2+ rutas: `ReviewsMenu`, `ReviewInputSection`, `GetReviewInputComponent`, `ReviewNextStepButton`, `PerformanceLoading`, `RichText`, `Calibration/`, `UserList/`, `shared/`, etc. | --- ## Estructura de directorios ``` performance/ ├── CyclesList/ # Home: listado de ciclos │ ├── components/ # NoReviews, PerformanceCycleRow │ └── hooks/ # usePerformanceCyclesList ├── PerformanceReview/ # Detalle de ciclo (review own / leader / peer / share) │ ├── components/ # ReviewForm, ReviewContent, Summary/, score/, leader-dashboard/... │ └── hooks/ # useLeaderDashboard ├── PerformancePeerSelection/ # Selección de pares │ └── components/ # PeerSelection, PeerSelectComponent/ ├── PerformanceExternalReview/ # Overlay para reviewers externos │ ├── index.tsx # Container con loading + ExternalReviewLayout │ └── components/ │ ├── ExternalReviewLayout.tsx │ ├── ExternalReview.tsx │ └── ExternalReviewForm/ │ ├── index.tsx │ ├── hooks/ # useExternalReview, useReviewSteps │ └── components/ # ReviewedHeader, ReviewSectionsNav, ReviewFormActions ├── CalibrationDetail/ # Calibración (gerentes superiores) │ ├── components/ # CalibrationDetailContent, CalibrationNavigationSidebar, CalibrationComparisonDrawer/ │ ├── CalibrationForm/ # Wizard de calibración con schemas Zod │ │ ├── hooks/ # useCalibrationFormSteps, useCalibrationComparison, useCalibrationFormState │ │ ├── constants.ts, schemas.ts, types.ts, utils.ts │ │ └── index.tsx │ └── hooks/ # useCalibrationDetail, useCalibrationsSidebar, useFillCalibration ├── components/ # Compartidos entre 2+ rutas │ ├── Calibration/ # Listado de calibraciones embebido en PerformanceReview │ ├── ReviewInputSection/, RichText/, Progress/, CompetencyGroup/, Goal/, Inputs/, Shared/ │ ├── TemplateDescription/, UserList/ │ ├── ReviewsMenu, GetReviewInputComponent, ReviewNextStepButton, ReviewEvaluationsList │ ├── AllReviewsCompleted, NoReviewText, PerformanceLoading │ └── rowConstants.ts ├── hooks/ # Hooks de scope módulo ├── routes.ts ├── services.ts ├── types.ts ├── queries.ts ├── constants.ts ├── utils.ts └── PerformanceReviewContext.tsx ``` --- > Actualizar este README cuando se agreguen pantallas, flujos principales o se reorganicen carpetas.