Este proyecto consiste en el diseño y desarrollo de un sistema de Gestión de Relaciones con el Cliente (CRM) implementado como un Chatbot en Discord 🤖.
El objetivo principal es facilitar la gestión de carteras de clientes, permitiendo a vendedores y administradores registrar interacciones, realizar seguimientos de ventas y obtener métricas clave, todo a través de una interfaz conversacional sencilla.
El sistema ha sido construido bajo estrictos estándares de Programación Orientada a Objetos (POO), aplicando principios SOLID (especialmente SRP y OCP) y patrones de diseño como Expert, Fachada (Facade), Repositorio y Polimorfismo.
- Gestión de Clientes: Alta, baja, modificación y búsqueda avanzada de clientes.
- Registro de Interacciones: Historial unificado de llamadas, reuniones, correos y mensajes.
- Seguimiento Comercial: Registro de ventas y cotizaciones.
- Organización: Sistema de etiquetas personalizables para segmentar clientes.
- Reportes y Métricas: Dashboard con resumen de actividad, cálculo de ventas por período y detección de clientes inactivos.
- Administración: Gestión de usuarios del sistema (vendedores/admins) con roles y permisos.
- Lenguaje: C# (.NET 8.0)
- Plataforma de Bot: Discord.Net
- Gestión de Versiones: Git & GitHub
- Gestión de Tareas: Trello
- Testing: NUnit
A continuación se detallan los comandos disponibles para interactuar con el CRM.
| 📖 Historia de Usuario | 🛠️ Comandos Necesarios | 💻 Ejemplo de Ejecución (Copiar y Pegar) |
|---|---|---|
| Como usuario quiero crear un nuevo cliente con su información básica: nombre, apellido, teléfono y correo electrónico... | !crear_cliente |
!crear_cliente "Juan" "Perez" 099123456 [email protected] |
| Como usuario quiero modificar la información de un cliente existente, para mantenerla actualizada. | !crear_cliente!modificar_cliente |
!crear_cliente "Juan" "Perez" 099123456 [email protected]!modificar_cliente 1 "Nombre" "Pablo" |
| Como usuario quiero eliminar un cliente, para mantener limpia la base de datos. | !crear_cliente!eliminar_cliente |
!crear_cliente "Borrar" "Este" 099000000 [email protected]!eliminar_cliente 1 |
| Como usuario quiero buscar clientes por nombre, apellido, teléfono o correo electrónico... | !crear_cliente!buscar_cliente |
!crear_cliente "Maria" "Busqueda" 098111222 [email protected]!buscar_cliente "Maria" |
| Como usuario quiero ver una lista de todos mis clientes, para tener una vista general de mi cartera. | !crear_cliente!ver_clientes |
!crear_cliente "Cliente1" "Test" 099111111 [email protected]!ver_clientes |
| Como usuario quiero registrar llamadas enviadas o recibidas de clientes... | !crear_cliente!registrar_llamada |
!crear_cliente "Ana" "Llamadas" 099222333 [email protected]!registrar_llamada 1 22/11/2023 "Consulta de precio" "Entrante" |
| Como usuario quiero registrar reuniones con los clientes... | !crear_cliente!registrar_reunion |
!crear_cliente "Carlos" "Reunion" 099333444 [email protected]!registrar_reunion 1 25/12/2023 "Oficina Central" "Firma contrato" |
| Como usuario quiero registrar mensajes enviados a o recibidos de los clientes... | !crear_cliente!registrar_mensaje |
!crear_cliente "Sofia" "Mensaje" 099555666 [email protected]!registrar_mensaje 1 23/11/2023 "Coordinar hora" "Fernando" "Sofia" |
| Como usuario quiero registrar correos electrónicos enviados a o recibidos de los clientes... | !crear_cliente!registrar_correo |
!crear_cliente "Pedro" "Correo" 099777888 [email protected]!registrar_correo 1 23/11/2023 "Presupuesto PDF" "Fernando" "Pedro" "Adjunto lo solicitado" |
| Como usuario quiero agregar notas o comentarios a las llamadas, reuniones, mensajes... | !crear_cliente!registrar_llamada!ver_interacciones!agregar_nota |
!crear_cliente "Lucas" "Notas" 091000111 [email protected]!registrar_llamada 1 24/11/2023 "Reclamo" "Entrante"!ver_interacciones 1!agregar_nota 1 "llamada" "El cliente estaba molesto" |
| Como usuario quiero registrar otros datos de los clientes como género y fecha de nacimiento... | !crear_cliente!registrar_datos_cliente |
!crear_cliente "Lucia" "Datos" 092222333 [email protected]!registrar_datos_cliente 1 Femenino 15/05/1995 |
| Como usuario quiero poder definir etiquetas para poder organizar y segmentar a mis clientes. | !crear_etiqueta |
!crear_etiqueta "VIP" |
| Como usuario quiero poder agregar una etiqueta a un cliente... | !crear_cliente!crear_etiqueta!asignar_etiqueta |
!crear_cliente "Marcos" "Etiqueta" 093333444 [email protected]!crear_etiqueta "Deudor"!asignar_etiqueta 1 "Deudor" |
| Como usuario quiero poder registrar una venta a un cliente... | !crear_cliente!registrar_venta |
!crear_cliente "Cliente" "Comprador" 094444555 [email protected]!registrar_venta 1 "Laptop Gamer" 2500 |
| Como usuario quiero poder registrar que le envié una cotización a un cliente... | !crear_cliente!registrar_cotizacion |
!crear_cliente "Prospecto" "Nuevo" 095555666 [email protected]!registrar_cotizacion 1 500 "Servicio Mensual" |
| Como usuario quiero ver todas las interacciones de un cliente... | !crear_cliente!registrar_llamada!ver_interacciones |
!crear_cliente "Historial" "Full" 096666777 [email protected]!registrar_llamada 1 20/11/2023 "Intro" "Saliente"!ver_interacciones 1 |
| Cómo usuario quiero saber los clientes que hace cierto tiempo que no tengo ninguna interacción... | !crear_cliente!clientes_inactivos |
!crear_cliente "Inactivo" "Test" 097777888 [email protected]!clientes_inactivos 30 |
| Como usuario quiero saber los clientes que se pusieron en contacto conmigo y no les contesté... | !crear_cliente!registrar_mensaje!ver_interacciones |
!crear_cliente "Sin" "Respuesta" 098888999 [email protected]!registrar_mensaje 1 01/12/2023 "Ayuda" "Necesito soporte" "Entrante"!ver_interacciones 1 |
| Como administrador quiero crear, suspender o eliminar usuarios... | !admin crear_usuario!admin suspender_usuario!admin eliminar_usuario |
!admin crear_usuario @UsuarioDiscord Vendedor!admin suspender_usuario 1!admin eliminar_usuario 1 |
| Como vendedor, quiero poder asignar un cliente a otro vendedor... | !admin crear_usuario!crear_cliente!asignar_vendedor |
(Requiere mencionar a otro usuario)!admin crear_usuario @Compañero Vendedor Administrador!crear_cliente "Cliente" "Transferible" 099999999 [email protected]!asignar_vendedor 1 @Compañero |
| Como usuario quiero saber el total de ventas de un periodo dado... | !crear_cliente!registrar_venta!total_ventas |
!crear_cliente "Comprador" "Total" 091111222 [email protected]!registrar_venta 1 "Item 1" 1000!registrar_venta 1 "Item 2" 2000!total_ventas 01/01/2020 31/12/2025 |
| Como usuario quiero ver un panel con clientes totales, interacciones recientes y reuniones próximas... | !crear_cliente!registrar_reunion!dashboard |
!crear_cliente "Demo" "Dashboard" 092222333 [email protected]!registrar_reunion 1 31/12/2025 "Zoom" "Cierre de año"!dashboard |
Trello del equipo: Ver Tablero en Trello
- Gestión del Proyecto y Control de Versiones: Si bien la codificación en C# presentó sus propios desafíos técnicos, la mayor curva de aprendizaje y el aspecto más desgastante fue la coordinación del equipo a través de Git y la planificación detallada en Trello. Asegurarnos de que todos trabajáramos en ramas separadas, integráramos los cambios (merge) correctamente y mantuviéramos el Trello actualizado requirió más esfuerzo y comunicación de lo anticipado.
- Aplicación Práctica de Principios: Llevar los conceptos de SRP y Expert de la teoría a decisiones concretas en el código, como la creación de los Repositorios y
CRMPrinter, fue un proceso iterativo que requirió varias refactorizaciones.
- Importancia de la Gestión: Aprendimos que la codificación es solo una parte del desarrollo de software. La planificación (Trello) y la colaboración (Git) son cruciales para el éxito del equipo.
- Diseño Consciente: Nos dimos cuenta de que tomarnos el tiempo necesario para diseñar y codificar con calma, pensando en los principios, hizo que esa parte del proceso fuera menos estresante a largo plazo y resultó en un código más robusto.
- Testing como Red de Seguridad: Empezar a implementar los tests unitarios nos dio confianza y nos ayudó a validar nuestras decisiones de diseño.
- Flujo de Trabajo con Git: Practicar el ciclo de
checkout,fetch,merge,add,commitypushen ramas personales nos enseñó un flujo de trabajo efectivo para equipos. - Modelado Visual: Crear el diagrama UML nos ayudó a entender mejor la estructura general del proyecto y las relaciones entre clases antes de empezar a codificar a fondo.
- Documentación Oficial de .NET: Para consultas específicas sobre C# y las bibliotecas.
- Tutoriales de Git: Diversos recursos online para entender mejor el flujo de trabajo con ramas y fusiones.
- Ayuda de Trello: Para optimizar el uso del tablero y sus funcionalidades.
Aclaración: Se usaron dos cuentas de Git a nombre de Facundo debido al uso de distintos dispositivos durante el desarrollo, por ende, hay commits en el historial provenientes de ambas cuentas.