Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/banredco/helpdesk/llms.txt

Use this file to discover all available pages before exploring further.

Desde el portal autenticado, cada cliente tiene acceso a su propio espacio de tickets donde puede abrir nuevas solicitudes de soporte, consultar el estado de las existentes y continuar la conversación con el equipo de Banred. Toda la interacción ocurre de forma asincrónica: el cliente escribe su mensaje desde el portal y el agente responde desde el panel de administración, manteniéndose ambos informados mediante notificaciones.

Lista de tickets

Ruta: /soporte/portal/tickets.php La página muestra todos los tickets creados por el cliente actualmente autenticado, filtrados estrictamente por customer_id de la sesión. En la cabecera se presentan cuatro contadores de resumen:
ContadorDescripción
TodosTotal de tickets del cliente sin filtro de estado.
AbiertosTickets con estado Abierto.
PendientesTickets con estado Pendiente.
ResueltosTickets con estado Resuelto o Cerrado.
Debajo de los contadores, la tabla principal muestra las siguientes columnas por cada ticket:
ColumnaCampo en base de datosDescripción
Ticketticket_numberNúmero único del ticket, precedido por #.
AsuntosubjectAsunto de la solicitud.
Estadostatus_name / status_colorEtiqueta con color propio de cada estado.
Prioridadpriority_name / priority_colorNivel de prioridad asignado por el agente.
Agenteagent_name (de users)Nombre del agente asignado o “Sin asignar” si aún no tiene responsable.
Filtros disponibles:
  • Buscar por texto: campo libre que busca en subject y ticket_number usando LIKE.
  • Filtrar por estado: menú desplegable con las opciones Abierto, Pendiente, Resuelto y Cerrado. La selección de “Todos los estados” elimina el filtro.
Ambos filtros se envían como parámetros GET y se procesan juntos en la misma consulta SQL. Cada fila de la tabla incluye un botón Ver que lleva al hilo completo del ticket.

Crear ticket

Ruta: /soporte/portal/ticket-create.php
1

Iniciar sesión

El cliente debe estar autenticado en el portal. Si no lo está, auth.php redirige automáticamente a /soporte/login.
2

Ir al formulario de nuevo ticket

Desde el dashboard, haz clic en el acceso rápido Crear Ticket, o desde la lista de tickets pulsa el botón Nuevo Ticket en la parte superior derecha.
3

Completar el formulario

El formulario solicita los siguientes campos:
CampoRequeridoDescripción
TipoSelecciona el tipo de solicitud desde los tipos activos en ticket_types.
PrioridadSelecciona la prioridad desde ticket_priorities (ordenadas por sort_order).
AsuntoTítulo corto que resume la solicitud.
DescripciónCuerpo del mensaje inicial. Se inserta como primer mensaje en ticket_messages.
AdjuntosNoArchivos opcionales. Formatos aceptados: .pdf, .jpg, .jpeg, .png, .doc, .docx, .xls, .xlsx.
4

Enviar el formulario

Al hacer clic en Crear Ticket, el sistema:
  1. Calcula el siguiente número de ticket (MAX(ticket_number) + 1) con verificación de colisión.
  2. Genera un public_token aleatorio con bin2hex(random_bytes(32)).
  3. Inserta el ticket en la tabla tickets con source = 'portal', status_id = 1 (Abierto) y customer_id tomado de la sesión activa.
  4. Inserta el mensaje inicial en ticket_messages.
  5. Si hay archivos adjuntos, los guarda en uploads/tickets/ y registra la referencia en ticket_attachments.
  6. Crea una notificación interna para el equipo de soporte ("Nuevo ticket #N").
  7. Redirige a la vista del ticket recién creado.
Incluye en la descripción toda la información relevante desde el primer mensaje: versión del producto, pasos para reproducir el problema, capturas de pantalla o archivos de ejemplo. Cuanto más completa sea la descripción inicial, más rápido podrá el agente dar una respuesta útil sin necesidad de pedir aclaraciones adicionales.

Ver hilo de conversación

Ruta: /soporte/portal/ticket-view.php?id={id} Esta página muestra el detalle completo de un ticket. Solo el cliente propietario del ticket puede acceder a él — la consulta SQL filtra simultáneamente por t.id y t.customer_id, por lo que cualquier intento de ver un ticket ajeno devuelve el error “Ticket no encontrado”. Información en la cabecera del ticket:
  • Número de ticket y asunto.
  • Etiquetas de estado y prioridad con sus colores correspondientes.
  • Barra de progreso visual con los pasos del ciclo de vida del ticket: Abierto → Pendiente → Esperando Cliente → (Escalado, si aplica) → Resuelto → (Cerrado, si aplica). El paso activo se resalta en morado oscuro y los pasos completados en verde.
Hilo de conversación: Los mensajes se obtienen de ticket_messages ordenados por id ASC (cronológico). Cada burbuja se distingue visualmente:
  • Mensajes del cliente (customer_id no nulo): fondo violeta claro, etiqueta “Tú”.
  • Mensajes del agente (customer_id nulo): fondo gris claro, etiqueta “Banred”.
Si un mensaje tiene archivos adjuntos, se muestran como botones de descarga enlazando a /download.php?id={attachment_id}. Responder al ticket: El formulario de respuesta aparece al pie de la página cuando el ticket está en estado Abierto, Pendiente o Esperando Cliente. El cliente escribe su mensaje y puede adjuntar archivos adicionales. Al enviar:
  1. Se inserta un nuevo registro en ticket_messages.
  2. Se actualiza activity_label = 'Cliente respondió' y last_reply_at = NOW() en el ticket.
  3. Se registra la acción en ticket_audit_log como 'Cliente respondió desde portal'.
  4. Se crea una notificación interna para los agentes ("Cliente respondió ticket #N").
Reabrir un ticket resuelto o cerrado: Cuando el ticket está en estado Resuelto (status_id = 4) o Cerrado (status_id = 5), el formulario de respuesta directa se oculta y en su lugar aparece el botón Reabrir Ticket. Al hacer clic, se muestra el formulario de respuesta y, al enviarlo, el estado del ticket vuelve a status_id = 1 (Abierto) automáticamente.

Notificaciones

Ruta: /soporte/portal/notifications.php La página muestra el historial completo de notificaciones del cliente, obtenidas de la tabla customer_notifications y ordenadas de más reciente a más antigua. Cada notificación incluye el título, el mensaje y la fecha/hora de creación, y actúa como enlace directo a la vista del ticket correspondiente. Al acceder a esta página, todas las notificaciones pendientes del cliente se marcan automáticamente como leídas (is_read = 1). El ícono de la campana en el dashboard muestra un badge rojo con el conteo de notificaciones no leídas mientras haya alguna pendiente.
Los clientes únicamente ven sus propios tickets. La cláusula WHERE customer_id = ? está presente en todas las consultas relacionadas con tickets y notificaciones, por lo que es imposible que un cliente acceda, de forma accidental o intencionada, a tickets creados por otros clientes.
Cada vez que un agente responde a un ticket desde el panel de administración, el sistema envía automáticamente una notificación por correo electrónico al cliente utilizando MailService. El correo se envía a la dirección registrada en la cuenta (customers.email) e incluye el contenido de la respuesta y un enlace directo al ticket en el portal.

Build docs developers (and LLMs) love