Proyecto

General

Perfil

Acciones

Proyecto: Sistema CRM (Customer Relationship Management)

1. Introducción

El Sistema CRM (Customer Relationship Management) es una solución integral diseñada para optimizar la gestión de relaciones con clientes, automatizar procesos de marketing, gestionar tareas y oportunidades de venta, y proporcionar análisis avanzados mediante reportes y métricas. El proyecto se desarrolla utilizando ABP.IO 9 con .NET 8, MySQL 8.x como base de datos, ASP.NET Core MVC con Razor Pages, Tailwind CSS para una interfaz moderna y responsiva, Chart.js para visualizaciones gráficas, ClosedXML para exportación a Excel, y LaTeX (procesado con latexmk) para exportación a PDF. El sistema utiliza el módulo Identity de ABP.IO para autenticación y autorización sin extender IdentityUser, aprovechando las capacidades de arquitectura modular, microservicios compatibles, y diseño orientado a dominio (DDD) que ofrece ABP.IO.

El proyecto abarca cinco subdominios principales (Gestión de Contactos, Gestión de Oportunidades de Venta, Automatización de Marketing, Gestión de Tareas y Actividades, y Reportes y Análisis) y un subdominio de soporte (Gestión de Usuarios y Permisos), cumpliendo con los requerimientos funcionales (FR-001 a FR-005) y no funcionales (NFR-003 a NFR-007). Este documento define el propósito, objetivos, alcance, y limitaciones del proyecto, integrando las capacidades de ABP.IO descritas en la documentación proporcionada.

2. Propósito del Proyecto

El propósito del Sistema CRM es proporcionar una plataforma robusta, segura, escalable y multilingüe que permita a las empresas:

  • Centralizar y gestionar información de contactos.
  • Seguimiento eficiente de oportunidades de venta para maximizar conversiones.
  • Automatizar campañas de marketing dirigidas y rastrear métricas.
  • Programar y asignar tareas relacionadas con contactos y oportunidades, con notificaciones automáticas.
  • Generar reportes tabulares y métricas visuales para análisis estratégico.
  • Garantizar un acceso seguro mediante autenticación multifactor (MFA), autorización basada en roles, y cumplimiento de normativas como GDPR.

El sistema aprovecha la infraestructura de ABP.IO 9, incluyendo su arquitectura DDD, soporte para microservicios, módulos pre-construidos (como Identity, Audit Logging, y Account), y el tema LeptonX para una interfaz moderna y personalizable.

3. Objetivos del Proyecto

  • Funcionales:
    • Implementar los requerimientos funcionales:
      • FR-001: Gestión de contactos (crear, editar, eliminar, buscar, importar).
      • FR-002: Gestión de oportunidades de venta (crear, actualizar, asociar documentos).
      • FR-003: Automatización de marketing (crear campañas, segmentar contactos, enviar correos, rastrear métricas).
      • FR-004: Programación y asignación de tareas relacionadas con contactos u oportunidades.
      • FR-005: Generación de reportes y visualización de métricas.
    • Cumplir las historias de usuario asociadas:
      • HU-FR001-01 a HU-FR001-03: Crear/editar contactos, buscar, importar desde CSV.
      • HU-FR002-01 a HU-FR002-03: Crear/editar oportunidades, asociar documentos, actualizar estados.
      • HU-FR003-01 a HU-FR003-03: Crear campañas, segmentar contactos, rastrear métricas.
      • HU-FR004-01 a HU-FR004-03: Programar tareas, asignarlas, recibir notificaciones.
      • HU-FR005-01 a HU-FR005-03: Generar reportes de contactos, visualizar métricas, exportar a PDF/Excel.
  • No Funcionales:
    • NFR-003: Seguridad con MFA, cifrado TLS 1.3, AES-256, y cumplimiento de GDPR.
    • NFR-004: Interfaz intuitiva, multilingüe (inglés, español, francés, portugués), responsiva, y accesible (WCAG 2.1).
    • NFR-005: Disponibilidad del 99.9% con recuperación en menos de 1 hora.
    • NFR-006: Copias de seguridad diarias y documentación completa.
    • NFR-007: Compatibilidad con navegadores (Chrome, Firefox, Safari, Edge) y dispositivos móviles.

