DTIKC
Git
  1. Sistemas
DTIKC
  • Inicio
  • Modelo de Gestión
    • ITIL 4
    • Gestión por Procesos
    • LEAN, BPM & RAD
    • OKR
    • El Nuevo Paradigma de TI
  • Personas
    • Organigrama Funcional
    • Roles y Matriz RACI
      • Matriz RACI - Mesa de Ayuda (N1)
      • Matriz RACI - Soporte Técnico (N2)
      • Matriz RACI - Infraestructura (N3)
      • Matriz RACI Consolidada de la Dirección de Tecnología e Innovación
    • Descriptivos de Puestos
      • Indice
      • Developer RPA & IA con Python
      • Analista de Operaciones y Mesa de Ayuda N1
      • Especialista de Soporte Técnico Nivel 2
      • Senior de Infraestructura
        • Especialista Senior en Infraestructura N3
        • Especialista Junior en Infraestructura N3
    • Medición y Mejora Continua
      • OKRs Generales
      • OKRs Analista de Operaciones y Mesa de Ayuda N1
      • OKR Especialista de Soporte Técnico N2
  • Procesos de Sistemas
    • Indice
    • Proceso de Control de Versiones con Git
    • Proceso de Ejecución de Proyectos para Desarrolladores de Software
    • Procesos de Mesa de Ayuda N1
    • Procesos de Soporte Técnico N2
    • Procesos de Junior de Infraestructura
    • Procesos de Senior de Infraestructura
  • Especificaciones
    • Devs
      • Patrones de Nombrado (Naming Conventions) en Programación
  • Sistemas
    • Indice
    • Prometeo
    • Pegasus
    • Olympus
    • Andromeda
    • FrontBack
    • OServerLogic
    • CServer
    • FbCotizador
    • Oserver
    • MetCotizadores
    • ClassLibrary
    • APIs
      • Chatbase
      • ApiMetPro_Pendientes_Emitir_Get
    • App Services
      • Documento sin título
  • Manuales Usuarios
    • Procedimiento para Recuperar Contraseña de Acceso a Titan
    • Procedimiento de Alta de Agente IP en Keysi
    • Checklist Mantenimiento Soporte N2
    • Manual de Sistema de Gestión
  • Lineamientos y Politicas
    • Acta de Protocolo Home Office
    • Acta de Compromiso: Excelencia Operativa en la Dirección de Tecnologías e Innovación
    • Modelo de Atención Universal de Soporte Técnico Nivel 2
Git
  1. Sistemas

Pegasus

DOCUMENTACIÓN TÉCNICA - PROYECTO PEGASUS

1. INFORMACIÓN GENERAL DEL PROYECTO

  • Nombre del proyecto: Pegasus
  • Descripción y propósito: Sistema de Administración de Fuerza de Ventas diseñado para gestionar agentes de seguros, comisiones, liquidaciones, pagos, ingresos, egresos y operaciones relacionadas con la industria aseguradora para Grupo KC Agente de Seguros SA de CV.
  • Versión del framework .NET utilizado: .NET Framework 4.8
  • Tipo de aplicación: Aplicación Web ASP.NET MVC 5 con Web API 2 y SignalR 2.2.0
  • Fecha de última modificación del proyecto: 2025-12-13
  • Empresa: Grupo KC Agente de Seguros SA de CV
  • Control de versiones: Git (migrando desde Subversion)

2. MAPA DE SITIO / ESTRUCTURA DEL PROYECTO

Estructura de la Solución

