Files
2026-08-26 16:31:12 -04:00

2 lines
5.1 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{u as y,r as t,j as s,a as R,L as M}from"./index-kE4_6-nI.js";import{M as h}from"./DashboardParts-nkkWHQei.js";import{M as I}from"./Modal-BtPN4Q6v.js";import{P as T}from"./PageHeader-BIrj68Xg.js";function $(){const{recruiters:r,requisitions:m,reassign:u}=y(),[n,j]=t.useState(null),[l,x]=t.useState(""),[c,p]=t.useState(""),v=r.filter(e=>e.score>=26).length,g=r.filter(e=>e.score<=15).length,b=r.reduce((e,i)=>e+i.assignments.length,0),f=t.useMemo(()=>[...r].sort((e,i)=>e.score-i.score).find(e=>e.name!==n?.from)?.name??"",[r,n]),N=e=>{j(e),x([...r].sort((i,a)=>i.score-a.score).find(i=>i.name!==e.from)?.name??""),p("")},o=()=>j(null),C=()=>{!n||!l||c.trim().length<10||(u(n.requisitionId,l,c.trim()),o())};return s.jsxs("div",{className:"page-stack",children:[s.jsx(T,{eyebrow:"Dirección de RRHH · Planeación",title:"Capacidad del equipo",description:"Balancea la carga antes de que la presión se convierta en retraso."}),s.jsxs("section",{className:"metrics-grid metrics-grid--three",children:[s.jsx(h,{label:"Reclutadores disponibles",value:g,note:"015 puntos",tone:"green"}),s.jsx(h,{label:"Capacidad crítica",value:v,note:"26+ puntos",tone:"red"}),s.jsx(h,{label:"Casos asignados",value:b,note:"Requisiciones activas"})]}),s.jsxs("section",{className:"capacity-formula","aria-label":"Fórmula del puntaje de carga",children:[s.jsxs("div",{children:[s.jsx("span",{children:"COMPLEJIDAD"}),s.jsx("strong",{children:"Tier 1 = 1 · Tier 2 = 3 · Tier 3 = 5"})]}),s.jsx("i",{children:"+"}),s.jsxs("div",{children:[s.jsx("span",{children:"VOLUMEN"}),s.jsx("strong",{children:"12 = 0 · 310 = 2 · 11+ = 4"})]}),s.jsx("i",{children:"="}),s.jsxs("div",{children:[s.jsx("span",{children:"PUNTAJE"}),s.jsx("strong",{children:"Disponible · Al límite · Crítico"})]})]}),s.jsxs("div",{className:"capacity-thresholds",children:[s.jsxs("div",{className:"threshold threshold--ok",children:[s.jsx("span",{children:"0—15"}),s.jsx("b",{children:"Disponible"}),s.jsx("p",{children:"Puede asumir nuevas posiciones."})]}),s.jsxs("div",{className:"threshold threshold--risk",children:[s.jsx("span",{children:"16—25"}),s.jsx("b",{children:"Al límite"}),s.jsx("p",{children:"Evitar asignaciones masivas."})]}),s.jsxs("div",{className:"threshold threshold--late",children:[s.jsx("span",{children:"26+"}),s.jsx("b",{children:"Crítico"}),s.jsx("p",{children:"Reasignar o sumar apoyo temporal."})]})]}),s.jsx("section",{className:"recruiter-grid",children:r.map(e=>{const i=R(e.score);return s.jsxs("article",{className:`recruiter-card recruiter-card--${i.tone}`,children:[s.jsxs("header",{children:[s.jsx("span",{className:"avatar",children:e.name.split(" ").map(a=>a[0]).join("")}),s.jsxs("div",{children:[s.jsx("h2",{children:e.name}),s.jsx("p",{children:e.countries.join(" · ")})]}),s.jsxs("div",{className:"score",children:[s.jsx("strong",{children:e.score}),s.jsx("span",{children:"puntos"})]})]}),s.jsxs("div",{className:"recruiter-card__status",children:[s.jsx("span",{children:i.label}),s.jsx("progress",{className:`capacity-progress capacity-progress--${i.tone}`,max:"30",value:Math.min(30,e.score)})]}),s.jsxs("div",{className:"assignment-list",children:[s.jsxs("div",{className:"assignment-list__head",children:[s.jsx("span",{children:"Vacante"}),s.jsx("span",{children:"Tier / fase"})]}),e.assignments.map(a=>{const d=m.some(q=>q.id===a.requisitionId);return s.jsxs("div",{className:"assignment",children:[s.jsxs("div",{children:[s.jsx(M,{to:d?`/requisiciones/${a.requisitionId}`:"#",children:a.position}),s.jsx("small",{children:a.requisitionId})]}),s.jsxs("div",{children:[s.jsxs("b",{children:["T",a.tier]}),s.jsx("span",{children:a.phase})]}),s.jsx("button",{type:"button",disabled:!d,onClick:()=>N({requisitionId:a.requisitionId,from:e.name,position:a.position}),children:d?"Reasignar":"Referencia"})]},a.requisitionId)})]})]},e.id)})}),s.jsxs(I,{open:!!n,title:`Reasignar ${n?.position??""}`,description:`Mover ${n?.requisitionId??""} desde ${n?.from??""}.`,onClose:o,footer:s.jsxs(s.Fragment,{children:[s.jsx("button",{className:"button button--quiet",type:"button",onClick:o,children:"Cancelar"}),s.jsx("button",{className:"button button--primary",type:"button",disabled:!l||c.trim().length<10,onClick:C,children:"Confirmar reasignación"})]}),children:[s.jsxs("div",{className:"reassignment-preview",children:[s.jsxs("div",{children:[s.jsx("span",{children:"Sale de"}),s.jsx("strong",{children:n?.from})]}),s.jsx("b",{"aria-hidden":"true",children:"→"}),s.jsxs("div",{children:[s.jsx("span",{children:"Recomendado"}),s.jsx("strong",{children:f})]})]}),s.jsxs("label",{className:"field",children:[s.jsxs("span",{children:["Nuevo/a reclutador/a ",s.jsx("b",{children:"*"})]}),s.jsx("select",{value:l,onChange:e=>x(e.target.value),children:r.filter(e=>e.name!==n?.from).map(e=>s.jsxs("option",{value:e.name,children:[e.name," · ",e.score," puntos"]},e.id))})]}),s.jsxs("label",{className:"field",children:[s.jsxs("span",{children:["Nota de entrega ",s.jsx("b",{children:"*"})]}),s.jsx("textarea",{rows:4,value:c,onChange:e=>p(e.target.value),placeholder:"Estado de candidatos y motivo de la transferencia…"}),s.jsx("small",{children:"Se notificará a ambas personas y quedará en la auditoría."})]})]})]})}export{$ as default};