4. Alcance del Proyecto

4.1 Subdominios Incluidos

El Sistema CRM se estructura en cinco subdominios principales y uno de soporte, cada uno mapeado a los requerimientos funcionales y soportado por la infraestructura de ABP.IO 9:

  1. Gestión de Contactos (FR-001):

    • Funcionalidades: Crear, editar, eliminar, buscar, e importar contactos (CSV). Incluye datos como nombre, correo, teléfono, dirección (ciudad, país, código postal), y notas.
    • Historias de Usuario:
      • HU-FR001-01: Crear/editar contactos con información básica.
      • HU-FR001-02: Buscar contactos por nombre, correo, o teléfono.
      • HU-FR001-03: Importar contactos desde archivos CSV.
    • Entidades: Contact (con Address como Value Object).
    • Integración con ABP.IO: Usa el módulo Identity para permisos (Crm.Contacts.*) y Audit Logging para registrar cambios.
    • Integración con Otros Subdominios: Base para tareas, oportunidades, y campañas.
  2. Gestión de Oportunidades de Venta (FR-002):

    • Funcionalidades: Crear, actualizar, y eliminar oportunidades; asociar documentos; gestionar etapas (prospección, negociación, cierre).
    • Historias de Usuario:
      • HU-FR002-01: Crear/editar oportunidades con descripción y valor estimado.
      • HU-FR002-02: Asociar documentos (PDF, imágenes) a oportunidades.
      • HU-FR002-03: Actualizar el estado de una oportunidad.
    • Entidades: Opportunity (con Stage como Value Object, Documents como colección).
    • Integración con ABP.IO: Usa Authorization para permisos (Crm.Opportunities.*) y Background Jobs para actualizaciones asíncronas.
    • Integración con Otros Subdominios: Relacionada con contactos y tareas; datos para reportes.
  3. Automatización de Marketing (FR-003):

    • Funcionalidades: Crear campañas, segmentar contactos, enviar correos, y rastrear métricas (aperturas, clics, conversiones).
    • Historias de Usuario:
      • HU-FR003-01: Crear campañas con plantillas personalizables.
      • HU-FR003-02: Segmentar contactos por criterios (ubicación, estado).
      • HU-FR003-03: Rastrear métricas de campañas.
    • Entidades: Campaign (con Metrics como Value Object).
    • Integración con ABP.IO: Usa Background Jobs para envío de correos y Distributed Event Bus para métricas en tiempo real.
    • Integración con Otros Subdominios: Usa contactos; métricas alimentan reportes.
  4. Gestión de Tareas y Actividades (FR-004):

    • Funcionalidades: Programar, asignar, y gestionar tareas; enviar notificaciones para tareas próximas o vencidas.
    • Historias de Usuario:
      • HU-FR004-01: Programar tareas con fecha, hora, y descripción.
      • HU-FR004-02: Asignar tareas a usuarios autenticados.
      • HU-FR004-03: Enviar notificaciones automáticas.
    • Entidades: Task (relacionada con Contact, Opportunity, e IdentityUser).
    • Integración con ABP.IO: Usa Background Jobs para notificaciones y Authorization para permisos (Crm.Tasks.*).
    • Integración con Otros Subdominios: Vinculada a contactos, oportunidades, y usuarios; datos para reportes.
  5. Reportes y Análisis (FR-005):

    • Funcionalidades: Generar reportes de contactos y tareas; visualizar métricas de oportunidades y campañas en gráficos; exportar a PDF (LaTeX) y Excel (ClosedXML).
    • Historias de Usuario:
      • HU-FR005-01: Generar reportes de contactos por criterios (ubicación, estado).
      • HU-FR005-02: Visualizar métricas de oportunidades en gráficos (Chart.js).
      • HU-FR005-03: Exportar reportes en PDF o Excel.
    • Herramientas: Chart.js 3.9.1, ClosedXML 0.102.1, LaTeX con latexmk.
    • Integración con ABP.IO: Usa Audit Logging para trazabilidad y Authorization para permisos (Crm.Reports.*).
    • Integración con Otros Subdominios: Agrega datos de contactos, oportunidades, campañas, y tareas.
  6. Gestión de Usuarios y Permisos (Soporte):

    • Funcionalidades: Gestionar usuarios (IdentityUser) y asignar roles/permisos para controlar el acceso a todos los subdominios.
    • Módulo ABP.IO: Identity para autenticación (MFA) y autorización; Account para login, registro, y recuperación de contraseña.
    • Permisos: Definidos en CrmPermissionDefinitionProvider (por ejemplo, Crm.Contacts.Create, Crm.Reports.Export).
    • Integración con Otros Subdominios: Controla acceso a todas las funcionalidades.