📁 Pegasus/
├── 📄 Pegasus.sln                          # Solución principal de Visual Studio
├── 📄 README.md                            # Documentación básica del proyecto
├── 📄 site-description.md                  # Template de documentación
│
├── 📁 Pegasus.Web/                         # ⭐ CAPA DE PRESENTACIÓN (UI)
│   ├── 📁 App_Start/                       # Configuración inicial de la aplicación
│   │   ├── 📄 BundleConfig.cs             # Configuración de bundles CSS/JS
│   │   ├── 📄 FilterConfig.cs             # Filtros globales MVC
│   │   ├── 📄 RouteConfig.cs              # Rutas MVC
│   │   └── 📄 WebApiConfig.cs             # Configuración de Web API
│   │
│   ├── 📁 Controllers/ (124 archivos)      # Controladores MVC y Web API
│   │   ├── 📁 Módulo Agentes (11 controladores)
│   │   │   ├── 📄 AgentesController.cs              # Principal (3,783 líneas)
│   │   │   ├── 📄 Agentes_CategoriasController.cs
│   │   │   ├── 📄 Agentes_CedulasController.cs
│   │   │   ├── 📄 Agentes_ContratosController.cs
│   │   │   ├── 📄 Agentes_DocumentosController.cs
│   │   │   ├── 📄 Agentes_EsquemasController.cs
│   │   │   ├── 📄 Agentes_NivelesController.cs
│   │   │   ├── 📄 Agentes_PensionesController.cs
│   │   │   ├── 📄 Agentes_PromotoriasController.cs
│   │   │   ├── 📄 Agentes_RetencionController.cs
│   │   │   └── 📄 Agentes_MovimientosController.cs
│   │   │
│   │   ├── 📁 Módulo Liquidaciones y Pagos
│   │   │   ├── 📄 LiquidacionesController.cs
│   │   │   ├── 📄 PagosController.cs
│   │   │   ├── 📄 Pagos_MovimientosController.cs
│   │   │   └── 📄 Pagos_Movimientos_BancosController.cs
│   │   │
│   │   ├── 📁 Módulo Ingresos y Egresos
│   │   │   ├── 📄 IngresosController.cs
│   │   │   ├── 📄 EgresosController.cs
│   │   │   ├── 📄 Egresos_PermanentesController.cs
│   │   │   ├── 📄 Egresos_BeneficiariosController.cs
│   │   │   ├── 📄 Tipos_IngresosController.cs
│   │   │   ├── 📄 Tipos_EgresosController.cs
│   │   │   ├── 📄 Categorias_IngresosController.cs
│   │   │   └── 📄 Categorias_EgresosController.cs
│   │   │
│   │   ├── 📁 Módulo Personas
│   │   │   ├── 📄 PersonasController.cs
│   │   │   ├── 📄 Personas_CorreosController.cs
│   │   │   ├── 📄 Personas_DomiciliosController.cs
│   │   │   ├── 📄 Personas_TelefonosController.cs
│   │   │   ├── 📄 Personas_Datos_BancariosController.cs
│   │   │   └── 📄 Personas_Formas_PagoController.cs
│   │   │
│   │   ├── 📁 Módulo CAM (Control de Acceso de Módulos)
│   │   │   ├── 📄 Cam_AplicacionesController.cs
│   │   │   ├── 📄 Cam_Aplicaciones_UsuariosController.cs
│   │   │   ├── 📄 Cam_PrivilegiosController.cs
│   │   │   ├── 📄 Cam_Privilegios_AsignadosController.cs
│   │   │   ├── 📄 Cam_UsuariosController.cs
│   │   │   ├── 📄 Cam_ZonasController.cs
│   │   │   └── 📄 Cam_Zonas_PromotoriasController.cs
│   │   │
│   │   ├── 📁 Módulo Seguridad
│   │   │   ├── 📄 ActiveDirectoryController.cs
│   │   │   ├── 📄 UsuariosController.cs
│   │   │   ├── 📄 UsuariosPermisosController.cs
│   │   │   ├── 📄 UsuariosPrivilegiosAccionesController.cs
│   │   │   └── 📄 RolesController.cs
│   │   │
│   │   ├── 📁 Módulo Catálogos
│   │   │   ├── 📄 CatalogosController.cs
│   │   │   ├── 📄 BancosController.cs
│   │   │   ├── 📄 AseguradorasController.cs
│   │   │   ├── 📄 EmpresasController.cs
│   │   │   ├── 📄 PromotoriasController.cs
│   │   │   ├── 📄 ProductosController.cs
│   │   │   └── 📄 OficinasController.cs
│   │   │
│   │   └── 📁 Helpers y Utilidades
│   │       ├── 📄 HelpersController.cs
│   │       ├── 📄 GenericsController.cs
│   │       ├── 📄 GridViewController.cs
│   │       ├── 📄 FileController.cs
│   │       └── 📄 V3Controller.cs
│   │
│   ├── 📁 Views/                           # Vistas Razor
│   │   ├── 📁 Shared/                     # Layouts y parciales compartidos
│   │   ├── 📁 Nf/                         # Vistas NetFactory framework
│   │   ├── 📁 V3/                         # Vistas versión 3
│   │   ├── 📁 Notificaciones/
│   │   ├── 📁 Case/
│   │   ├── 📁 CaseTool/
│   │   ├── 📁 Docs/
│   │   └── 📁 ...
│   │
│   ├── 📁 Models/                          # ViewModels para vistas
│   │
│   ├── 📁 Scripts/                         # JavaScript y frameworks frontend
│   │   ├── 📁 angular/                    # Angular 1.x
│   │   ├── 📁 bootstrap/                  # Bootstrap
│   │   ├── 📁 jquery/                     # jQuery
│   │   ├── 📄 gkcGlobal.js               # Scripts globales GKC
│   │   └── 📄 gkcGlobalExtJs.js          # Scripts ExtJS globales
│   │
│   ├── 📁 Content/                         # Estilos CSS
│   │   ├── 📄 bootstrap.css
│   │   ├── 📄 gkcGlobalStyle.css
│   │   └── 📄 Site.css
│   │
│   ├── 📁 ExtJs/                           # Framework ExtJS
│   ├── 📁 nf.flat/                         # Framework flat NetFactory
│   ├── 📁 Grid/                            # Componentes de grillas
│   ├── 📁 Exporter/                        # Exportación de datos
│   │
│   ├── 📁 Hubs/                            # SignalR Hubs
│   │   └── 📄 Notificaciones.cs           # Hub de notificaciones en tiempo real
│   │
│   ├── 📁 ClasesAuxiliares/               # Clases de ayuda
│   │   ├── 📄 DataBase.cs                # Operaciones de BD auxiliares
│   │   └── 📁 FileUploader/              # Carga de archivos
│   │
│   ├── 📁 Areas/                           # Áreas MVC
│   │   └── 📁 HelpPage/                   # Documentación API automática
│   │
│   ├── 📁 img/                             # Imágenes
│   ├── 📁 fonts/                           # Fuentes
│   ├── 📁 DLL/                             # Librerías adicionales
│   │
│   ├── 📄 Web.config                       # ⚙️ Configuración principal
│   ├── 📄 Global.asax.cs                   # Punto de entrada de la aplicación
│   ├── 📄 Startup.cs                       # Configuración OWIN/SignalR
│   ├── 📄 MvcReportViewer.aspx            # Visor de reportes
│   └── 📄 Pegasus.Web.csproj              # Archivo de proyecto
│
├── 📁 Pegasus.Negocio/                     # ⭐ CAPA DE LÓGICA DE NEGOCIO (BLL)
│   ├── 📁 Abstract/                        # Clases abstractas base
│   │   ├── 📄 NegocioResultado.cs         # Resultado de operaciones de negocio
│   │   ├── 📄 ValidadorExcel.cs           # Base para validadores Excel
│   │   └── 📄 FileUploaderRules.cs        # Reglas de carga de archivos
│   │
│   ├── 📁 Importacion/ (14 validadores)    # Validadores de importación Excel
│   │   ├── 📄 ValidadorExcel_Agentes_Con_Egresos_Permanentes.cs
│   │   ├── 📄 ValidadorExcel_Agentes_Con_Ingresos_Permanentes.cs
│   │   ├── 📄 ValidadorExcel_Importes.cs
│   │   ├── 📄 ValidadorExcel_Comisiones.cs
│   │   ├── 📄 ValidadorExcel_Financiamiento.cs
│   │   └── 📄 ...
│   │
│   ├── 📁 Upload/ (14 uploaders)           # Procesadores de carga de archivos
│   │   └── 📄 FileUploader_*.cs
│   │
│   ├── 📁 Bancos/                          # Layouts bancarios
│   │   ├── 📄 LayoutBanamex.cs            # Generación de layout Banamex
│   │   └── 📄 LayoutBanorte.cs            # Generación de layout Banorte
│   │
│   ├── 📁 BarCodes/                        # Generación de códigos de barras
│   │   └── 📄 Barcodes.cs
│   │
│   ├── 📁 Utils/                           # Utilidades de negocio
│   │
│   ├── 📄 packages.config                  # Paquetes NuGet
│   ├── 📄 app.config                       # Configuración
│   └── 📄 Pegasus.Negocio.csproj          # Archivo de proyecto
│
├── 📁 Pegasus.Datos/                       # ⭐ CAPA DE ACCESO A DATOS (DAL)
│   ├── 📄 Conexion.cs                      # 🔑 Singleton de conexión a BD
│   │
│   ├── 📁 DAOs/ (104 clases)               # Data Access Objects
│   │   ├── 📄 AgentesDAO.cs
│   │   ├── 📄 Agentes_CategoriasDAO.cs
│   │   ├── 📄 Agentes_CedulasDAO.cs
│   │   ├── 📄 Agentes_ContratosDAO.cs
│   │   ├── 📄 Agentes_DocumentosDAO.cs
│   │   ├── 📄 PersonasDAO.cs
│   │   ├── 📄 Personas_CorreosDAO.cs
│   │   ├── 📄 PagosDAO.cs
│   │   ├── 📄 IngresosDAO.cs
│   │   ├── 📄 EgresosDAO.cs
│   │   ├── 📄 Cam_AplicacionesDAO.cs
│   │   ├── 📄 Cam_UsuariosDAO.cs
│   │   └── 📄 ...
│   │
│   ├── 📁 Queries/                         # Scripts SQL embebidos
│   │
│   └── 📄 Pegasus.Datos.csproj            # Archivo de proyecto
│
├── 📁 Pegasus.Interfaces/                  # ⭐ MODELOS Y ENTIDADES
│   ├── 📁 Models/ (120+ clases)            # Entidades de dominio
│   │   ├── 📄 Agentes.cs                  # Clase abstracta base
│   │   ├── 📄 Agentes_Categorias.cs
│   │   ├── 📄 Agentes_Cedulas.cs
│   │   ├── 📄 Agentes_Contratos.cs
│   │   ├── 📄 Personas.cs
│   │   ├── 📄 Pagos.cs
│   │   ├── 📄 Ingresos.cs
│   │   ├── 📄 Egresos.cs
│   │   └── 📄 ...
│   │
│   ├── 📁 Enumeradores/                    # Enumeraciones (T4 Templates)
│   │
│   └── 📄 Pegasus.Interfaces.csproj       # Archivo de proyecto
│
├── 📁 Comun.Utilerias/                     # ⭐ UTILIDADES COMPARTIDAS
│   ├── 📄 Encripcion.cs                    # Encriptación/Desencriptación
│   ├── 📄 Json.cs                          # Serialización JSON
│   ├── 📄 Enumeradores.cs                  # Enumeradores globales
│   ├── 📄 Nombres.cs                       # Manipulación de nombres
│   └── 📄 Comun.Utilerias.csproj          # Archivo de proyecto
│
├── 📁 Seguridad/                           # ⭐ MÓDULO DE SEGURIDAD
│   ├── 📁 DirectorioActivo/               # Integración con Active Directory
│   │   ├── 📄 DA_Configuracion.cs         # Configuración AD
│   │   └── 📄 DA_Conector.cs              # Conector AD
│   │
│   └── 📄 Seguridad.csproj                # Archivo de proyecto
│
├── 📁 Pegasus.ReportesVS2013/             # Proyecto de reportes
│   └── 📁 Pegasus.Reportes/
│       └── 📄 Pegasus.Reportes.sln
│
├── 📁 Referencias/                         # DLLs de terceros
│   ├── 📄 EPPlus.dll                      # Procesamiento Excel
│   ├── 📄 CrystalDecisions.*.dll          # Crystal Reports
│   └── 📄 Microsoft.ReportViewer.*.dll
│
├── 📁 LayOuts/                             # Layouts para archivos bancarios
│
├── 📁 Sql/                                 # 📊 Scripts SQL organizados
│   ├── 📁 Tickets/                        # Scripts por ticket de desarrollo
│   │   ├── 📁 Liquidaciones_IP/
│   │   ├── 📁 Liquidaciones_Autos/
│   │   ├── 📁 Liquidaciones_Resico/
│   │   ├── 📁 Financiamiento/
│   │   └── 📁 ...
│   │
│   ├── 📁 StoredProcedures/
│   ├── 📁 Triggers/
│   └── 📁 Views/
│
├── 📁 packages/                            # Paquetes NuGet descargados
│
├── 📁 PULL_REQUEST_TEMPLATE/              # Templates para PRs
│
├── 📁 .vs/                                 # Configuración Visual Studio
├── 📁 .vscode/                             # Configuración VS Code
└── 📁 .git/                                # Repositorio Git

