feat(soporte): el ticket de correo ya sabe de quién es, y llega con prioridad
Un ticket que entraba por correo guardaba la dirección como texto suelto: no se podía cruzar con nada, el cliente no lo veía en su portal y no había forma de pedir "todos los tickets de Acme". Ahora al crearlo se resuelve el remitente — primero contra los usuarios del portal, si no contra el correo del cliente— y el ticket queda atado a quien escribió. El que no matchea queda como contacto externo, que también es información. Solo coincidencia exacta de dirección, nunca por dominio: con gmail.com de por medio, adivinar ata el ticket al cliente equivocado. Y la llamada de IA que ya clasificaba el correo ahora devuelve también prioridad y categoría en el mismo JSON: sin costo ni latencia extra. El campo prioridad existía desde siempre y nadie lo llenaba. La urgencia la define el problema descrito, no el tono del mensaje — está dicho en el prompt. En la lista de tickets se ven los tres datos nuevos: cliente (o "externo"), categoría y la prioridad que ya se mostraba. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6afad025c2
commit
bfcc320b7c
@@ -57,3 +57,15 @@ func TestSoloJSON(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestClasificarNormalizaPrioridad(t *testing.T) {
|
||||
// El correo automático corta antes de llamar a la IA, así que es el único
|
||||
// camino que se puede probar sin base de datos — y ahí la prioridad tiene
|
||||
// que salir puesta igual.
|
||||
cl := ClasificarCorreoSoporte(CorreoSoporte{
|
||||
From: "news@x.com", Subject: "promo", Automatico: true,
|
||||
}, "")
|
||||
if cl.Prioridad != "baja" {
|
||||
t.Errorf("Prioridad = %q, want baja", cl.Prioridad)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user