Agrega detalle_tarea al agente de Telegram y doc comercial de uMind
- El bot solo tenía listar_tareas (resumen: título/estado/prioridad), sin forma de pedir la descripción completa ni el historial de comentarios de una tarea puntual. Nuevo tool detalle_tarea trae la tarea completa + comentarios (autor, contenido, adjuntos, fecha). - UMIND_CASOS_DE_USO.html: documento comercial con casos de uso por tipo de negocio, argumentos de venta y límites actuales del producto, para ofrecer uMind a clientes.
This commit is contained in:
@@ -0,0 +1,278 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>uMind — Casos de uso</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--verde: #8eb02f;
|
||||||
|
--verde-oscuro: #5a7a1e;
|
||||||
|
--texto: #2b2b2b;
|
||||||
|
--gris: #6b7280;
|
||||||
|
--borde: #e5e7eb;
|
||||||
|
--fondo-suave: #f7f8f5;
|
||||||
|
}
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
color: var(--texto);
|
||||||
|
line-height: 1.6;
|
||||||
|
max-width: 860px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 40px 24px 80px;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
border-bottom: 3px solid var(--verde);
|
||||||
|
padding-bottom: 20px;
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
header .badge {
|
||||||
|
display: inline-block;
|
||||||
|
background: var(--verde);
|
||||||
|
color: #fff;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: .04em;
|
||||||
|
padding: 4px 10px;
|
||||||
|
border-radius: 999px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
margin: 0 0 6px;
|
||||||
|
color: #1f2937;
|
||||||
|
}
|
||||||
|
header p.subtitulo {
|
||||||
|
color: var(--gris);
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 20px;
|
||||||
|
color: var(--verde-oscuro);
|
||||||
|
margin-top: 44px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
border-bottom: 1px solid var(--borde);
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
font-size: 15px;
|
||||||
|
margin: 20px 0 6px;
|
||||||
|
color: #1f2937;
|
||||||
|
}
|
||||||
|
p { margin: 10px 0; }
|
||||||
|
code {
|
||||||
|
background: var(--fondo-suave);
|
||||||
|
border: 1px solid var(--borde);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 2px 6px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-family: "SF Mono", Menlo, Consolas, monospace;
|
||||||
|
color: #b0530f;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #1f2937;
|
||||||
|
color: #d1fae5;
|
||||||
|
padding: 16px 18px;
|
||||||
|
border-radius: 8px;
|
||||||
|
overflow-x: auto;
|
||||||
|
font-size: 13px;
|
||||||
|
font-family: "SF Mono", Menlo, Consolas, monospace;
|
||||||
|
}
|
||||||
|
pre code { background: none; border: none; color: inherit; padding: 0; }
|
||||||
|
ul, ol { padding-left: 22px; }
|
||||||
|
li { margin: 6px 0; }
|
||||||
|
.caso {
|
||||||
|
background: var(--fondo-suave);
|
||||||
|
border: 1px solid var(--borde);
|
||||||
|
border-left: 4px solid var(--verde);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 14px 18px;
|
||||||
|
margin: 14px 0;
|
||||||
|
}
|
||||||
|
.caso h3 { margin-top: 0; color: var(--verde-oscuro); }
|
||||||
|
.caso p { margin: 4px 0 0; font-size: 14px; color: #374151; }
|
||||||
|
.grid-casos {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 14px;
|
||||||
|
}
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.grid-casos { grid-template-columns: 1fr; }
|
||||||
|
body { padding: 24px 16px 60px; }
|
||||||
|
h1 { font-size: 26px; }
|
||||||
|
}
|
||||||
|
.callout {
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px 18px;
|
||||||
|
margin: 18px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.callout.bien {
|
||||||
|
background: #eef6e3;
|
||||||
|
border: 1px solid #c9e0a3;
|
||||||
|
}
|
||||||
|
.callout.limite {
|
||||||
|
background: #fdf3e7;
|
||||||
|
border: 1px solid #f0d3a3;
|
||||||
|
}
|
||||||
|
.callout strong { display: block; margin-bottom: 6px; }
|
||||||
|
.lista-check { list-style: none; padding-left: 0; }
|
||||||
|
.lista-check li { padding-left: 26px; position: relative; }
|
||||||
|
.lista-check li::before {
|
||||||
|
content: "✓";
|
||||||
|
color: var(--verde-oscuro);
|
||||||
|
font-weight: 700;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.lista-cruz li::before {
|
||||||
|
content: "✕";
|
||||||
|
color: #c05621;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
margin-top: 60px;
|
||||||
|
padding-top: 20px;
|
||||||
|
border-top: 1px solid var(--borde);
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--gris);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
body { padding: 0; max-width: 100%; }
|
||||||
|
.caso { break-inside: avoid; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<span class="badge">DOCUMENTO COMERCIAL</span>
|
||||||
|
<h1>uMind — Casos de uso</h1>
|
||||||
|
<p class="subtitulo">Asistente de chat con IA, embebible en cualquier sitio web · Agosto 2026</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<h2>Qué es</h2>
|
||||||
|
<p>
|
||||||
|
uMind es un asistente de chat con inteligencia artificial que se instala en cualquier sitio web con una sola línea de código
|
||||||
|
— igual que Google Analytics o un widget de chat tradicional. A diferencia de un chatbot de respuestas fijas, uMind
|
||||||
|
<strong>aprende automáticamente el contenido del sitio del cliente</strong> (páginas, servicios, precios, políticas) y
|
||||||
|
responde preguntas de los visitantes las 24 horas, sin que nadie tenga que programar ni un solo flujo de conversación.
|
||||||
|
</p>
|
||||||
|
<p><strong>La instalación es literalmente esto:</strong></p>
|
||||||
|
<pre><code><script src="https://admin.u-site.app/widget/umind.js" data-site="SITE_KEY" defer></script></code></pre>
|
||||||
|
|
||||||
|
<h2>Cómo funciona (explicación simple para el cliente)</h2>
|
||||||
|
<ol>
|
||||||
|
<li>Le pedimos la URL de su sitio.</li>
|
||||||
|
<li>uMind lo recorre automáticamente y "aprende" el contenido — servicios, productos, preguntas frecuentes, políticas, lo que ya está publicado.</li>
|
||||||
|
<li>Le entregamos el código de instalación (una línea).</li>
|
||||||
|
<li>Desde ese momento, cualquier visitante puede hacerle preguntas al asistente por chat, y responde con base en el contenido real del sitio.</li>
|
||||||
|
<li>Si no sabe algo, no inventa: lo dice honestamente y puede ofrecer que un humano del equipo lo contacte.</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h2>Por qué es diferente a un chatbot normal</h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>No hay que escribir guiones de conversación.</strong> El conocimiento sale directo del sitio; si el cliente actualiza su página de precios, basta con volver a "ingestar" el sitio.</li>
|
||||||
|
<li><strong>No inventa respuestas.</strong> Está instruido para decir "no tengo esa información" en vez de alucinar — algo que preocupa a cualquier negocio serio antes de exponer un bot a sus clientes.</li>
|
||||||
|
<li><strong>Se instala en minutos, no en semanas.</strong></li>
|
||||||
|
<li><strong>Funciona en cualquier sitio</strong>, sin importar en qué tecnología esté construido (WordPress, Webflow, HTML plano, una app hecha por U-Site, etc.).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Casos de uso generales</h2>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>1. Atención de preguntas frecuentes 24/7</h3>
|
||||||
|
<p>Horarios, ubicación, formas de pago, políticas de garantía/devolución, sin que el equipo tenga que responder lo mismo veinte veces al día.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>2. Primer filtro de soporte</h3>
|
||||||
|
<p>Responde lo que puede resolver solo (el 60-80% de las preguntas repetitivas en la mayoría de negocios) y libera al equipo humano para casos que realmente lo requieren.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>3. Guía de productos/servicios</h3>
|
||||||
|
<p>Un visitante nuevo pregunta "¿qué planes tienen?" o "¿hacen envíos a X ciudad?" y obtiene respuesta inmediata, sin buscar en menús o PDFs.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>4. Reducción de abandono</h3>
|
||||||
|
<p>Un visitante indeciso que en otro momento se iría del sitio sin comprar/contactar, ahora tiene a quién preguntarle ahí mismo.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>5. Captura de interesados fuera de horario</h3>
|
||||||
|
<p>El negocio "cierra" pero el asistente sigue respondiendo y puede recoger el interés del visitante para que el equipo humano lo contacte al día siguiente.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Casos de uso por tipo de negocio</h2>
|
||||||
|
<div class="grid-casos">
|
||||||
|
<div class="caso">
|
||||||
|
<h3>🍽️ Restaurantes / gastronomía</h3>
|
||||||
|
<p>Menú, horarios, zona para eventos, reservas, opciones para dietas especiales, ubicación y domicilios.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>🩺 Clínicas / consultorios / salud</h3>
|
||||||
|
<p>Servicios, especialidades, si atienden una EPS/seguro, cómo agendar cita, requisitos previos. Solo información administrativa ya publicada — sin diagnósticos ni consejos médicos.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>🏠 Inmobiliarias</h3>
|
||||||
|
<p>Propiedades disponibles por zona/precio, proceso para agendar una visita, requisitos para arrendar/comprar, zonas donde operan.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>🏨 Hoteles / alojamiento</h3>
|
||||||
|
<p>Disponibilidad general, servicios incluidos, políticas de cancelación, cómo llegar, qué hay cerca.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>🛒 E-commerce / tiendas online</h3>
|
||||||
|
<p>Políticas de envío y devolución, tallas/variantes, medios de pago, seguimiento de pedido (según lo publicado en el sitio).</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>⚖️ Servicios profesionales</h3>
|
||||||
|
<p>Abogados, contadores, agencias, consultoras: qué servicios prestan, con quién han trabajado, proceso de contratación, tarifas publicadas.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>💻 SaaS / productos digitales</h3>
|
||||||
|
<p>Incluye los propios productos de U-Site (uLink, uVot, uBox, Habla, UIA): funcionalidades, planes, integraciones, documentación pública — reduce tickets de soporte nivel 1.</p>
|
||||||
|
</div>
|
||||||
|
<div class="caso">
|
||||||
|
<h3>🎓 Educación</h3>
|
||||||
|
<p>Colegios, institutos, cursos: programas ofrecidos, proceso de admisión/inscripción, costos, fechas importantes, requisitos.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Lo que uMind todavía no hace</h2>
|
||||||
|
<div class="callout limite">
|
||||||
|
<strong>Para no prometer de más al vender esto:</strong>
|
||||||
|
<ul class="lista-check lista-cruz">
|
||||||
|
<li>No atiende por WhatsApp ni por voz/teléfono todavía — hoy es chat web únicamente. Está en el roadmap.</li>
|
||||||
|
<li>No ejecuta acciones transaccionales (agendar citas en un calendario real, procesar pagos, crear pedidos) — hoy solo informa con base en el contenido del sitio.</li>
|
||||||
|
<li>No lee contenido que no esté publicado en el sitio (PDFs privados, Excels internos, etc.) a menos que se cargue aparte.</li>
|
||||||
|
<li>No reemplaza a un humano en casos sensibles — está instruido para escalar, no para improvisar, en temas delicados (salud, legal, reclamos).</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Argumentos de venta</h2>
|
||||||
|
<div class="callout bien">
|
||||||
|
<ul class="lista-check">
|
||||||
|
<li>Instalación en minutos, sin proyecto largo de desarrollo.</li>
|
||||||
|
<li>Cero mantenimiento de guiones: si el sitio cambia, se re-entrena con un clic.</li>
|
||||||
|
<li>Disponible 24/7, sin turnos ni vacaciones.</li>
|
||||||
|
<li>Reduce carga operativa del equipo de atención al cliente en preguntas repetitivas.</li>
|
||||||
|
<li>Mejora la percepción de marca: un sitio que responde al instante se siente más profesional.</li>
|
||||||
|
<li>Escalable por cliente: cada sitio tiene su propio asistente, entrenado solo con su información — nunca se mezcla el conocimiento de un cliente con el de otro.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>Modelo de negocio sugerido</h2>
|
||||||
|
<p>
|
||||||
|
<em>(a definir con el equipo comercial)</em> — Un cobro mensual fijo por sitio (incluye hosting del widget y actualizaciones),
|
||||||
|
con la opción de agregar valor a futuro con paquetes de WhatsApp/voz cuando esas fases del roadmap estén listas. Los costos
|
||||||
|
operativos por conversación son bajos (fracciones de centavo de dólar por chat de texto), así que el margen sobre una
|
||||||
|
suscripción mensual es sano incluso en un plan de entrada económico.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
U-Site S.A.S BIC · uMind · Documento interno para uso comercial
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -342,10 +342,14 @@ func agentTools() []agentTool {
|
|||||||
}, []string{"ticket_id", "mensaje"})),
|
}, []string{"ticket_id", "mensaje"})),
|
||||||
|
|
||||||
// ── Tareas ───────────────────────────────────────────────────────────
|
// ── Tareas ───────────────────────────────────────────────────────────
|
||||||
tool("listar_tareas", "Lista tareas del Kanban.",
|
tool("listar_tareas", "Lista tareas del Kanban (resumen: título, estado, prioridad, asignado — sin descripción completa ni historial de comentarios). Para ver el detalle completo de una tarea puntual usa detalle_tarea.",
|
||||||
obj(map[string]agentToolParam{
|
obj(map[string]agentToolParam{
|
||||||
"estado": str("pendiente | en_progreso | completada | cancelada"),
|
"estado": str("pendiente | en_progreso | completada | cancelada"),
|
||||||
}, nil)),
|
}, nil)),
|
||||||
|
tool("detalle_tarea", "Trae el detalle completo de una tarea puntual: descripción completa y el historial de comentarios/interacciones (quién comentó, qué dijo, cuándo, y archivos adjuntos si los hay). Úsala cuando el usuario pida el cuerpo, la descripción o el historial de una tarea específica — listar_tareas no trae eso.",
|
||||||
|
obj(map[string]agentToolParam{
|
||||||
|
"id": num("ID de la tarea (usa listar_tareas si no lo sabes)"),
|
||||||
|
}, []string{"id"})),
|
||||||
tool("listar_usuarios", "Lista los usuarios internos del sistema (staff), para poder asignarles tareas.",
|
tool("listar_usuarios", "Lista los usuarios internos del sistema (staff), para poder asignarles tareas.",
|
||||||
obj(map[string]agentToolParam{"search": str("Búsqueda por nombre")}, nil)),
|
obj(map[string]agentToolParam{"search": str("Búsqueda por nombre")}, nil)),
|
||||||
tool("crear_tarea", "Crea una nueva tarea, opcionalmente asignada a alguien desde el inicio.",
|
tool("crear_tarea", "Crea una nueva tarea, opcionalmente asignada a alguien desde el inicio.",
|
||||||
@@ -1003,6 +1007,21 @@ func runTool(chatID int64, name string, a map[string]interface{}) (interface{},
|
|||||||
}
|
}
|
||||||
return filtered, nil
|
return filtered, nil
|
||||||
|
|
||||||
|
case "detalle_tarea":
|
||||||
|
id := uint(getInt("id", 0))
|
||||||
|
if id == 0 {
|
||||||
|
return nil, fmt.Errorf("id requerido")
|
||||||
|
}
|
||||||
|
tarea, err := models.GetTareaByID(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("tarea no encontrada: %w", err)
|
||||||
|
}
|
||||||
|
comentarios, err := models.GetComentariosByTarea(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return map[string]interface{}{"tarea": tarea, "comentarios": comentarios}, nil
|
||||||
|
|
||||||
case "listar_usuarios":
|
case "listar_usuarios":
|
||||||
users, _, err := models.AllUsersSistema(50, 0, getStr("search"))
|
users, _, err := models.AllUsersSistema(50, 0, getStr("search"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1514,6 +1533,7 @@ COMPORTAMIENTO:
|
|||||||
Si logras identificar los datos necesarios (del documento o de lo que escribió el usuario), guarda directamente sin pedir confirmación — solo pregunta si de verdad no hay forma de determinar el cliente/proyecto/tarea o falta un dato imprescindible. No uses estas tools si el mensaje no menciona ningún documento adjunto
|
Si logras identificar los datos necesarios (del documento o de lo que escribió el usuario), guarda directamente sin pedir confirmación — solo pregunta si de verdad no hay forma de determinar el cliente/proyecto/tarea o falta un dato imprescindible. No uses estas tools si el mensaje no menciona ningún documento adjunto
|
||||||
- Para registrar un proyecto nuevo con sus fases (el usuario puede describirlo en texto o mandarlo en un documento), primero usa crear_proyecto y luego llama a crear_fase_proyecto una vez por cada fase que corresponda — no hace falta preguntar confirmación entre cada fase
|
- Para registrar un proyecto nuevo con sus fases (el usuario puede describirlo en texto o mandarlo en un documento), primero usa crear_proyecto y luego llama a crear_fase_proyecto una vez por cada fase que corresponda — no hace falta preguntar confirmación entre cada fase
|
||||||
- Para asignar una tarea a alguien, resuelve el nombre con listar_usuarios y usa asignado_id en crear_tarea (si es nueva) o asignar_tarea (si ya existe) — la persona asignada recibe una notificación. Si además el usuario mandó un archivo junto con la instrucción de asignar, después de crear/asignar la tarea usa también adjuntar_documento_tarea para guardar ese archivo en la tarea
|
- Para asignar una tarea a alguien, resuelve el nombre con listar_usuarios y usa asignado_id en crear_tarea (si es nueva) o asignar_tarea (si ya existe) — la persona asignada recibe una notificación. Si además el usuario mandó un archivo junto con la instrucción de asignar, después de crear/asignar la tarea usa también adjuntar_documento_tarea para guardar ese archivo en la tarea
|
||||||
|
- Si preguntan por el detalle, la descripción completa o el historial/comentarios de una tarea específica, usa detalle_tarea (no listar_tareas, que solo da un resumen sin eso) — resuelve el id con listar_tareas primero si hace falta
|
||||||
|
|
||||||
COMANDOS ESPECIALES (el usuario puede escribirlos):
|
COMANDOS ESPECIALES (el usuario puede escribirlos):
|
||||||
- /reset — olvidar el historial de esta conversación
|
- /reset — olvidar el historial de esta conversación
|
||||||
|
|||||||
Reference in New Issue
Block a user