Organización de Namespaces

Pegasus.Web                    → Capa de Presentación
Pegasus.Negocio               → Capa de Lógica de Negocio
Pegasus.Datos                 → Capa de Acceso a Datos (DAL)
Pegasus.Modelo                → Modelos y Entidades
Comun.Utilerias              → Utilidades Compartidas
DirectorioActivo             → Integración con Active Directory
nf.classLibrary              → Librería NetFactory

Proyectos en la Solución

  1. Pegasus.Web ({F963A793-D6D8-4A6E-8D47-4D194F6CA42C}) - ASP.NET Web Application
  2. Pegasus.Negocio ({00779F07-9C49-4540-9469-DD94BDB37D74}) - Class Library
  3. Pegasus.Datos ({A5D90FE3-DFA2-47CB-B868-1C657B2DD3EC}) - Class Library
  4. Pegasus.Interfaces ({0665DD16-BC18-4F48-AD21-FD049267E059}) - Class Library
  5. Comun.Utilerias ({857B5D91-C628-4EE4-96C0-172CAF3DD859}) - Class Library
  6. Seguridad ({4D057E84-4194-41E0-9FA4-F9A51FFAEF52}) - Class Library

3. INVENTARIO DE LIBRERÍAS Y DEPENDENCIAS

NuGet Packages

LibreríaVersión ActualPropósitoCategoría
EntityFramework6.4.4ORM para acceso a datos (uso parcial)ORM
Microsoft.AspNet.Mvc5.2.7Framework MVC para aplicaciones webFramework Web
Microsoft.AspNet.WebApi5.2.3Framework para crear APIs RESTfulAPI
Microsoft.AspNet.WebApi.WebHost5.2.3Hospedaje de Web API en IISAPI
Microsoft.AspNet.WebApi.SelfHost5.2.9Hospedaje auto-contenido de Web APIAPI
Microsoft.AspNet.SignalR.Core2.2.0Comunicación en tiempo real (WebSockets)Tiempo Real
Microsoft.AspNet.SignalR.SystemWeb2.2.0SignalR para System.WebTiempo Real
Microsoft.AspNet.Razor3.2.7-3.2.9Motor de vistas RazorUI
Microsoft.AspNet.WebPages3.2.7-3.2.9Páginas web ASP.NETUI
Microsoft.AspNet.Web.Optimization1.1.3Bundling y minificación de archivos estáticosOptimización
Microsoft.Owin2.1.0Pipeline OWIN para middlewareMiddleware
Microsoft.Owin.Host.SystemWeb2.1.0Hospedaje OWIN en IISMiddleware
Microsoft.Owin.Security2.1.0Seguridad y autenticación OWINSeguridad
Newtonsoft.Json5.0.4-6.0.4Serialización/deserialización JSONSerialización
Owin1.0Especificación OWINMiddleware
Antlr3.5.0.2Parser para optimización CSSOptimización
WebGrease1.5.2Optimización de recursos webOptimización
System.Net.Http2.0.20126.16343Cliente HTTPHTTP
Microsoft.Web.Infrastructure1.0.0.0Infraestructura web compartidaFramework Web

Librerías de Terceros (DLL)

LibreríaVersiónPropósitoCategoría
EPPlusN/AProcesamiento de archivos Excel (XLSX)Office
itextsharp5.5.7.0Generación y manipulación de PDFsPDF
itextsharp.xmlworker5.5.7.0Conversión HTML a PDFPDF
DotNetZip1.13.8.0Compresión y descompresión ZIPCompresión
DocX1.0.0.22Manipulación de documentos Word (DOCX)Office
IronPdfN/AGeneración avanzada de PDFsPDF
BarcodeLibN/AGeneración de códigos de barrasCódigos de Barras
MvcReportViewer0.8.3Visor de reportes SSRS en MVCReportes
Microsoft.ReportViewer.WebForms10.0.0.0Report Viewer de MicrosoftReportes

Frameworks Frontend

TecnologíaVersión/TipoPropósito
Bootstrap3.xFramework CSS responsive
jQuery2.x/3.xManipulación DOM y AJAX
Angular1.xFramework SPA (Single Page Application)
ExtJSN/AFramework UI empresarial rico
nf.flatCustomFramework NetFactory personalizado

Referencias .NET Framework

  • System (Core)
  • System.Data
  • System.Data.SqlClient
  • System.Data.Entity
  • System.Web
  • System.Web.Mvc (4.0.0.1)
  • System.Web.Http
  • System.Net.Http
  • System.Net.Http.Formatting
  • System.Drawing
  • System.Security
  • System.IO.Compression
  • System.Configuration
  • System.ComponentModel.DataAnnotations

4. ARQUITECTURA DEL PROYECTO

4.1 Patrón Arquitectónico

Arquitectura N-Capas (3-Tier Architecture) con separación clara de responsabilidades:

  • Capa de Presentación (Pegasus.Web): ASP.NET MVC 5 + Web API 2
  • Capa de Lógica de Negocio (Pegasus.Negocio): Validaciones, transformaciones, reglas de negocio
  • Capa de Acceso a Datos (Pegasus.Datos): Patrón DAO (Data Access Object) con ADO.NET
  • Capa de Modelos (Pegasus.Interfaces): Entidades de dominio (POCOs)

Patrones Complementarios:

  • Hybrid ORM: Combinación de Entity Framework 6.4.4 (parcial) + ADO.NET directo para operaciones complejas
  • Repository Pattern: Implementado a través de clases DAO
  • Singleton Pattern: Conexión a base de datos (Conexion.cs)
  • Abstract Factory: Validadores Excel y File Uploaders
  • Template Method: ValidadorExcel base para importaciones

4.2 Diagrama de Arquitectura