4.2 Requerimientos No Funcionales

  • NFR-003 (Seguridad):
    • Autenticación multifactor (MFA) mediante el módulo Account de ABP.IO.
    • Cifrado TLS 1.3 para comunicaciones, AES-256 para datos en MySQL.
    • Cumplimiento de GDPR con banner de consentimiento de cookies (usando cookieconsent).
  • NFR-004 (Interfaz):
    • Multilingüe: Inglés, español, francés, portugués (usando AbpLocalizationOptions).
    • Responsiva: Tema LeptonX con Tailwind CSS para compatibilidad móvil.
    • Accesible: Cumple WCAG 2.1 con atributos ARIA en tablas y gráficos.
  • NFR-005 (Disponibilidad):
    • 99.9% de uptime con MySQL InnoDB Cluster.
    • Recuperación en menos de 1 hora mediante despliegues en la nube (AWS ECS o Azure App Service).
  • NFR-006 (Mantenimiento):
    • Copias de seguridad diarias con mysqldump o servicios en la nube.
    • Documentación completa en Markdown (este documento y documentos de subdominios).
  • NFR-007 (Compatibilidad):
    • Soporte para navegadores: Chrome, Firefox, Safari, Edge.
    • Compatibilidad con dispositivos móviles (iOS, Android) mediante LeptonX y Tailwind CSS.

4.3 Tecnologías Utilizadas

Basado en la documentación de ABP.IO, el proyecto utiliza:

  • Framework: ABP.IO 9 con .NET 8, soportando arquitectura DDD, compatibilidad con microservicios, y modularidad.
  • Base de Datos: MySQL 8.x con cifrado AES-256.
  • Interfaz: ASP.NET Core MVC con Razor Pages, tema LeptonX (con soporte RTL y personalización), Tailwind CSS 2.2.19, Chart.js 3.9.1.
  • Infraestructura:
    • Módulos ABP.IO: Identity (gestión de usuarios), Account (login, registro), Audit Logging (trazabilidad), Background Jobs (tareas asíncronas), Distributed Event Bus (eventos en tiempo real).
    • Exportación: LaTeX (procesado con latexmk) para PDF, ClosedXML 0.102.1 para Excel.
  • Despliegue: Contenedores Docker en AWS ECS o Azure App Service.
  • Dependencias:
    <!-- Crm.Web/Crm.Web.csproj -->
    <PackageReference Include="Volo.Abp.Identity" Version="9.0.0" />
    <PackageReference Include="Volo.Abp.Account" Version="9.0.0" />
    <PackageReference Include="Volo.Abp.AuditLogging" Version="9.0.0" />
    <PackageReference Include="Volo.Abp.BackgroundJobs" Version="9.0.0" />
    <PackageReference Include="ClosedXML" Version="0.102.1" />
    

