feat: bienvenida diaria; fix: el NLU filtraba JSON crudo al usuario

Bienvenida una vez por dia y por empresa, distinta por categoria (cat 1 no ve
ejemplos de descarga). Se manda aparte del retorno de process(), asi el usuario
recibe el saludo y acto seguido lo que pidio. __saludo sobrevive a
preservingReset para no repetirse tras cada informe.

Fix del leak: cuando la respuesta del modelo no parseaba como JSON se enviaba
cruda, y el usuario veia {"action":"chat","text":"...  Ahora se rescata solo el
texto, incluso de JSON truncado, y si no hay nada legible se devuelve vacio
para caer al menu de fallback.

Ademas el prompt le prohibe preguntar por datos que una opcion ya pide: ante
"descargar informe de mantenimiento" debe rutear al selector de grupo en vez de
preguntar por chat.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-01 11:06:35 -05:00
co-authored by Claude Sonnet 4.6
parent 8825f4e821
commit 0bb1d3447e
4 changed files with 164 additions and 4 deletions
+35
View File
@@ -12,6 +12,41 @@ $configJson = [
'greeting' => '¡Bienvenido a Palmas360! Escribe *menu* para ver las opciones disponibles.',
'fallback' => 'No entendí. Escribe *menu* para ver las opciones disponibles.',
'nlu_enabled' => true,
// ── Bienvenida: una vez por día y por empresa ───────────────────────────
// Tokens: {saludo} {empresa} {finca} {empresas}
// No menciona la finca porque llega antes de elegirla; la finca activa se
// ve en el footer de cada menú.
'welcome' => [
'enabled' => true,
'text' => [
// Cat 1 — solo reporta: sin ejemplos de descarga, que no puede usar
'1' => "{saludo}, bienvenido a {empresa}.\n\n"
. "Desde acá enviás los ciclos de campo.\n"
. " • _\"subir ciclo de cosecha\"_\n\n"
. "Cuando quieras:\n"
. " *menú* ver las opciones · *salir* terminar{empresas}",
'2' => "{saludo}, bienvenido a {empresa}.\n\n"
. "Pedime lo que necesites con tus palabras:\n"
. " • _\"informe de mantenimiento de plateo\"_\n"
. " • _\"quién faltó hoy\"_\n"
. " • _\"producción de este mes\"_\n\n"
. "O navegá con los menús. Cuando quieras:\n"
. " *menú* volver al inicio · *atrás* subir un nivel · *salir* terminar\n"
. " *cambiar finca* para consultar otra finca{empresas}",
'3' => "{saludo}, bienvenido a {empresa}.\n\n"
. "Pedime lo que necesites con tus palabras:\n"
. " • _\"informe de mantenimiento de plateo\"_\n"
. " • _\"quién faltó hoy\"_\n"
. " • _\"subir ciclo de cosecha\"_\n\n"
. "O navegá con los menús. Cuando quieras:\n"
. " *menú* volver al inicio · *atrás* subir un nivel · *salir* terminar\n"
. " *cambiar finca* para consultar otra finca{empresas}",
],
],
'commands' => [
// Al menú principal
'menu' => 'show_main_menu',