graph TB
    subgraph "CAPA DE PRESENTACIÓN"
        A[Cliente Web Browser]
        B[ASP.NET MVC Controllers]
        C[Web API Controllers]
        D[SignalR Hubs]
        E[Razor Views]
        F[JavaScript/Angular/ExtJS]
    end

    subgraph "CAPA DE NEGOCIO"
        G[Validadores Excel]
        H[File Uploaders]
        I[Layout Bancarios]
        J[Generadores Códigos Barras]
        K[Lógica de Negocio]
    end

    subgraph "CAPA DE DATOS"
        L[DAOs - 104 clases]
        M[Conexion.cs - Singleton]
        N[Entity Framework 6.4.4]
    end

    subgraph "CAPA DE MODELOS"
        O[Entidades - 120+ clases]
        P[Enumeradores T4]
    end

    subgraph "UTILIDADES"
        Q[Comun.Utilerias]
        R[Seguridad/Active Directory]
    end

    subgraph "BASE DE DATOS"
        S[(SQL Server - PegasusDB)]
        T[(SQL Server - Prometeo)]
    end

    subgraph "SERVICIOS EXTERNOS"
        U[Active Directory]
        V[SMTP Email Server]
        W[Report Server SSRS]
        X[Sistema de Archivos]
    end

    A --> B
    A --> C
    A --> D
    B --> E
    B --> F
    C --> F

    B --> K
    C --> K
    K --> G
    K --> H
    K --> I
    K --> J

    G --> L
    H --> L
    I --> L
    J --> L
    K --> L

    L --> M
    L --> N
    M --> S
    N --> S
    L --> T

    L --> O
    K --> O
    B --> O
    C --> O

    B --> Q
    C --> Q
    K --> Q
    L --> Q

    B --> R
    C --> R
    R --> U

    K --> V
    B --> W
    K --> X

    style A fill:#e1f5ff
    style S fill:#ffe1e1
    style T fill:#ffe1e1
    style U fill:#fff4e1
    style V fill:#fff4e1
    style W fill:#fff4e1
    style X fill:#fff4e1

4.3 Componentes Principales

Capa de Presentación (Pegasus.Web)

  • Controladores MVC: 124 controladores organizados por módulos funcionales

    • Agentes (11 controladores)
    • Liquidaciones y Pagos (4 controladores)
    • Ingresos y Egresos (8 controladores)
    • Personas (6 controladores)
    • CAM - Control de Acceso (7 controladores)
    • Seguridad (5 controladores)
    • Catálogos (8 controladores)
    • Helpers y Utilidades (5 controladores)
  • Web API Controllers: APIs RESTful para operaciones AJAX y consumo externo

  • SignalR Hubs: Notificaciones en tiempo real (Notificaciones.cs)

  • Vistas Razor: Renderizado server-side de HTML

  • Frontend Stack:

    • Angular 1.x para aplicaciones SPA
    • ExtJS para componentes UI empresariales
    • jQuery para manipulación DOM
    • Bootstrap para diseño responsive

Capa de Lógica de Negocio (Pegasus.Negocio)

  • Validadores Excel (14 clases): Validación de importaciones masivas

    • Comisiones
    • Financiamiento
    • Ingresos/Egresos permanentes
    • Importes y liquidaciones
  • File Uploaders (14 clases): Procesamiento de archivos cargados

  • Layouts Bancarios: Generación de archivos para bancos

    • LayoutBanamex.cs
    • LayoutBanorte.cs
  • Generadores de Códigos de Barras: Barcodes.cs

  • Clases Abstractas: NegocioResultado, ValidadorExcel, FileUploaderRules

Capa de Acceso a Datos (Pegasus.Datos)

  • 104 Clases DAO: Una por cada entidad principal
  • Conexion.cs: Singleton pattern para conexión a SQL Server
  • Patrón Híbrido:
    • ADO.NET directo con SqlCommand/SqlDataReader para queries complejas
    • Entity Framework 6.4.4 para operaciones CRUD simples

Capa de Modelos (Pegasus.Interfaces)

  • 120+ Entidades de Dominio: POCOs (Plain Old CLR Objects)
  • Enumeradores: Generados con T4 Templates
  • Clases Abstractas: Base classes para herencia (ej. Agentes.cs)

Servicios Externos

  • Active Directory: Autenticación y gestión de usuarios corporativos
  • SQL Server Reporting Services (SSRS): Reportes empresariales
  • SMTP Server: Envío de notificaciones por email
  • Sistema de Archivos: Almacenamiento de documentos (E:\Archivos)

4.4 Flujo de Datos

sequenceDiagram
    participant U as Usuario (Browser)
    participant MVC as MVC Controller
    participant API as Web API Controller
    participant BLL as Capa de Negocio
    participant DAO as Capa de Datos (DAO)
    participant DB as SQL Server
    participant EF as Entity Framework
    participant EXT as Servicios Externos

    rect rgb(230, 240, 255)
    Note over U,MVC: Flujo MVC Tradicional
    U->>MVC: HTTP GET Request
    MVC->>DAO: Obtener datos
    DAO->>DB: SqlCommand Query
    DB-->>DAO: SqlDataReader
    DAO-->>MVC: List<Modelo>
    MVC->>MVC: Renderizar Vista Razor
    MVC-->>U: HTML Response
    end

    rect rgb(255, 240, 230)
    Note over U,API: Flujo Web API (AJAX)
    U->>API: AJAX POST Request (JSON)
    API->>BLL: Validar datos de negocio
    BLL->>DAO: Guardar entidad
    DAO->>DB: SqlCommand INSERT/UPDATE
    DB-->>DAO: Resultado
    DAO-->>BLL: Éxito/Error
    BLL-->>API: NegocioResultado
    API-->>U: JSON Response
    end

    rect rgb(240, 255, 240)
    Note over U,EXT: Flujo con Servicios Externos
    U->>MVC: Importar Excel
    MVC->>BLL: ValidadorExcel.Procesar()
    BLL->>BLL: EPPlus - Leer Excel
    BLL->>DAO: Inserción masiva
    DAO->>DB: SqlBulkCopy
    DB-->>DAO: Resultado
    DAO-->>BLL: Éxito
    BLL->>EXT: Enviar email notificación
    EXT-->>BLL: Email enviado
    BLL-->>MVC: Resultado completo
    MVC-->>U: Vista con resultado
    end

    rect rgb(255, 245, 230)
    Note over U,DB: Flujo Entity Framework
    U->>API: GET /api/entidad/{id}
    API->>EF: context.Entidad.Find(id)
    EF->>DB: SELECT Query
    DB-->>EF: Resultados
    EF-->>API: Objeto mapeado
    API-->>U: JSON Response
    end

4.5 Flujo de Importación de Archivos Excel

sequenceDiagram
    participant U as Usuario
    participant C as Controller
    participant FU as FileUploader
    participant VE as ValidadorExcel
    participant EP as EPPlus Library
    participant DAO as DAO
    participant DB as Database

    U->>C: Upload archivo Excel
    C->>FU: FileUploader.Process()
    FU->>FU: Validar extensión y tamaño
    FU->>VE: ValidadorExcel.Validar()
    VE->>EP: Abrir Excel (EPPlus)
    EP-->>VE: ExcelWorksheet

    loop Por cada fila
        VE->>VE: Validar estructura
        VE->>VE: Validar tipos de datos
        VE->>VE: Validar reglas de negocio
        VE->>DAO: Verificar existencia en BD
        DAO->>DB: Query validación
        DB-->>DAO: Resultado
        DAO-->>VE: Existe/No existe
    end

    alt Todas las filas válidas
        VE->>DAO: Inserción masiva
        DAO->>DB: SqlBulkCopy
        DB-->>DAO: Éxito
        DAO-->>VE: Filas insertadas
        VE-->>FU: Resultado exitoso
        FU-->>C: NegocioResultado (Éxito)
        C-->>U: Mensaje de éxito
    else Errores de validación
        VE-->>FU: Lista de errores
        FU-->>C: NegocioResultado (Error)
        C-->>U: Excel con errores marcados
    end

