feat(soporte): avisar por Telegram cuando entra un correo, con resumen si es largo
Los tickets del portal ya avisaban por Telegram; los que entran por correo solo mandaban un mail al admin, que es justo el canal que nadie mira a tiempo. Ahora pasan por el mismo despachador de notificaciones, así que se prenden y apagan desde /app/notif-config como cualquier otro evento — nuevo ticket y respuesta del cliente por separado. El cuerpo del aviso es un resumen cuando el correo pasa los 700 caracteres (hilos reenviados, texto pegado); abajo de eso va tal cual, porque resumir tres renglones es gastar una llamada de IA para decir lo mismo. Si la IA falla, se manda recortado. El ticket guarda siempre el texto completo. DispatchTicketNuevo ahora acepta portalUser nil: un correo no tiene usuario de portal detrás y no por eso hay que dejar de avisar. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ac47769c27
commit
d1bbb4a508
@@ -78,3 +78,15 @@ func TestExtractEmailEdgeCases(t *testing.T) {
|
||||
t.Errorf("ExtraerEmail('<a><b@c.com>') = %q, want 'b@c.com'", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResumirTextoSoporteCortoNoLlamaALaIA(t *testing.T) {
|
||||
// Sin base de datos, cualquier llamada a la IA explota: que este caso pase
|
||||
// es la prueba de que un correo corto no la usa.
|
||||
corto := "Hola, no me llega la factura de marzo. Gracias."
|
||||
if got := ResumirTextoSoporte(corto); got != corto {
|
||||
t.Errorf("ResumirTextoSoporte devolvió %q, esperaba el texto tal cual", got)
|
||||
}
|
||||
if got := ResumirTextoSoporte(" " + corto + "\n"); got != corto {
|
||||
t.Errorf("no recortó los espacios: %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user