52 lines
2.3 KiB
TypeScript
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);
|
|
}
|