5. ASPECTOS MÁS RELEVANTES

5.1 Funcionalidades Principales

  1. Gestión de Agentes de Seguros

    • Registro y administración de agentes
    • Gestión de cédulas profesionales
    • Contratos y esquemas de comisión
    • Categorías y niveles de agentes
    • Promotorías y jerarquías
  2. Sistema de Liquidaciones

    • Liquidaciones por aseguradora (IP, Autos, Resico)
    • Cálculo automático de comisiones
    • Generación de layouts bancarios (Banamex, Banorte)
    • Retenciones e impuestos
  3. Gestión de Ingresos y Egresos

    • Ingresos permanentes y eventuales
    • Egresos permanentes y eventuales
    • Categorización de movimientos
    • Beneficiarios de egresos
  4. Sistema de Pagos

    • Movimientos bancarios
    • Generación de archivos para dispersión
    • Seguimiento de pagos
    • Conciliación bancaria
  5. Importación Masiva de Datos

    • 14 validadores diferentes para importaciones Excel
    • Validación en tiempo real con EPPlus
    • Reporte de errores detallado
    • Inserción masiva con SqlBulkCopy
  6. Gestión Documental

    • Carga y almacenamiento de documentos
    • Generación de códigos de barras
    • Exportación a PDF con iTextSharp
    • Versionado de documentos
  7. Control de Acceso de Módulos (CAM)

    • Gestión de usuarios y privilegios
    • Roles y permisos granulares
    • Zonas y promotorías
    • Integración con Active Directory
  8. Reportes y Exportaciones

    • SSRS (SQL Server Reporting Services)
    • Crystal Reports
    • Exportación a Excel (EPPlus)
    • Exportación a PDF (iTextSharp)
    • Códigos de barras en reportes
  9. Notificaciones en Tiempo Real

    • SignalR para notificaciones push
    • Alertas de eventos importantes
    • Comunicación bidireccional
  10. Catálogos Maestros

    • Bancos, Aseguradoras, Empresas
    • Productos de seguros
    • Oficinas y sucursales
    • Estados, municipios, colonias

5.2 Configuraciones Críticas

Connection Strings (Web.config:Pegasus.Web/Web.config)

<connectionStrings>
    <!-- Base de datos principal -->
    <add name="Pegasus_DBString"
         connectionString="Data Source=sql.prod;Initial Catalog=PegasusDB;
         User ID=pegasus_user;Password=HCX8razvN6fb948*6JKE.F*t!d" />

    <!-- Conexión producción PegasusDB -->
    <add name="PegasusDB_Prod"
         connectionString="Server=sql.prod;Database=PegasusDB;
         User ID=pegasus_user;Encrypt=false;Connection Timeout=30000;" />

    <!-- Conexión Prometeo (sistema relacionado) -->
    <add name="Prometeo_Prod"
         connectionString="Server=sql.prod;Database=Prometeo;
         User ID=pegasus_user;Encrypt=false;Connection Timeout=30000;" />
</connectionStrings>

Configuraciones de Aplicación

<appSettings>
    <!-- Modo de ejecución -->
    <add key="RunTimeMode" value="Prod"/>
    <add key="DefaultDataBase" value="PegasusDB"/>
    <add key="OLYMPUS_SYNC" value="False"/>

    <!-- Archivos y almacenamiento -->
    <add key="FilesMainFolder" value="E:\Archivos"/>
    <add key="PathFiles" value="E:\Archivos"/>
    <add key="VirtualPathFiles" value="Files"/>

    <!-- Layouts Bancarios -->
    <add key="layouts_bancos_ruta" value="c:\files\bancos\"/>
    <add key="layout_banco1_clavebase" value="02"/>
    <add key="layouts_bancos_2_razon_social"
         value="GRUPO KC AGENTE DE SEGUROS SA de CV"/>

    <!-- Report Viewer -->
    <add key="MvcReportViewer.ReportServerUrl"
         value="http://gkc-w12-01:8080/r"/>
    <add key="MvcReportViewer.Username"
         value="gkc-w12-01\Administrador"/>

    <!-- Email Configuration -->
    <add key="serverName" value="mail.grupokc.com.mx"/>
    <add key="serverPort" value="25"/>
    <add key="userEmail" value="pegasus@grupokc.com.mx"/>
    <add key="ccEmail" value="cam@grupokc.com.mx"/>

    <!-- MVC Settings -->
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

Configuraciones de Seguridad

<system.web>
    <customErrors mode="Off"/>
    <globalization fileEncoding="iso-8859-1"
                   requestEncoding="iso-8859-1"
                   responseEncoding="iso-8859-1"
                   uiCulture="es" culture="es-MX"/>
    <compilation debug="true" targetFramework="4.8"/>
    <httpRuntime targetFramework="4.5" maxRequestLength="10000000"/>
</system.web>

<!-- Redirección HTTPS forzada -->
<rewrite>
    <rules>
        <rule name="http to https" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
                    redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

Configuraciones de Logging

  • CustomErrors: Configurado en "Off" para ambiente de desarrollo/producción controlado
  • Logs: Almacenados en App_Data\Log\

Variables de Entorno Críticas

  • RunTimeMode: "Prod" para producción
  • FilesMainFolder: Ruta física para almacenamiento de archivos (E:\Archivos)
  • layouts_bancos_ruta: Directorio para generación de layouts bancarios

5.3 Patrones de Diseño Implementados

1. Singleton Pattern

  • Clase: Pegasus.Datos.ConexionDB
  • Propósito: Garantizar una única instancia de conexión a base de datos
  • Ubicación: Pegasus.Datos/Conexion.cs
public sealed class ConexionDB
{
    private static volatile ConexionDB instance;
    private static object syncRoot = new Object();

    public static ConexionDB Instance
    {
        get
        {
            if (instance == null)
            {
                lock(syncRoot)
                {
                    if (instance == null)
                        instance = new ConexionDB();
                }
            }
            return instance;
        }
    }
}

2. Repository Pattern (DAO)

  • Implementación: 104 clases DAO
  • Propósito: Abstracción del acceso a datos
  • Convención: {Entidad}DAO.cs
  • Ejemplos: AgentesDAO, PersonasDAO, PagosDAO

3. Template Method Pattern

  • Clase Base: Pegasus.Negocio.Abstract.ValidadorExcel
  • Implementaciones: 14 validadores concretos
  • Propósito: Definir el esqueleto del algoritmo de validación de Excel
  • Métodos abstractos: Validar(), ProcesarFila(), ObtenerErrores()

4. Abstract Factory Pattern

  • Familias de productos:
    • ValidadorExcel_* (14 validadores)
    • FileUploader_* (14 uploaders)
  • Propósito: Crear familias de objetos relacionados

5. Strategy Pattern

  • Contexto: Layouts bancarios
  • Estrategias: LayoutBanamex, LayoutBanorte
  • Propósito: Intercambiar algoritmos de generación de layouts

6. MVC Pattern

  • Framework: ASP.NET MVC 5
  • Model: Entidades en Pegasus.Interfaces
  • View: Vistas Razor en Views/
  • Controller: 124 controladores en Controllers/

7. Unit of Work Pattern

  • Implementación: Parcial con Entity Framework
  • Contextos: DbContext personalizado
  • Transacciones: SqlTransaction en operaciones críticas

5.4 Seguridad