4.4 Plantilla de Inicio

El proyecto utiliza la plantilla Layered/Modular Monolith de ABP.IO, que proporciona:

  • Estructura DDD con capas separadas (Crm.Domain, Crm.Application, Crm.EntityFrameworkCore, Crm.HttpApi, Crm.Web).
  • Soporte para MySQL como proveedor de base de datos.
  • Interfaz MVC con Razor Pages, estilizada con el tema LeptonX.

5. Exclusiones del Alcance

  • Integraciones Externas: No incluye integración con sistemas ERP, plataformas de mensajería (como WhatsApp), o servicios de terceros más allá de los necesarios para correos (por ejemplo, SendGrid) o notificaciones (SignalR).
  • Funcionalidades Avanzadas: No cubre inteligencia artificial, análisis predictivo, o personalización avanzada de plantillas de correo.
  • Soporte de Idiomas Adicionales: Limitado a inglés, español, francés, y portugués.
  • Módulos Adicionales de ABP.IO: No utiliza módulos como Payment, SaaS, o Chat a menos que se especifique.
  • Aplicaciones Móviles: No incluye desarrollo de aplicaciones móviles con React Native o .NET MAUI, aunque ABP.IO soporta plantillas para estas.
  • Formatos de Exportación: Limitado a PDF (LaTeX) y Excel (ClosedXML).

6. Supuestos

  • Los usuarios tienen acceso a navegadores modernos (Chrome, Firefox, Safari, Edge) y dispositivos móviles compatibles.
  • La infraestructura en la nube (AWS, Azure) está disponible para el despliegue.
  • Los datos iniciales (contactos, oportunidades, campañas, tareas) serán proporcionados o generados durante las pruebas.
  • Un servicio de conversión de LaTeX a PDF (latexmk) está configurado en producción (por ejemplo, en un contenedor Docker con texlive-full).
  • Los permisos y roles serán configurados por un administrador utilizando la interfaz de ABP.IO Identity.

7. Limitaciones

  • Rendimiento: Depende de la optimización de consultas MySQL (índices definidos) y la capacidad del servidor.
  • Exportación a PDF: Requiere un servicio externo o contenedor para procesar LaTeX en producción.
  • Notificaciones: Limitadas a simulación (consola, SendGrid, o SignalR); requieren configuración adicional para entornos reales.
  • Escalabilidad: Escalabilidad horizontal depende del clúster MySQL y balanceo de carga en la nube.
  • Multitenencia: No implementada, aunque ABP.IO la soporta, salvo solicitud explícita.

8. Entregables

  • Código Fuente: Solución ABP.IO con módulos para cada subdominio:
    • Crm.Domain: Entidades y servicios de dominio.
    • Crm.Application: Servicios de aplicación y DTOs.
    • Crm.EntityFrameworkCore: Configuración de MySQL con EF Core.
    • Crm.HttpApi: Endpoints REST.
    • Crm.Web: Interfaz MVC con Razor Pages, LeptonX, Tailwind CSS, y Chart.js.
  • Documentación: Documentos Markdown detallando definición, alcance, y desarrollo de subdominios.
  • Migraciones de Base de Datos: Scripts EF Core para MySQL.
  • Interfaz de Usuario: Páginas Razor con menús simplificados (LeptonX), gráficos (Chart.js), y exportaciones (PDF, Excel).
  • Configuración de Seguridad: MFA, permisos, y banner de cookies.
  • Instrucciones de Despliegue: Pasos para ejecución local y en la nube.

