/* ============================================================ REPORTE EJECUTIVO PDF — vista imprimible Resumen · Hallazgos · Gráficas · Áreas críticas · Plan de acción Exporta: ScreenReport ============================================================ */ const IHP = window.IH; function ScreenReport({ filters, onBack }) { const f = filters || { area: 'Todas', sucursal: 'Todas', puesto: 'Todos', periodo: 'Mes actual' }; const [data, setData] = React.useState(null); const [loading, setLoading] = React.useState(true); const fecha = new Date().toLocaleDateString('es-MX', { day: '2-digit', month: 'long', year: 'numeric' }); React.useEffect(() => { IHA.getDashboardReport(f) .then(d => { setData(d); setLoading(false); }) .catch(() => setLoading(false)); }, []); if (loading) { return (
Generando reporte…
); } if (!data) { return (
Error al cargar los datos del reporte.
); } const avg = data.scores; const areaMap = data.heatmap; const dist = data.distribution; const rank = data.ranking; const reco = data.recommendations; const evolIdx = data.summary.evolIndex; const diag = { dominant: data.summary.dominant, secondary: data.summary.secondary }; const list = { length: data.summary.total }; const critical = [...rank].reverse().slice(0, 2); return (
Vista de reporte · listo para imprimir
{/* —— PÁGINA 1 —— */}
Reporte ejecutivo · Diagnóstico conductual

Radiografía organizacional

{f.area} · {f.sucursal} · {f.periodo}
{fecha}
{/* resumen ejecutivo */}

La organización opera hoy con un índice de evolución de {evolIdx}/100. El arquetipo que predomina es {IHP.byId[diag.dominant].name}, seguido de {(diag.secondary || []).map(s => IHP.byId[s].name).join(' y ')}. {rank[0] && critical[0] && `El área más evolucionada es ${rank[0].area} (${rank[0].evol}/100), mientras que ${critical[0].area} (${critical[0].evol}/100) concentra la mayor necesidad de intervención.`}

{/* radar + distribución */}
{/* —— PÁGINA 2 —— */}
{critical.map(c => { const d = IHP.diagnose(c.scores); return (
{c.area} {c.evol}/100
Gobernada por {IHP.byId[d.dominant].name}. n={c.n} colaboradores. Requiere intervención prioritaria sobre los arquetipos de riesgo.
); })}
{/* —— PÁGINA 3 —— */}
Plan de acción sugerido · 90 días
{planRows(reco).map((r, i) => ( ))}
Horizonte Foco Acción
{r.h} {r.foco} {r.accion}
Ingeniería Humana Empresarial · Documento confidencial {fecha}
); } function planRows(reco) { const rows = []; (reco.urgente || []).slice(0, 2).forEach(r => rows.push({ h: '0–30 días', foco: IHP.byId[r.archetype].name, accion: r.text, color: 'var(--risk)' })); (reco.importante || []).slice(0, 2).forEach(r => rows.push({ h: '30–60 días', foco: IHP.byId[r.archetype].name, accion: r.text, color: 'var(--warn)' })); (reco.mejora || []).slice(0, 2).forEach(r => rows.push({ h: '60–90 días', foco: IHP.byId[r.archetype].name, accion: r.text, color: 'var(--good)' })); if (!rows.length) rows.push({ h: '0–90 días', foco: 'Cultura', accion: 'Sostener el monitoreo trimestral del mapa conductual.', color: 'var(--gold)' }); return rows; } function SectionTitle({ n, title }) { return (
{n}

{title}

); } function MiniStat({ label, value, accent }) { return (
{label}
{value}
); } Object.assign(window, { ScreenReport });