Autenticación

  • Active Directory Integration: Autenticación corporativa vía LDAP

    • Proyecto: Seguridad\DirectorioActivo\
    • Clases: DA_Configuracion.cs, DA_Conector.cs
  • OWIN Authentication: Middleware de autenticación

    • Configuración: Startup.cs
    • Microsoft.Owin.Security 2.1.0

Autorización

  • CAM (Control de Acceso de Módulos): Sistema de permisos granular

    • Usuarios: Cam_Usuarios
    • Aplicaciones: Cam_Aplicaciones
    • Privilegios: Cam_Privilegios
    • Privilegios Asignados: Cam_Privilegios_Asignados
    • Zonas y Promotorías: Control territorial de acceso
  • Roles: Sistema de roles implementado en base de datos

  • Claims: Información adicional del usuario autenticado

Protecciones Implementadas

  1. HTTPS Forzado

    • URL Rewrite rule para redirección automática HTTP → HTTPS
    • RedirectType: Permanent (301)
  2. Anti-Forgery Tokens

    • AntiForgeryConfig.SuppressXFrameOptionsHeader = true en Global.asax
  3. Validación de Entrada

    • ClientValidationEnabled = true
    • UnobtrusiveJavaScriptEnabled = true
    • Data Annotations en modelos
  4. Encriptación

    • Clase: Comun.Utilerias.Encripcion.cs
    • Propósito: Encriptación de datos sensibles
  5. Protección de Inyección SQL

    • Uso de SqlParameter en todas las queries
    • Entity Framework para queries seguras
    • Validación de entrada en capa de negocio
  6. Limitación de Tamaño de Request

    • maxRequestLength="10000000" (~10 MB)
    • Control de uploads grandes
  7. Globalización Segura

    • Encoding: iso-8859-1 consistente
    • Culture: es-MX para manejo correcto de fechas y números
  8. Gestión de Errores

    • customErrors mode="Off" (debería ser "RemoteOnly" en producción)
    • ⚠️ Recomendación: Cambiar a "RemoteOnly" para producción

Vulnerabilidades Potenciales Identificadas

⚠️ ALTA PRIORIDAD:

  1. CustomErrors mode="Off": Expone información sensible. Cambiar a "RemoteOnly".
  2. Versiones desactualizadas: Newtonsoft.Json 5.0.4 tiene vulnerabilidades conocidas.
  3. Credenciales en Web.config: Considerar uso de Azure Key Vault o encriptación de sección.

6. ANÁLISIS DE VERSIONES Y COMPATIBILIDAD

Framework .NET

  • Versión actual: .NET Framework 4.8
  • Fecha de lanzamiento: Abril 2019
  • Fecha de soporte: Soportado mientras exista Windows 10/11 y Windows Server
  • Estado: ✅ SOPORTADO (Última versión de .NET Framework)

Características de .NET 4.8:

  • Soporte a largo plazo (LTS implícito como parte del SO Windows)
  • Mejoras de rendimiento en JIT y GC
  • Soporte para TLS 1.2 y 1.3
  • Mejoras en WPF y Windows Forms
  • Compatibilidad total con aplicaciones .NET 4.x

Compatibilidad C#

  • Versión del lenguaje: C# 7.3 (por defecto con .NET 4.8 y VS 2015-2019)
  • Características modernas utilizadas:
    • Expression-bodied members
    • Pattern matching
    • Tuples
    • Local functions (parcialmente)
    • Async/await

Características C# 8-12 NO disponibles:

  • Nullable reference types
  • Records
  • Init-only properties
  • Top-level statements
  • Global usings
  • File-scoped namespaces

Compatibilidad de Visual Studio

  • Visual Studio: 2015 (ToolsVersion 14.0 en .csproj)
  • Recomendación: Migrar a Visual Studio 2022 (compatible con .NET 4.8)

7. RECOMENDACIONES DE ACTUALIZACIÓN

7.1 Prioridad Alta 🔴

LibreríaVersión ActualVersión RecomendadaMotivoEsfuerzo
Newtonsoft.Json5.0.4 / 6.0.413.0.3Vulnerabilidades de seguridad críticas (CVE-2024-21907, CVE-2018-0202)Bajo
Microsoft.AspNet.SignalR2.2.02.4.3Correcciones de seguridad y estabilidadMedio
EntityFramework6.4.46.4.4✅ Ya actualizadoN/A
Web.configN/AN/ACambiar customErrors mode="Off" a "RemoteOnly"Bajo
itextsharp5.5.7.0iText7 (8.x) o alternativa libreLicencia comercial requerida para producción desde v5.5.10Alto

7.2 Prioridad Media 🟡

LibreríaVersión ActualVersión RecomendadaBeneficioEsfuerzo
Microsoft.AspNet.Mvc5.2.75.3.0Última versión de MVC 5Bajo
Microsoft.Owin2.1.04.2.2Mejoras de rendimiento y seguridadMedio
Bootstrap3.x5.xUI moderna, mejor accesibilidadAlto
jQuery2.x/3.x3.7.xCorrecciones de seguridadBajo
Angular1.xAngular 17+ (o React/Vue)Framework moderno, mejor rendimientoMuy Alto

7.3 Prioridad Baja 🟢

LibreríaVersión ActualVersión RecomendadaBeneficioEsfuerzo
Visual Studio20152022Mejor experiencia de desarrollo, C# 12Bajo
ExtJSN/A (legacy)Mantener o migrar a framework modernoDepende de usoVariable
Report Viewer10.015.0Mejoras visuales y compatibilidadMedio

7.4 Framework .NET - Roadmap Recomendado

gantt
    title Roadmap de Actualización Recomendado - Proyecto Pegasus
    dateFormat YYYY-MM

    section Seguridad Crítica
    Actualizar Newtonsoft.Json a 13.0.3           :crit, 2025-12, 5d
    Cambiar customErrors a RemoteOnly             :crit, 2025-12, 2d
    Actualizar SignalR a 2.4.3                    :crit, 2026-01, 10d

    section Librerías Core
    Actualizar Microsoft.Owin a 4.2.2             :2026-01, 15d
    Actualizar Microsoft.AspNet.Mvc a 5.3.0       :2026-02, 10d
    Evaluar alternativa a iTextSharp              :2026-02, 20d

    section Frontend
    Actualizar jQuery a 3.7.x                     :2026-03, 5d
    Actualizar Bootstrap 3.x a 5.x                :2026-03, 30d

    section Modernización (Opcional)
    Evaluar migración a .NET 8                    :2026-06, 60d
    Migrar Angular 1.x a framework moderno        :2026-09, 90d

    section Tooling
    Migrar a Visual Studio 2022                   :2026-01, 3d

7.5 Consideraciones para Migración a .NET Moderno

Escenarios de Migración:

Opción 1: Mantener .NET Framework 4.8 ✅ RECOMENDADO A CORTO PLAZO

  • Pros:

    • Sin cambios de arquitectura
    • Soporte garantizado mientras exista Windows
    • Riesgo mínimo
    • Enfocarse solo en actualizar NuGet packages
  • Contras:

    • No acceso a mejoras de .NET Core/.NET 6+
    • Sin cross-platform
    • Menor rendimiento comparado con .NET moderno

Opción 2: Migrar a .NET 8 (Evaluación futura)

  • Pros:

    • Mejor rendimiento (2-3x en algunos escenarios)
    • Cross-platform (Linux containers)
    • C# 12 y características modernas
    • Soporte a largo plazo (LTS hasta 2026)
  • Contras:

    • Esfuerzo muy alto (3-6 meses)
    • Cambios en SignalR, Entity Framework
    • Web.config → appsettings.json
    • System.Web dependencies incompatibles
    • Crystal Reports incompatible (requiere alternativa)