9. Criterios de Éxito

  • Funcional: Implementación completa de FR-001 a FR-005, cumpliendo todas las historias de usuario (HU-FR001-01 a HU-FR005-03).
  • No Funcional: Cumplimiento de NFR-003 a NFR-007, verificado mediante pruebas de seguridad, accesibilidad, compatibilidad, y disponibilidad.
  • Usuario Final: Interfaz intuitiva con menús simplificados (LeptonX), reportes exportables, y métricas visuales accesibles.
  • Técnico: Despliegue exitoso en AWS ECS o Azure App Service, con 99.9% de uptime y backups diarios.

10. Estructura del Sistema

El sistema sigue el patrón Domain-Driven Design (DDD) con la plantilla Layered/Modular Monolith de ABP.IO:

  • Capa de Dominio: Entidades (Contact, Opportunity, Campaign, Task), servicios (ReportService, TaskNotificationService), permisos (CrmPermissionDefinitionProvider).
  • Capa de Aplicación: Servicios (ContactAppService, OpportunityAppService, CampaignAppService, TaskAppService, ReportAppService), DTOs.
  • Capa de Infraestructura: MySQL con EF Core, índices para rendimiento.
  • Capa de Presentación: Razor Pages con tema LeptonX, Tailwind CSS, y Chart.js.
  • Capa de API: Endpoints REST en Crm.HttpApi.

11. Integración entre Subdominios

  • Gestión de Contactos: Proporciona datos base (ContactId) para oportunidades, campañas, y tareas.
  • Gestión de Oportunidades: Relacionada con contactos y tareas; alimenta métricas para reportes.
  • Automatización de Marketing: Usa contactos para segmentación; métricas para reportes.
  • Gestión de Tareas: Vinculada a contactos, oportunidades, y usuarios (IdentityUser); datos para reportes.
  • Reportes y Análisis: Agrega datos de todos los subdominios; usa Chart.js, ClosedXML, y LaTeX.
  • Gestión de Usuarios: Controla acceso mediante permisos (Crm.*) asignados a IdentityUser.

12. Aprovechamiento de ABP.IO 9

Basado en la documentación proporcionada, el proyecto utiliza:

  • Arquitectura: DDD, modularidad, y compatibilidad con microservicios.
  • Infraestructura: Módulos Identity, Account, Audit Logging, Background Jobs, y Distributed Event Bus.
  • Tema LeptonX: Menús simplificados, soporte RTL, personalización de colores, y diseño responsivo.
  • Plantilla de Inicio: Layered/Modular Monolith con MySQL y MVC.
  • Módulos Pre-construidos:
    • Identity: Gestión de usuarios y permisos.
    • Account: Login, registro, recuperación de contraseña.
    • Audit Logging: Registro de acciones de usuarios y cambios en entidades.

13. Plan de Implementación

  • Fase 1: Configuración de ABP.IO 9, MySQL 8.x, y estructura DDD.
  • Fase 2: Desarrollo de subdominios:
    • Gestión de Contactos (FR-001).
    • Gestión de Oportunidades de Venta (FR-002).
    • Automatización de Marketing (FR-003).
    • Gestión de Tareas y Actividades (FR-004).
    • Reportes y Análisis (FR-005).
    • Gestión de Usuarios y Permisos (soporte).
  • Fase 3: Configuración de seguridad (MFA, TLS, GDPR), multilingüismo, y accesibilidad con LeptonX.
  • Fase 4: Pruebas unitarias, de integración, accesibilidad, y despliegue en la nube.
  • Fase 5: Entrega de documentación y capacitación.

14. Conclusiones

El Sistema CRM, desarrollado con ABP.IO 9 y MySQL 8.x, proporciona una solución completa para la gestión de clientes, ventas, marketing, tareas, y análisis. La arquitectura modular y DDD, junto con el tema LeptonX y módulos pre-construidos de ABP.IO, asegura un sistema escalable, seguro, y fácil de mantener. Este documento establece un alcance claro, integrando todos los subdominios y cumpliendo con los requerimientos funcionales y no funcionales, listo para implementación en entornos locales o en la nube.

Actualizado por Anibal Pendas Amador hace 4 días · 1 revisiones