📁 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
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
{F963A793-D6D8-4A6E-8D47-4D194F6CA42C}) - ASP.NET Web Application{00779F07-9C49-4540-9469-DD94BDB37D74}) - Class Library{A5D90FE3-DFA2-47CB-B868-1C657B2DD3EC}) - Class Library{0665DD16-BC18-4F48-AD21-FD049267E059}) - Class Library{857B5D91-C628-4EE4-96C0-172CAF3DD859}) - Class Library{4D057E84-4194-41E0-9FA4-F9A51FFAEF52}) - Class Library| Librería | Versión Actual | Propósito | Categoría |
|---|---|---|---|
| EntityFramework | 6.4.4 | ORM para acceso a datos (uso parcial) | ORM |
| Microsoft.AspNet.Mvc | 5.2.7 | Framework MVC para aplicaciones web | Framework Web |
| Microsoft.AspNet.WebApi | 5.2.3 | Framework para crear APIs RESTful | API |
| Microsoft.AspNet.WebApi.WebHost | 5.2.3 | Hospedaje de Web API en IIS | API |
| Microsoft.AspNet.WebApi.SelfHost | 5.2.9 | Hospedaje auto-contenido de Web API | API |
| Microsoft.AspNet.SignalR.Core | 2.2.0 | Comunicación en tiempo real (WebSockets) | Tiempo Real |
| Microsoft.AspNet.SignalR.SystemWeb | 2.2.0 | SignalR para System.Web | Tiempo Real |
| Microsoft.AspNet.Razor | 3.2.7-3.2.9 | Motor de vistas Razor | UI |
| Microsoft.AspNet.WebPages | 3.2.7-3.2.9 | Páginas web ASP.NET | UI |
| Microsoft.AspNet.Web.Optimization | 1.1.3 | Bundling y minificación de archivos estáticos | Optimización |
| Microsoft.Owin | 2.1.0 | Pipeline OWIN para middleware | Middleware |
| Microsoft.Owin.Host.SystemWeb | 2.1.0 | Hospedaje OWIN en IIS | Middleware |
| Microsoft.Owin.Security | 2.1.0 | Seguridad y autenticación OWIN | Seguridad |
| Newtonsoft.Json | 5.0.4-6.0.4 | Serialización/deserialización JSON | Serialización |
| Owin | 1.0 | Especificación OWIN | Middleware |
| Antlr | 3.5.0.2 | Parser para optimización CSS | Optimización |
| WebGrease | 1.5.2 | Optimización de recursos web | Optimización |
| System.Net.Http | 2.0.20126.16343 | Cliente HTTP | HTTP |
| Microsoft.Web.Infrastructure | 1.0.0.0 | Infraestructura web compartida | Framework Web |
| Librería | Versión | Propósito | Categoría |
|---|---|---|---|
| EPPlus | N/A | Procesamiento de archivos Excel (XLSX) | Office |
| itextsharp | 5.5.7.0 | Generación y manipulación de PDFs | |
| itextsharp.xmlworker | 5.5.7.0 | Conversión HTML a PDF | |
| DotNetZip | 1.13.8.0 | Compresión y descompresión ZIP | Compresión |
| DocX | 1.0.0.22 | Manipulación de documentos Word (DOCX) | Office |
| IronPdf | N/A | Generación avanzada de PDFs | |
| BarcodeLib | N/A | Generación de códigos de barras | Códigos de Barras |
| MvcReportViewer | 0.8.3 | Visor de reportes SSRS en MVC | Reportes |
| Microsoft.ReportViewer.WebForms | 10.0.0.0 | Report Viewer de Microsoft | Reportes |
| Tecnología | Versión/Tipo | Propósito |
|---|---|---|
| Bootstrap | 3.x | Framework CSS responsive |
| jQuery | 2.x/3.x | Manipulación DOM y AJAX |
| Angular | 1.x | Framework SPA (Single Page Application) |
| ExtJS | N/A | Framework UI empresarial rico |
| nf.flat | Custom | Framework NetFactory personalizado |
Arquitectura N-Capas (3-Tier Architecture) con separación clara de responsabilidades:
Patrones Complementarios:
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
Controladores MVC: 124 controladores organizados por módulos funcionales
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:
Validadores Excel (14 clases): Validación de importaciones masivas
File Uploaders (14 clases): Procesamiento de archivos cargados
Layouts Bancarios: Generación de archivos para bancos
Generadores de Códigos de Barras: Barcodes.cs
Clases Abstractas: NegocioResultado, ValidadorExcel, FileUploaderRules
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
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
Gestión de Agentes de Seguros
Sistema de Liquidaciones
Gestión de Ingresos y Egresos
Sistema de Pagos
Importación Masiva de Datos
Gestión Documental
Control de Acceso de Módulos (CAM)
Reportes y Exportaciones
Notificaciones en Tiempo Real
Catálogos Maestros
<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>
<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>
<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>
App_Data\Log\Pegasus.Datos.ConexionDBpublic 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;
}
}
}
{Entidad}DAO.csPegasus.Negocio.Abstract.ValidadorExcelActive Directory Integration: Autenticación corporativa vía LDAP
Seguridad\DirectorioActivo\DA_Configuracion.cs, DA_Conector.csOWIN Authentication: Middleware de autenticación
Startup.csCAM (Control de Acceso de Módulos): Sistema de permisos granular
Roles: Sistema de roles implementado en base de datos
Claims: Información adicional del usuario autenticado
HTTPS Forzado
Anti-Forgery Tokens
AntiForgeryConfig.SuppressXFrameOptionsHeader = true en Global.asaxValidación de Entrada
ClientValidationEnabled = trueUnobtrusiveJavaScriptEnabled = trueEncriptación
Comun.Utilerias.Encripcion.csProtección de Inyección SQL
SqlParameter en todas las queriesLimitación de Tamaño de Request
maxRequestLength="10000000" (~10 MB)Globalización Segura
iso-8859-1 consistentees-MX para manejo correcto de fechas y númerosGestión de Errores
customErrors mode="Off" (debería ser "RemoteOnly" en producción)⚠️ ALTA PRIORIDAD:
Características de .NET 4.8:
Características C# 8-12 NO disponibles:
| Librería | Versión Actual | Versión Recomendada | Motivo | Esfuerzo |
|---|---|---|---|---|
| Newtonsoft.Json | 5.0.4 / 6.0.4 | 13.0.3 | Vulnerabilidades de seguridad críticas (CVE-2024-21907, CVE-2018-0202) | Bajo |
| Microsoft.AspNet.SignalR | 2.2.0 | 2.4.3 | Correcciones de seguridad y estabilidad | Medio |
| EntityFramework | 6.4.4 | 6.4.4 | ✅ Ya actualizado | N/A |
| Web.config | N/A | N/A | Cambiar customErrors mode="Off" a "RemoteOnly" | Bajo |
| itextsharp | 5.5.7.0 | iText7 (8.x) o alternativa libre | Licencia comercial requerida para producción desde v5.5.10 | Alto |
| Librería | Versión Actual | Versión Recomendada | Beneficio | Esfuerzo |
|---|---|---|---|---|
| Microsoft.AspNet.Mvc | 5.2.7 | 5.3.0 | Última versión de MVC 5 | Bajo |
| Microsoft.Owin | 2.1.0 | 4.2.2 | Mejoras de rendimiento y seguridad | Medio |
| Bootstrap | 3.x | 5.x | UI moderna, mejor accesibilidad | Alto |
| jQuery | 2.x/3.x | 3.7.x | Correcciones de seguridad | Bajo |
| Angular | 1.x | Angular 17+ (o React/Vue) | Framework moderno, mejor rendimiento | Muy Alto |
| Librería | Versión Actual | Versión Recomendada | Beneficio | Esfuerzo |
|---|---|---|---|---|
| Visual Studio | 2015 | 2022 | Mejor experiencia de desarrollo, C# 12 | Bajo |
| ExtJS | N/A (legacy) | Mantener o migrar a framework moderno | Depende de uso | Variable |
| Report Viewer | 10.0 | 15.0 | Mejoras visuales y compatibilidad | Medio |
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
Escenarios de Migración:
Pros:
Contras:
Pros:
Contras:
Recomendación Final:
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
pie title "Estado de Actualización de Dependencias"
"Actualizadas (Última versión)" : 35
"Desactualizadas menores (1-2 versiones)" : 40
"Requieren actualización urgente" : 25
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
| Proyecto | Archivos | LOC Estimadas | Complejidad |
|---|---|---|---|
| Pegasus.Web | ~400 | ~45,000 | Alta |
| Pegasus.Negocio | ~45 | ~8,000 | Media |
| Pegasus.Datos | ~104 | ~22,000 | Media-Alta |
| Pegasus.Interfaces | ~120 | ~15,000 | Baja |
| Comun.Utilerias | ~10 | ~2,000 | Baja |
| Seguridad | ~8 | ~1,500 | Media |
| TOTAL | ~687 | ~93,500 | Media-Alta |
| Controlador | Líneas de Código | Complejidad |
|---|---|---|
| AgentesController.cs | 3,783 | Muy 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 |
Vulnerabilidades de seguridad en Newtonsoft.Json 5.0.4
customErrors mode="Off" en producción
Credenciales en texto plano en Web.config
AgentesController.cs con 3,783 líneas
Uso híbrido de ADO.NET y Entity Framework
Implementar Unit Testing
Implementar CI/CD Pipeline
Logging Estructurado
Documentación de APIs
Refactorización de Frontend
Containerización
Implementar Feature Flags
| Término | Definición |
|---|---|
| Agente | Agente de seguros autorizado para vender pólizas |
| Cédula | Cédula profesional requerida para ejercer como agente |
| Promotoria | Agrupación jerárquica de agentes de seguros |
| Esquema | Esquema de comisiones aplicable a un agente |
| Liquidación | Proceso de cálculo y pago de comisiones |
| CAM | Control de Acceso de Módulos - sistema de permisos |
| Layout Bancario | Archivo con formato específico para dispersión bancaria |
| Egreso Permanente | Descuento fijo aplicado periódicamente a un agente |
| Ingreso Permanente | Bono o ingreso fijo aplicado periódicamente |
| Beneficiario | Persona que recibe un pago de egreso |
| Aseguradora | Compañía de seguros (AXA, GNP, Metlife, etc.) |
| Producto | Tipo de seguro (Vida, Autos, Daños, GMM, etc.) |
| Pensión | Pago periódico a agente retirado |
| Retención | Descuento fiscal o administrativo aplicado |
| Periodo | Periodo de liquidación (Mensual, Quincenal, etc.) |
| Término | Definición |
|---|---|
| DAO | Data Access Object - patrón de acceso a datos |
| POCO | Plain Old CLR Object - objeto simple sin dependencias |
| BLL | Business Logic Layer - capa de lógica de negocio |
| DAL | Data Access Layer - capa de acceso a datos |
| DTO | Data Transfer Object - objeto para transferencia de datos |
| ORM | Object-Relational Mapping - mapeo objeto-relacional |
| OWIN | Open Web Interface for .NET - middleware pipeline |
| SSRS | SQL Server Reporting Services - servicio de reportes |
| EPPlus | Librería .NET para manipulación de Excel |
| SignalR | Librería para comunicación en tiempo real |
| T4 Template | Text Template Transformation Toolkit - generación de código |
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
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
Estado Actual:
Git: Repositorio principal en Azure DevOps
https://grupokc-sistemas.visualstudio.com/sistemas_kc/_git/pegasusmasterSubversion (SVN): Migración en proceso desde SVN
<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
Los scripts SQL están organizados por tickets de desarrollo en la carpeta Sql/:
| Ambiente | Base de Datos | Servidor | Estado |
|---|---|---|---|
| Producción | PegasusDB | sql.prod | ✅ Activo |
| Desarrollo | N/A | Local | ⚠️ Sin información |
| QA | N/A | N/A | ⚠️ Sin información |
Recomendación: Establecer ambientes de DEV y QA para evitar pruebas en producción.
⚠️ IMPORTANTE:
iTextSharp 5.5.7.0: Licencia AGPL v3 (requiere licencia comercial para uso propietario)
Crystal Reports: Licencia comercial de SAP
Hybrid Data Access: La combinación de ADO.NET + Entity Framework es funcional pero inconsistente
SignalR Implementation: Implementación básica pero funcional
Notificaciones.csMultiple Frontend Frameworks: Angular 1.x + ExtJS + jQuery
✅ Seguridad Crítica
✅ Documentación
✅ Monitoreo
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
| Métrica | Objetivo | Actual | Gap |
|---|---|---|---|
| Cobertura de Tests | >70% | ~0% | -70% |
| Vulnerabilidades Críticas | 0 | 3 | -3 |
| Tiempo de Deploy | <15 min | Manual (~1h) | -45 min |
| Uptime | >99.5% | N/A | Medir |
| Tiempo de Respuesta p95 | <2s | N/A | Medir |
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