Recomendación Final:

  1. Fase 1 (2025-2026): Mantener .NET Framework 4.8, actualizar librerías críticas
  2. Fase 2 (2026-2027): Evaluar migración a .NET 8+ si hay presupuesto y necesidad de modernización

8. MÉTRICAS DEL PROYECTO

Distribución por Tipo de Archivo

pie title "Distribución por Tipo de Archivo"
    "C# (.cs)" : 650
    "JavaScript (.js)" : 120
    "CSHTML/Razor (.cshtml)" : 80
    "CSS (.css)" : 35
    "SQL (.sql)" : 45
    "Config (.config)" : 15
    "HTML (.html)" : 25
    "Otros" : 30

Cobertura de Dependencias

pie title "Estado de Actualización de Dependencias"
    "Actualizadas (Última versión)" : 35
    "Desactualizadas menores (1-2 versiones)" : 40
    "Requieren actualización urgente" : 25

Complejidad por Capa

graph LR
    A[Pegasus.Web<br/>124 Controllers<br/>~45,000 LOC] --> B[Pegasus.Negocio<br/>45 Clases<br/>~8,000 LOC]
    B --> C[Pegasus.Datos<br/>104 DAOs<br/>~22,000 LOC]
    C --> D[Pegasus.Interfaces<br/>120+ Modelos<br/>~15,000 LOC]
    E[Comun.Utilerias<br/>~2,000 LOC] --> B
    F[Seguridad<br/>~1,500 LOC] --> A

Estimación de Líneas de Código (LOC)

ProyectoArchivosLOC EstimadasComplejidad
Pegasus.Web~400~45,000Alta
Pegasus.Negocio~45~8,000Media
Pegasus.Datos~104~22,000Media-Alta
Pegasus.Interfaces~120~15,000Baja
Comun.Utilerias~10~2,000Baja
Seguridad~8~1,500Media
TOTAL~687~93,500Media-Alta

Controladores Más Complejos (Top 5)

ControladorLíneas de CódigoComplejidad
AgentesController.cs3,783Muy Alta
LiquidacionesController.cs~2,500 (est.)Alta
PagosController.cs~1,800 (est.)Alta
IngresosController.cs~1,500 (est.)Media-Alta
PersonasController.cs~1,400 (est.)Media-Alta

9. DEUDA TÉCNICA IDENTIFICADA

Issues Críticos 🔴

  • Vulnerabilidades de seguridad en Newtonsoft.Json 5.0.4

    • Impacto: Alto - Potencial ejecución remota de código
    • Solución: Actualizar a 13.0.3+
    • Esfuerzo: Bajo (2-5 horas)
    • Prioridad: CRÍTICA
  • customErrors mode="Off" en producción

    • Impacto: Alto - Exposición de información sensible (stack traces)
    • Solución: Cambiar a "RemoteOnly"
    • Esfuerzo: Muy bajo (15 minutos)
    • Prioridad: CRÍTICA
  • Credenciales en texto plano en Web.config

    • Impacto: Alto - Riesgo de seguridad
    • Solución: Encriptar sección connectionStrings o usar Azure Key Vault
    • Esfuerzo: Bajo (2 horas)
    • Prioridad: ALTA
  • AgentesController.cs con 3,783 líneas

    • Impacto: Medio - Dificulta mantenimiento y testing
    • Solución: Refactorizar en múltiples controladores especializados
    • Esfuerzo: Alto (3-5 días)
    • Prioridad: MEDIA
  • Uso híbrido de ADO.NET y Entity Framework

    • Impacto: Medio - Inconsistencia en acceso a datos
    • Solución: Estandarizar en un solo enfoque (preferible EF Core en .NET moderno)
    • Esfuerzo: Muy Alto (4-6 semanas)
    • Prioridad: BAJA (funciona actualmente)

Mejoras Recomendadas 🟡

  • Implementar Unit Testing

    • Cobertura actual: ~0%
    • Tecnologías sugeridas: xUnit, NUnit, Moq
    • Comenzar con lógica de negocio y validadores
    • Esfuerzo: Alto (continuo)
  • Implementar CI/CD Pipeline

    • Azure DevOps, GitHub Actions, o Jenkins
    • Builds automatizados
    • Despliegue automatizado a ambientes
    • Esfuerzo: Medio (1-2 semanas)
  • Logging Estructurado

    • Implementar Serilog o NLog
    • Centralizar logs (Elasticsearch, Application Insights)
    • Correlación de requests
    • Esfuerzo: Medio (3-5 días)
  • Documentación de APIs

    • Mejorar HelpPage existente
    • Implementar Swagger/OpenAPI
    • Documentar endpoints críticos
    • Esfuerzo: Medio (1 semana)
  • Refactorización de Frontend

    • Angular 1.x está obsoleto (EOL 2022)
    • Considerar React, Vue, o Angular moderno
    • Modernizar UI con componentes reutilizables
    • Esfuerzo: Muy Alto (3-6 meses)
  • Containerización

    • Crear Dockerfile para la aplicación
    • Orquestar con Docker Compose o Kubernetes
    • Facilitar despliegues y escalabilidad
    • Esfuerzo: Medio (2-3 semanas)
  • Implementar Feature Flags

    • LaunchDarkly, Azure App Configuration
    • Despliegues progresivos
    • A/B testing
    • Esfuerzo: Bajo (3-5 días)

Code Smells Identificados

  1. God Object: AgentesController.cs (3,783 líneas)
  2. Magic Numbers: Uso de valores hardcodeados en validadores
  3. Duplicación de Código: Lógica repetida en múltiples DAOs
  4. Acoplamiento Alto: Dependencias directas entre capas sin interfaces
  5. Falta de Async/Await: Operaciones síncronas que deberían ser asíncronas
  6. Exceptions para Control de Flujo: Uso inadecuado de try-catch

10. GLOSARIO TÉCNICO

Términos del Dominio

TérminoDefinición
AgenteAgente de seguros autorizado para vender pólizas
CédulaCédula profesional requerida para ejercer como agente
PromotoriaAgrupación jerárquica de agentes de seguros
EsquemaEsquema de comisiones aplicable a un agente
LiquidaciónProceso de cálculo y pago de comisiones
CAMControl de Acceso de Módulos - sistema de permisos
Layout BancarioArchivo con formato específico para dispersión bancaria
Egreso PermanenteDescuento fijo aplicado periódicamente a un agente
Ingreso PermanenteBono o ingreso fijo aplicado periódicamente
BeneficiarioPersona que recibe un pago de egreso
AseguradoraCompañía de seguros (AXA, GNP, Metlife, etc.)
ProductoTipo de seguro (Vida, Autos, Daños, GMM, etc.)
PensiónPago periódico a agente retirado
RetenciónDescuento fiscal o administrativo aplicado
PeriodoPeriodo de liquidación (Mensual, Quincenal, etc.)

Términos Técnicos

TérminoDefinición
DAOData Access Object - patrón de acceso a datos
POCOPlain Old CLR Object - objeto simple sin dependencias
BLLBusiness Logic Layer - capa de lógica de negocio
DALData Access Layer - capa de acceso a datos
DTOData Transfer Object - objeto para transferencia de datos
ORMObject-Relational Mapping - mapeo objeto-relacional
OWINOpen Web Interface for .NET - middleware pipeline
SSRSSQL Server Reporting Services - servicio de reportes
EPPlusLibrería .NET para manipulación de Excel
SignalRLibrería para comunicación en tiempo real
T4 TemplateText Template Transformation Toolkit - generación de código

11. DIAGRAMAS ADICIONALES

