Files
vocero-client/frontend-s2s/src/lib/reports.ts
T

52 lines
2.3 KiB
TypeScript

import type { Reports } from "./contracts";
/** Keep the original report-based conversation suggestions in the debug sidebar. */
export function reportSuggestions(reports: Reports) {
const labels = reports.entries
.map((entry) => entry.sourceScheduleLabel?.trim())
.filter((label): label is string => !!label);
const first = labels[0];
if (!first) {
return [];
}
const second = labels[1] ?? first;
const third = labels[2] ?? first;
const templates: [RegExp, (label: string) => string][] = [
[
/riesgo|mortalidad|porcentaje|kpi/i,
(label) => `Dame un resumen ejecutivo de los riesgos operativos y KPIs del reporte de ${label}.`,
],
[/diari[oa]|informe/i, (label) => `Cuéntame los puntos clave del informe diario más reciente (${label}).`],
[/métrica|metrica|medici[oó]n/i, (label) => `Compara las métricas de la última semana del reporte ${label}.`],
[/producto|servicio/i, (label) => `¿Qué hay de nuevo en productos y servicios según el reporte ${label}?`],
[
/supply|cadena|log[ií]stica|env[ií]o|chile|latin/i,
(label) => `¿Hay novedades en la cadena de suministro o logística en el reporte ${label}?`,
],
[
/synapse|ejecuci[oó]n|calendario/i,
(label) => `¿Qué ejecuciones del calendario Synapse TI están reportadas? (${label}).`,
],
[/podcast|briefing|mañana|matutino|morning/i, (label) => `Lee el podcast briefing matutino de hoy (${label}).`],
[
/financier|finanza|costo|presupuesto|venta/i,
(label) => `Análisis financiero: costos, presupuesto y ventas del reporte ${label}.`,
],
[
/ejecutivo|ceo|reuni[oó]n|semanal/i,
(label) => `Puntos de agenda para la reunión ejecutiva semanal según el reporte ${label}.`,
],
];
const contextual = templates.flatMap(([pattern, text]) => {
const label = labels.find((label) => pattern.test(label));
return label ? [text(label)] : [];
});
return [
...contextual,
`¿Qué highlights hay en el reporte más reciente «${first}»?`,
`Resume los 3 hallazgos principales de los reportes de hoy (${String(reports.count)} disponibles).`,
...(reports.count >= 2 ? [`Compara ${first} vs ${second} y dime cuál tiene mayor prioridad.`] : []),
...(reports.count >= 3 ? [`Plan de acción sugerido con base en ${first}, ${second} y ${third}.`] : []),
].slice(0, 4);
}