Diagrama de Módulos Funcionales

graph TB
    subgraph "MÓDULO DE AGENTES"
        A1[Gestión Agentes]
        A2[Cédulas]
        A3[Contratos]
        A4[Esquemas]
        A5[Documentos]
    end

    subgraph "MÓDULO DE LIQUIDACIONES"
        L1[Cálculo Comisiones]
        L2[Liquidaciones IP]
        L3[Liquidaciones Autos]
        L4[Liquidaciones Resico]
        L5[Layouts Bancarios]
    end

    subgraph "MÓDULO DE PAGOS"
        P1[Movimientos]
        P2[Dispersión Bancaria]
        P3[Conciliación]
    end

    subgraph "MÓDULO DE INGRESOS/EGRESOS"
        IE1[Ingresos Permanentes]
        IE2[Egresos Permanentes]
        IE3[Beneficiarios]
        IE4[Categorización]
    end

    subgraph "MÓDULO CAM"
        C1[Usuarios]
        C2[Privilegios]
        C3[Aplicaciones]
        C4[Zonas]
    end

    subgraph "MÓDULO DE CATÁLOGOS"
        CAT1[Bancos]
        CAT2[Aseguradoras]
        CAT3[Productos]
        CAT4[Oficinas]
    end

    A1 --> L1
    A3 --> A4
    A4 --> L1
    L1 --> L2
    L1 --> L3
    L1 --> L4
    L2 --> L5
    L3 --> L5
    L4 --> L5
    L5 --> P1
    P1 --> P2
    P2 --> P3

    IE1 --> L1
    IE2 --> L1
    IE3 --> IE2

    C2 --> C1
    C3 --> C2
    C4 --> C3

Diagrama de Integración con Sistemas Externos

graph LR
    subgraph "PEGASUS"
        P[Aplicación Web]
    end

    subgraph "BASES DE DATOS"
        DB1[(PegasusDB)]
        DB2[(Prometeo)]
    end

    subgraph "SERVICIOS EXTERNOS"
        AD[Active Directory]
        SMTP[Mail Server]
        SSRS[Report Server]
        FS[File System]
    end

    subgraph "BANCOS"
        B1[Banamex]
        B2[Banorte]
    end

    subgraph "USUARIOS"
        U1[Agentes]
        U2[Administradores]
        U3[Gerentes]
    end

    P --> DB1
    P --> DB2
    P --> AD
    P --> SMTP
    P --> SSRS
    P --> FS
    P -->|Layouts| B1
    P -->|Layouts| B2

    U1 --> P
    U2 --> P
    U3 --> P

    AD -->|Autenticación| P
    SMTP -->|Notificaciones| U1
    SMTP -->|Notificaciones| U2

12. NOTAS ADICIONALES

Control de Versiones

Estado Actual:

  • Git: Repositorio principal en Azure DevOps

    • URL: https://grupokc-sistemas.visualstudio.com/sistemas_kc/_git/pegasus
    • Rama principal: master
  • Subversion (SVN): Migración en proceso desde SVN

    • Evidencia: <SccProvider>SubversionScc</SccProvider> en .csproj

Último Commit:

e272a4c5 Merge branch 'master' of https://grupokc-sistemas.visualstudio.com/sistemas_kc/_git/pegasus
6c1bed1b cambios locales
65252421 Merged PR 1466: Pestaña de archivos
e907dbc2 Merged PR 1405: Agregar mensual y permanente

Estructura de Tickets

Los scripts SQL están organizados por tickets de desarrollo en la carpeta Sql/:

  • Liquidaciones por Aseguradora (IP, Autos, Resico)
  • Financiamiento
  • Correcciones y Mejoras
  • Triggers y Procedimientos Almacenados

Ambientes

AmbienteBase de DatosServidorEstado
ProducciónPegasusDBsql.prod✅ Activo
DesarrolloN/ALocal⚠️ Sin información
QAN/AN/A⚠️ Sin información

Recomendación: Establecer ambientes de DEV y QA para evitar pruebas en producción.

Tamaño de Archivos

  • maxRequestLength: 10,000,000 bytes (~10 MB)
  • Directorio de archivos: E:\Archivos
  • Layouts bancarios: c:\files\bancos\

Encodings

  • Archivos: ISO-8859-1
  • Requests: ISO-8859-1
  • Responses: ISO-8859-1
  • Cultura: es-MX (Español de México)

Consideraciones de Licenciamiento

⚠️ IMPORTANTE:

  • iTextSharp 5.5.7.0: Licencia AGPL v3 (requiere licencia comercial para uso propietario)

    • Alternativas: iText7 (comercial), QuestPDF (MIT), PdfSharpCore (MIT)
  • Crystal Reports: Licencia comercial de SAP

    • Verificar licencias vigentes

Observaciones de Arquitectura

  1. Hybrid Data Access: La combinación de ADO.NET + Entity Framework es funcional pero inconsistente

    • ADO.NET se usa para queries complejas y rendimiento
    • Entity Framework se usa para CRUD simple
    • Considerar estandarizar en el futuro
  2. SignalR Implementation: Implementación básica pero funcional

    • Hub: Notificaciones.cs
    • Uso principal: Notificaciones en tiempo real
    • Potencial para expandir a chat, actualizaciones live de grids
  3. Multiple Frontend Frameworks: Angular 1.x + ExtJS + jQuery

    • Demuestra evolución del proyecto
    • Genera overhead de mantenimiento
    • Candidato a refactorización futura

13. RECOMENDACIONES FINALES Y ROADMAP

Prioridades Inmediatas (Próximos 30 días)

  1. ✅ Seguridad Crítica

    • Actualizar Newtonsoft.Json
    • Cambiar customErrors a RemoteOnly
    • Encriptar credenciales en Web.config
  2. ✅ Documentación

    • Este documento técnico
    • Documentar APIs con Swagger
    • Crear guía de deploy
  3. ✅ Monitoreo

    • Implementar logging estructurado
    • Configurar alertas de errores
    • Establecer métricas de rendimiento

Roadmap a 6 Meses

gantt
    title Roadmap de Mejora Continua - Pegasus
    dateFormat YYYY-MM

    section Q1 2026
    Actualizar dependencias críticas              :done, q1a, 2026-01, 15d
    Implementar CI/CD                             :active, q1b, 2026-01, 20d
    Logging y monitoreo                           :q1c, 2026-02, 15d
    Unit testing (fase 1)                         :q1d, 2026-02, 30d

    section Q2 2026
    Refactorizar AgentesController                :q2a, 2026-04, 20d
    Mejorar documentación API                     :q2b, 2026-04, 10d
    Implementar feature flags                     :q2c, 2026-05, 10d
    Unit testing (fase 2)                         :q2d, 2026-05, 30d

    section Q3 2026 (Opcional)
    Evaluar migración a .NET 8                    :q3a, 2026-07, 30d
    POC containerización                          :q3b, 2026-08, 20d
    Evaluar frontend moderno                      :q3c, 2026-09, 30d

KPIs Sugeridos

MétricaObjetivoActualGap
Cobertura de Tests>70%~0%-70%
Vulnerabilidades Críticas03-3
Tiempo de Deploy<15 minManual (~1h)-45 min
Uptime>99.5%N/AMedir
Tiempo de Respuesta p95<2sN/AMedir

Documentación generada: 2025-12-13
Analizado por: Claude AI (Sonnet 4.5)
Versión del documento: 1.0
Proyecto: Pegasus - Sistema de Administración de Fuerza de Ventas
Empresa: Grupo KC Agente de Seguros SA de CV

Modificado en 2025-12-13 12:12:20
Anterior
Prometeo
Siguiente
Olympus
Built with