MAPA DE SITIO Y DOCUMENTACIÓN TÉCNICA - PROYECTO OLYMPUS# Versión: 3.0.12Fecha de Generación: 2025-12-13Analizado por: Claude AI (Sonnet 4.5)Empresa: Grupo KC Agente de Seguros, S.A.P.I. de C.V.Descripción y Propósito# Olympus es una aplicación web empresarial integral que gestiona todas las operaciones de seguros para Grupo KC Agente de Seguros. El sistema cubre el ciclo de vida completo desde la captura de solicitudes hasta la emisión de pólizas, incluyendo gestión de agentes, cálculo de comisiones, generación de reportes y administración de catálogos.Datos Técnicos# Atributo Valor Nombre del Proyecto Olympus Versión Actual 3.0.12 Framework .NET Framework 4.5 Lenguaje Visual Basic.NET (VB.NET) Tipo de Aplicación ASP.NET Web Forms (Aplicación Web) Base de Datos SQL Server (olympus_op_pr) Servidor BD sql.prod Última Modificación Agosto 2025 Años de Operación 15+ años
Estado del Framework# Componente Versión Estado Soporte .NET Framework 4.5 ❌ Obsoleto Finalizado en enero 2016 ASP.NET Web Forms 4.5 ⚠️ Legacy Solo en .NET Framework Visual Basic.NET VB 11 ⚠️ Legacy Sin nuevas características
2. MAPA DE SITIO / ESTRUCTURA DEL PROYECTO# 2.1 Árbol Jerárquico Completo# 📁 Olympus/
│
├── 📁 Web/ (Proyecto principal ASP.NET)
│ │
│ ├── 📄 Default.aspx (Página de Login - v3.0.12)
│ ├── 📄 Global.asax (Eventos del ciclo de vida de la aplicación)
│ ├── 📄 Web.config ⚙️ (Configuración principal del sistema)
│ ├── 📄 Web.sitemap (Estructura de navegación - 126 nodos)
│ ├── 📄 StyleSheet.css (Estilos globales)
│ │
│ ├── 📁 admin/ (Administración del Sistema - 8 páginas)
│ │ ├── 📄 AdministrarQueries.aspx
│ │ ├── 📄 GenerarCorte.aspx
│ │ ├── 📄 ListarMetricas.aspx
│ │ ├── 📄 PermisoVentaRetenedor.aspx
│ │ ├── 📄 SelfService.aspx (Actualización de producción)
│ │ └── 📄 ... (3 páginas más)
│ │
│ ├── 📁 agentes/ ⭐ (Gestión de Agentes - 34 páginas)
│ │ ├── 📄 BuscarAgentes.aspx
│ │ ├── 📄 NuevoAgente.aspx
│ │ ├── 📄 CalcularMetas.aspx
│ │ ├── 📄 ListarPremios.aspx
│ │ ├── 📄 ImprimirEtiquetas.aspx
│ │ ├── 📄 RankingAgentes.aspx
│ │ ├── 📄 FinanciamientoEspecial.aspx
│ │ └── 📄 ... (27 páginas más)
│ │
│ ├── 📁 Api/ (Endpoints API - 2 archivos)
│ │ ├── 📄 ListarBonoSemestralProduccionAPI.aspx
│ │ └── 📄 ObtenerIdRetenedor.aspx
│ │
│ ├── 📁 App_Code/ ⚙️ (Código Compartido - 52 archivos VB.NET)
│ │ │
│ │ ├── 📁 Data/ (Capa de Acceso a Datos - 15 DataSets)
│ │ │ ├── 📄 olympus.xsd (DataSet principal)
│ │ │ ├── 📄 Solicitudes.xsd
│ │ │ ├── 📄 Polizas.xsd
│ │ │ ├── 📄 Servicios.xsd
│ │ │ ├── 📄 Agentes.xsd
│ │ │ ├── 📄 Comisiones.xsd
│ │ │ ├── 📄 Catalogos.xsd
│ │ │ ├── 📄 Consultas.xsd
│ │ │ ├── 📄 Relaciones.xsd
│ │ │ ├── 📄 reportes.xsd
│ │ │ ├── 📄 procesos.xsd
│ │ │ ├── 📄 Admin.xsd
│ │ │ ├── 📄 gridViews.xsd
│ │ │ ├── 📄 Callout.xsd
│ │ │ └── 📄 Pruebas.xsd
│ │ │
│ │ └── 📁 UI/Business/ (Capa de Lógica de Negocio - 33 clases)
│ │ ├── 📄 UserData.vb (Gestión de sesión de usuario)
│ │ ├── 📄 CustomMembership.vb (Autenticación personalizada)
│ │ ├── 📄 Solicitud.vb
│ │ ├── 📄 Poliza.vb
│ │ ├── 📄 Agente.vb
│ │ ├── 📄 Comisiones.vb
│ │ ├── 📄 Lote.vb
│ │ ├── 📄 Servicio.vb
│ │ ├── 📄 Devolucion.vb
│ │ ├── 📄 Excel.vb (Exportación a Excel)
│ │ ├── 📄 BarCode.vb (Códigos de barras)
│ │ ├── 📄 Globals.vb
│ │ ├── 📄 Helpers.vb
│ │ ├── 📄 Layout.vb
│ │ ├── 📄 Cotizador.vb
│ │ ├── 📄 Premio.vb
│ │ ├── 📄 Promotoria.vb
│ │ ├── 📄 Retenedor.vb
│ │ ├── 📄 ArchivosDES.vb
│ │ ├── 📄 Cartera.vb
│ │ ├── 📄 Comunicados.vb
│ │ ├── 📄 Concursos.vb
│ │ ├── 📄 Excepcion.vb
│ │ ├── 📄 Motivo.vb
│ │ ├── 📄 PanelControl.vb
│ │ ├── 📄 Parametro.vb
│ │ ├── 📄 Privilegio.vb
│ │ ├── 📄 Query.vb (Reporteador dinámico)
│ │ ├── 📄 Relacion.vb
│ │ ├── 📄 Transactions.vb
│ │ ├── 📄 Usuario.vb
│ │ └── 📁 Exceptions/
│ │ └── 📄 CatalogException.vb
│ │
│ ├── 📁 Bin/ (Ensamblados Compilados - 34+ DLLs)
│ │ ├── 📦 CrystalDecisions.*.dll (13 DLLs - Crystal Reports 13.0.4001)
│ │ ├── 📦 AjaxControlToolkit.dll
│ │ ├── 📦 Newtonsoft.Json.dll
│ │ ├── 📦 OServerLogic.dll (Proyecto externo)
│ │ ├── 📦 Microsoft.Office.Interop.Excel.dll
│ │ ├── 📦 Microsoft.Practices.EnterpriseLibrary.*.dll
│ │ ├── 📦 itextsharp.dll
│ │ ├── 📦 GenCode128.dll
│ │ └── 📦 Brettle.Web.NeatUpload.dll
│ │
│ ├── 📁 Carga/ (Carga de Datos - 2 páginas)
│ │ ├── 📄 Cargar_Polizas.aspx
│ │ └── 📄 Resultado_Polizas.aspx
│ │
│ ├── 📁 catalogos/ (Catálogos Maestros - 33 páginas)
│ │ ├── 📄 ListarMotivos.aspx
│ │ ├── 📄 ListarPlanes.aspx
│ │ ├── 📄 ListarPromotorias.aspx
│ │ ├── 📄 ListarOficinas.aspx
│ │ ├── 📄 ListarRetenedores.aspx
│ │ ├── 📄 ListarSubretenedores.aspx
│ │ ├── 📄 ListarTarifas.aspx
│ │ ├── 📄 ListarProveedores.aspx
│ │ ├── 📄 ListarConceptos.aspx
│ │ ├── 📄 ListarTiposServicio.aspx
│ │ └── 📄 ... (23 páginas más)
│ │
│ ├── 📁 comisiones/ (Sistema de Comisiones - 27 páginas)
│ │ ├── 📄 CalcularComisiones.aspx
│ │ ├── 📄 ListarEsquemas.aspx
│ │ ├── 📄 ListarExcepciones.aspx
│ │ ├── 📄 BonoProductividad.aspx
│ │ ├── 📄 BonoReclutamiento.aspx
│ │ ├── 📄 BonoSemestral.aspx
│ │ ├── 📄 BonoTrimestral.aspx
│ │ ├── 📄 AnexoComisiones.aspx
│ │ ├── 📄 InvasionMercado.aspx
│ │ └── 📄 ... (18 páginas más)
│ │
│ ├── 📁 consultas/ (Consultas y Búsquedas - 22 páginas)
│ │ ├── 📄 BuscarSolicitudes.aspx
│ │ ├── 📄 BuscarPolizas.aspx
│ │ ├── 📄 BuscarLotes.aspx
│ │ ├── 📄 BuscarServicios.aspx
│ │ ├── 📄 ListarQueries.aspx
│ │ ├── 📄 Reporteador.aspx (Reportes dinámicos SQL)
│ │ ├── 📄 GeneraFinanc.aspx
│ │ └── 📄 ... (15 páginas más)
│ │
│ ├── 📁 general/ (Páginas Generales - 8 páginas)
│ │ ├── 📄 Home.aspx (Página principal post-login)
│ │ ├── 📄 MasterPage.master (Plantilla principal del sitio)
│ │ ├── 📄 ListarTrabajos.aspx
│ │ ├── 📄 ChecarTrabajo.aspx
│ │ ├── 📄 Error.aspx
│ │ └── 📄 ... (3 páginas más)
│ │
│ ├── 📁 images/ (Recursos Gráficos)
│ │ ├── 🖼️ GrupoKCLogo300.png
│ │ ├── 🖼️ olympusch.gif
│ │ └── 🖼️ splash.jpg
│ │
│ ├── 📁 relaciones/ (Reportes de Relaciones - 88 archivos .rpt)
│ │ ├── 📄 ImprimirPolizas.rpt
│ │ ├── 📄 ImprimirServicios.rpt
│ │ ├── 📄 CartaOrden.rpt
│ │ ├── 📄 EnvioAseguradora.rpt
│ │ ├── 📄 SIEMI_Metlife.rpt
│ │ ├── 📄 DevolucionKC.rpt
│ │ ├── 📄 DevolucionPCE.rpt
│ │ └── 📄 ... (81 reportes más)
│ │
│ ├── 📁 reportes/ (Generación de Reportes - 10 páginas + 24 .rpt)
│ │ ├── 📄 ListarReportes.aspx
│ │ ├── 📄 ListarReportes2.aspx
│ │ ├── 📄 GenerarReportes.aspx
│ │ ├── 📄 MostrarPDF.aspx
│ │ ├── 📄 AgentesHistorico.rpt
│ │ ├── 📄 ComisionesAnexo.rpt
│ │ └── 📄 ... (18 reportes más)
│ │
│ ├── 📁 scripts/ (JavaScript - 9 archivos)
│ │ ├── 📄 captura.js
│ │ ├── 📄 utils.js
│ │ ├── 📄 jquery.sumoselect.min.js
│ │ ├── 📄 Subretenedores.js
│ │ └── 📄 ... (5 archivos más)
│ │
│ ├── 📁 seguridad/ (Seguridad y Usuarios - 4 páginas)
│ │ ├── 📄 ListarUsuarios.aspx
│ │ ├── 📄 ListarRoles.aspx
│ │ ├── 📄 CapturarUsuario.aspx
│ │ └── 📄 CapturarRol.aspx
│ │
│ ├── 📁 solicitudes/ ⭐⭐⭐ (MÓDULO PRINCIPAL - 59 páginas)
│ │ ├── 📄 CapturarSolicitud.aspx (Captura de nuevos negocios)
│ │ ├── 📄 CapturarDevolucion.aspx
│ │ ├── 📄 CapturarPoliza.aspx
│ │ ├── 📄 CapturarServicio.aspx
│ │ ├── 📄 GenerarLote.aspx
│ │ ├── 📄 GenerarValija.aspx
│ │ ├── 📄 PanelControl.aspx (Dashboard ejecutivo)
│ │ ├── 📄 EnviarServicios.aspx
│ │ ├── 📄 ImprimirPolizas.aspx
│ │ ├── 📄 ProcesarDES.aspx
│ │ ├── 📄 VerSolicitud.aspx
│ │ ├── 📄 VerPoliza.aspx
│ │ └── 📄 ... (47 páginas más)
│ │
│ └── 📁 styles/ (Hojas de Estilo)
│ ├── 📄 StyleGeneral.css
│ └── 📄 sumoselect.css
│
└── 📁 OServerLogic/ (Proyecto VB.NET Externo)
└── 📦 OServerLogic.dll (Lógica de servidor compilada)2.2 Organización de Namespaces# El proyecto utiliza la estructura de namespaces implícita de ASP.NET Web Forms: App_Code (Namespace raíz global)
├── Data
│ ├── olympusDataSet
│ ├── SolicitudesDataSet
│ ├── PolizasDataSet
│ └── ... (12 DataSets más)
│
└── UI.Business
├── UserData
├── CustomMembership
├── Solicitud
├── Poliza
└── ... (29 clases más)2.3 Proyectos en la Solución# La solución olympus.sln contiene: 1.
Web (ASP.NET Website) - Proyecto principal
2.
OServerLogic (VB.NET Class Library) - Lógica de servidor externa
Web (416 páginas ASPX)
└── Referencia → OServerLogic.dll3. INVENTARIO DE LIBRERÍAS Y DEPENDENCIAS# 3.1 NuGet Packages# Librería Versión Actual Propósito Categoría Estado CrystalReports.ReportAppServer 13.0.4001 Motor de reportes Crystal Reports Reportes ⚠️ Antigua log4net 1.2.10 Registro de eventos y errores Logging ❌ Muy desactualizado
3.2 Ensamblados en Bin/# Librería Versión Propósito Categoría Estado CrystalDecisions.*.dll 13.0.4000.0 Suite completa Crystal Reports Reportes ⚠️ Antigua AjaxControlToolkit.dll Desconocida Controles AJAX para Web Forms UI/AJAX ⚠️ Verificar Newtonsoft.Json.dll Desconocida Serialización JSON API/Data ⚠️ Verificar Microsoft.Office.Interop.Excel.dll 14.0 Generación de archivos Excel Reportes ⚠️ Office 2010 Microsoft.Practices.EnterpriseLibrary.*.dll Desconocida Patrones empresariales Microsoft Framework ⚠️ Descontinuada itextsharp.dll Desconocida Generación de PDFs Reportes ⚠️ Verificar GenCode128.dll Desconocida Códigos de barras Code128 Utilidades ✅ OK Brettle.Web.NeatUpload.dll Desconocida Subida de archivos grandes File Upload ⚠️ Verificar OServerLogic.dll Custom Lógica de negocio personalizada Negocio ✅ Custom
3.3 Frontend Libraries# Librería Versión Propósito Estado jQuery 1.9.1 (2013) Manipulación DOM ❌ 11 años desactualizado Tailwind CSS CDN (última) Framework CSS utility-first ✅ Actualizado (solo en Default.aspx) AmCharts Desconocida Gráficos y visualizaciones ⚠️ Verificar SumoSelect Desconocida Select mejorado multi-selección ⚠️ Verificar
3.4 Dependencias del Sistema# Componente Versión Requerida Propósito .NET Framework 4.5+ Runtime del framework IIS 7.0+ Servidor web SQL Server 2008+ Base de datos Windows Server 2008 R2+ Sistema operativo servidor
4. ARQUITECTURA DEL PROYECTO# 4.1 Patrón Arquitectónico# Arquitectura de 3 Capas (Three-Tier Architecture) El proyecto implementa una arquitectura clásica de 3 capas con separación clara de responsabilidades: 1.
Capa de Presentación (Presentation Layer)
2.
Capa de Lógica de Negocio (Business Logic Layer)
3.
Capa de Acceso a Datos (Data Access Layer)
Patrón secundario: Code-Behind Pattern (ASP.NET Web Forms)4.2 Diagrama de Arquitectura#
4.3 Componentes Principales# Capa de Presentación# Páginas ASPX : 416 páginas Web Forms con interfaz de usuario
Code-Behind (.aspx.vb) : 412 archivos con lógica de presentación
Master Pages : MasterPage.master proporciona layout consistente
Controles de Servidor : Uso extensivo de controles ASP.NET (GridView, DetailsView, etc.)
AJAX : AjaxControlToolkit para interactividad sin postback completo
JavaScript/CSS : Scripts personalizados y estilos
Responsabilidad: Renderizado de UI, validación de entrada, interacción con usuarioCapa de Lógica de Negocio# 33 clases VB.NET en App_Code/UI/Business/
Entidades de dominio : Solicitud, Poliza, Agente, Comisiones, etc.
Servicios de negocio : Excel, BarCode, Helpers, Layout
Gestión de sesión : UserData.vb
Autenticación : CustomMembership.vb
OServerLogic.dll : Proyecto externo con lógica adicional
Responsabilidad: Reglas de negocio, validaciones complejas, orquestación de operacionesCapa de Acceso a Datos# 15 Typed DataSets (.xsd) : Generan clases fuertemente tipadas
TableAdapters : Métodos Fill() y GetData() autogenerados
Stored Procedures : Llamadas a SQL Server vía TableAdapters
Connection Pooling : Gestión automática de conexiones ADO.NET
Responsabilidad: CRUD operations, queries a base de datos, mapeo objeto-relacionalBase de Datos# SQL Server en servidor sql.prod
olympus_op_pr : Base de datos de producción
Tablas principales : Solicitudes, Polizas, Agentes, Comisiones, Catálogos
Stored Procedures : Lógica de negocio en BD
Views : Vistas para reportes y consultas
Responsabilidad: Persistencia de datos, integridad referencial, transaccionesServicios Externos# Crystal Reports : Generación de 88 reportes en formato .rpt
Office Interop : Exportación a Excel
iTextSharp : Generación de PDFs
4.4 Flujo de Datos# Secuencia de Operación Típica: Capturar Solicitud#
Flujo de Autenticación#
5. ASPECTOS MÁS RELEVANTES# 5.1 Funcionalidades Principales del Sistema# 1. Gestión de Solicitudes (Módulo Core)# Nuevo : Alta de nueva póliza
Incremento : Aumento de suma asegurada
Inclusión : Agregado de beneficiarios/coberturas
Servicio : Modificaciones a pólizas existentes
Devolución Producción : Devolución de nuevos negocios
Devolución Servicio : Devolución de servicios
Capturada Promotoría → Enviada Oficina → Ingresada KC →
Enviada Proveedor → Recibida Proveedor → En Captura Proveedor →
Pendiente Proveedor → Suscripción Proveedor → EmitidaCapturarSolicitud.aspx: Captura de solicitudes
PanelControl.aspx: Dashboard ejecutivo del estado
GenerarLote.aspx / GenerarValija.aspx: Agrupación de solicitudes
ProcesarDES.aspx: Procesamiento de documentos electrónicos
2. Gestión de Agentes# Alta, baja y modificación de agentes
Asignación a promotorías y niveles
Cálculo de metas (individuales, por promotoría, por retenedor)
Impresión de etiquetas y comunicados
3. Sistema de Comisiones# Comisiones regulares (basadas en esquemas)
Excepciones personalizadas
Esquemas de comisión configurables por plan/promotoria/agente
Cálculo automatizado por periodo
Anexos de comisiones para retenedor
4. Catálogos Maestros# 33 catálogos configurables: Proveedores (aseguradoras)
Retenedores y Subretenedores
5. Reporteador y Consultas# Búsqueda avanzada de solicitudes, pólizas, lotes y servicios
Reporteador dinámico : Queries SQL guardados y parametrizados
Generación de reportes financieros
Exportación : Excel, PDF, Crystal Reports
6. Generación de Reportes# 88 reportes Crystal Reports (.rpt): Relaciones : Impresión de pólizas, servicios, devoluciones
Documentos : Cartas de orden, envíos a aseguradora, acuses
SIEMI : Sistema de emisión Metlife
Análisis : Históricos de agentes, comisiones, bonos
Etiquetas : Impresión de etiquetas para correspondencia
7. Administración del Sistema# Gestión de usuarios y roles
Asignación de privilegios granulares
SelfService: Actualización de producción de agentes
Permisos de venta por retenedor
Administración de queries del reporteador
5.2 Configuraciones Críticas# Connection Strings# <connectionStrings >
<add name ="olympusConnectionString"
connectionString ="Data Source=sql.prod;
Initial Catalog=olympus_op_pr;
Integrated Security=True"
providerName ="System.Data.SqlClient" />
</connectionStrings > ⚠️ Riesgo : Connection string con credenciales en Web.config Configuraciones de Seguridad# <pages validateRequest ="false"
enableEventValidation ="false"
enableViewStateMac ="false"
viewStateEncryptionMode ="Never" /> ⚠️ CRÍTICO : Configuraciones inseguras que exponen el sistema a: XSS (Cross-Site Scripting)
Exposición de datos sensibles en ViewState
Autenticación# <authentication mode ="Forms" >
<forms loginUrl ="default.aspx"
name =".ASPXFORMSAUTH"
enableCrossAppRedirects ="true"
timeout ="525600" />
</authentication >
<membership defaultProvider ="CustomMembership" >
<providers >
<add name ="CustomMembership"
type ="CustomMembership"
requiresUniqueEmail ="true"
passwordFormat ="Clear" />
</providers >
</membership > passwordFormat="Clear": Contraseñas en texto claro
timeout="525600": 1 año de timeout (riesgo de sesiones robadas)
Globalización# <globalization culture ="es-MX" uiCulture ="es-MX" /> ✅ Configurado para México (español) HTTP Runtime# <httpRuntime maxRequestLength ="2097151" executionTimeout ="60000" /> maxRequestLength: ~2GB (para cargas de archivos grandes)
executionTimeout: 60 segundos
Redirección HTTPS# <system.webServer >
<rewrite >
<rule name ="http to https" stopProcessing ="true" >
<action type ="Redirect" url ="https://{HTTP_HOST}/{R:1}" />
</rule >
</rewrite >
</system.webServer > 5.3 Patrones de Diseño Implementados# Separación entre presentación (.aspx) y lógica de UI (.aspx.vb) 2. Master Page Pattern# MasterPage.master proporciona layout consistente con:Menú de navegación basado en Web.sitemap
Header con logo y usuario logueado
SiteMapPath para breadcrumbs
3. Custom Membership Provider Pattern# CustomMembership.vb implementa MembershipProvider abstracto para autenticación personalizada contra SQL Server4. TableAdapter Pattern (Typed DataSets)# 15 archivos .xsd generan: Clases DataTable fuertemente tipadas
TableAdapters con métodos CRUD
Métodos personalizados por query
5. Business Objects Pattern# Clases en App_Code/UI/Business/ encapsulan: Entidades de dominio (Solicitud, Poliza, Agente)
UserData.vb serializa información de sesión en ticket de autenticación en lugar de Session state tradicional7. Repository-like Pattern (TableAdapters)# Aunque no es Repository puro, los TableAdapters actúan como capa de abstracción sobre SQL 5.4 Seguridad# Autenticación# Mecanismo: Forms Authentication con CustomMembership Provider1.
Usuario ingresa credenciales en Default.aspx
2.
CustomMembership.ValidateUser() consulta tabla Usuarios en BD
3.
Comparación de contraseña en texto claro ⚠️
4.
Si es válido, crea FormsAuthenticationTicket con UserData serializado
5.
Cookie .ASPXFORMSAUTH almacena ticket encriptado
Public Class UserData
Public IdUsuario As Integer
Public Privilegios As String
Public Tipo As Integer
Public IdPromotoria As Integer
Public IdOficina As Integer
Public IdRetenedor As Integer
' ... más propiedades
End ClassAutorización# Sistema basado en privilegios: Cada funcionalidad tiene un ID de privilegio
Usuarios tienen string de privilegios: "1,5,12,35,..."
Menú se filtra dinámicamente según privilegios del usuario
Validación en Page_Load de cada página
Vulnerabilidades Identificadas# 1.
Contraseñas en texto claro (passwordFormat="Clear")
2.
validateRequest="false" : Vulnerable a XSS
3.
enableViewStateMac="false" : ViewState puede ser alterado
4.
viewStateEncryptionMode="Never" : ViewState sin encriptar expone datos
5.
Connection strings en Web.config : Credenciales expuestas en código fuente
1.
Session timeout de 1 año : Sesiones robadas son válidas por mucho tiempo
2.
No hay rate limiting : Vulnerable a brute force en login
3.
jQuery 1.9.1 antiguo : Vulnerabilidades conocidas (CVE-2015-9251, CVE-2020-11022)
1.
No hay CORS configurado : Potencial para ataques CSRF
2.
No hay Content Security Policy (CSP)
3.
No hay protección contra clickjacking (X-Frame-Options)
6. ANÁLISIS DE VERSIONES Y COMPATIBILIDAD# 6.1 Framework .NET# Componente Versión Actual Fecha de Lanzamiento Fecha de EOL Estado .NET Framework 4.5 4.5.0 Agosto 2012 Enero 2016 ❌ Fuera de soporte .NET Framework 4.5.1 - Octubre 2013 Enero 2016 ❌ Fuera de soporte .NET Framework 4.5.2 - Mayo 2014 Abril 2022 ❌ Fuera de soporte .NET Framework 4.6 - Julio 2015 Abril 2022 ❌ Fuera de soporte .NET Framework 4.6.2 - Agosto 2016 Enero 2027 ⚠️ Soporte extendido .NET Framework 4.7.2 - Abril 2018 Enero 2027 ⚠️ Soporte extendido .NET Framework 4.8 - Abril 2019 Enero 2027 ✅ Soportado .NET Framework 4.8.1 Recomendado Agosto 2022 2027+ ✅ Última versión
Estado del proyecto: ❌ CRÍTICO - Framework obsoleto desde hace 9 años Recomendación urgente: Migrar a .NET Framework 4.8.1 como mínimo6.2 Compatibilidad C## El proyecto usa Visual Basic.NET versión 11 (VB.NET para .NET 4.5) Característica VB 11 (.NET 4.5) VB 14 (.NET 4.6+) VB 15 (.NET 4.7+) Async/Await ✅ Soportado ✅ Mejorado ✅ Mejorado Iteradores ✅ ✅ ✅ Caller Info Attributes ✅ ✅ ✅ String Interpolation ❌ ✅ ✅ Null-Conditional Operators ❌ ✅ ✅ Tuples ❌ ❌ ✅
Características modernas utilizadas en el proyecto: Ninguna característica moderna identificada
Código utiliza sintaxis VB.NET clásica
Versión Estado Portabilidad .NET Core ASP.NET Web Forms 4.5 ⚠️ Legacy ❌ NO soportado en .NET Core/.NET 5+
Web Forms solo existe en .NET Framework (Windows only)
No puede migrar a .NET Core, .NET 5, .NET 6, .NET 7, .NET 8
Limitado a Windows Server + IIS
No soporta contenedores nativamente (Docker complicado)
Alternativas de Microsoft: 7. RECOMENDACIONES DE ACTUALIZACIÓN# Componente Versión Actual Versión Recomendada Motivo Esfuerzo .NET Framework 4.5 4.8.1 Seguridad / EOL desde 2016 Alto jQuery 1.9.1 (2013) 3.7.1 Vulnerabilidades CVE Bajo log4net 1.2.10 (2011) 2.0.17 Seguridad / 13 años desactualizado Bajo Contraseñas Texto claro Hashing (bcrypt/PBKDF2) Seguridad crítica Medio Web.config Inseguro Habilitar protecciones XSS / Tampering Bajo
1.
.NET Framework 4.5 → 4.8.1 Seguridad: Sin parches desde 2016, vulnerabilidades conocidas sin resolver
Performance: 4.8.1 es ~15-20% más rápido
Compatibilidad: 4.8.1 es backward compatible con 4.5
Esfuerzo: Medio-Alto (requiere testing extenso)
Impacto: Soporte extendido hasta 2027+
2.
Vulnerabilidades: CVE-2015-9251, CVE-2020-11022, CVE-2020-11023
Esfuerzo: Bajo-Medio (posibles breaking changes en sintaxis)
Testing: Validar funcionalidad AJAX y manipulación DOM
3.
Seguridad: Versión antigua con potenciales vulnerabilidades
Compatibilidad: API compatible, mínimos cambios
4.
Implementar hashing de contraseñas ' Actual (INSEGURO):
If password = dbPassword Then ' Comparación texto claro
' Recomendado:
If BCrypt.Verify(password, dbPasswordHash) ThenEsfuerzo: Medio (requiere migración de contraseñas existentes)
1.
Agregar columna PasswordHash a tabla Usuarios
3.
Migrar contraseñas existentes (script one-time)
4.
Actualizar CustomMembership.ValidateUser()
5.
Web.config - Habilitar protecciones
<pages validateRequest ="false" enableViewStateMac ="false" viewStateEncryptionMode ="Never" />
<pages validateRequest ="true" enableViewStateMac ="true" viewStateEncryptionMode ="Always" /> Impacto: Puede romper páginas que usan HTML en TextBox
Testing: Validar todas las páginas con entrada de usuario
Componente Versión Actual Versión Recomendada Beneficio Esfuerzo Crystal Reports 13.0.4001 CR for VS 2022 Soporte moderno Alto Newtonsoft.Json Desconocida 13.0.3 Performance y seguridad Bajo AjaxControlToolkit Desconocida 20.1.0 Compatibilidad .NET 4.8 Medio Connection Strings Hardcoded Azure Key Vault / Encrypted Seguridad Medio
7.3 Prioridad Baja 🟢 (Opcional - 6-12 meses)# Componente Versión Actual Versión Recomendada Beneficio Esfuerzo Office Interop 14.0 (2010) NPOI / EPPlus Sin dependencia de Office Alto iTextSharp Antigua iText 7 Licenciamiento moderno Medio Typed DataSets .xsd Entity Framework 6 ORM moderno, testing Muy Alto
7.4 Roadmap de Actualización Recomendado#
7.5 Estimación de Costos# Fase Duración Esfuerzo (personas) Costo Estimado (USD) Fase 1: Crítico 4 meses 2-3 desarrolladores 90,000 Fase 2: Importante 5 meses 2 desarrolladores 70,000 Fase 3: Mejoras 4 meses 2-3 desarrolladores 60,000 Fase 4: Evaluación 4 meses 1-2 arquitectos 50,000 TOTAL 17 meses - 270,000
Nota: Costos basados en desarrolladores mid-senior en México ($15-20/hora) 8. MÉTRICAS DEL PROYECTO# 8.1 Distribución por Tipo de Archivo#
8.2 Distribución por Módulo Funcional# Módulo Páginas (.aspx) Porcentaje Complejidad solicitudes 59 28% Muy Alta agentes 34 16% Alta catalogos 33 16% Media comisiones 27 13% Muy Alta consultas 22 10% Media reportes 10 5% Media admin 8 4% Media general 8 4% Baja seguridad 4 2% Alta otros 4 2% Baja TOTAL 209 100% -
8.3 Complejidad Técnica# Líneas de código estimadas: Categoría Archivos LOC Estimadas Promedio por Archivo Code-Behind (.aspx.vb) 412 ~165,000 ~400 LOC Business Classes (.vb) 52 ~26,000 ~500 LOC JavaScript 906 ~45,000 ~50 LOC TOTAL 1,370 ~236,000 -
Complejidad Ciclomática: Alta (estimada >50 por archivo en módulos complejos)8.4 Deuda Técnica#
Principales contribuyentes: 1.
Framework obsoleto (.NET 4.5)
2.
Vulnerabilidades de seguridad
3.
Librerías desactualizadas
5.
Falta de tests automatizados
9. DEUDA TÉCNICA IDENTIFICADA# 9.1 Issues Críticos 🔴# Configuraciones inseguras en Web.config validateRequest="false" → XSS
enableViewStateMac="false" → Tampering
viewStateEncryptionMode="Never" → Exposición de datos
Acción: Habilitar protecciones
9.2 Issues Altos 🟠# ASP.NET Web Forms (tecnología legacy) No portable a .NET Core/.NET 8
Acción: Evaluar migración a ASP.NET Core (largo plazo)
Prioridad: MEDIA (planificar)
Lenguaje en decline, difícil reclutar desarrolladores
Acción: Considerar migración a C# (largo plazo)
Prioridad: BAJA (planificar)
9.3 Issues Medios 🟡# 9.4 Mejoras Recomendadas 🟢# 10. GLOSARIO TÉCNICO# Términos de Dominio# Término Descripción Agente Vendedor de seguros individual Asegurado Persona que contrata el seguro (cliente final) DES Documento Electrónico de Seguros (formato digital de póliza) Devolución Cancelación de solicitud o servicio que regresa a etapa anterior Incremento Aumento de suma asegurada en póliza existente Inclusión Agregado de beneficiarios o coberturas adicionales a póliza existente Lote Agrupación lógica de solicitudes para envío a proveedor PCE Proveedor de Captura Externa (aseguradora que captura sus propias pólizas) Plan Tipo de producto de seguro (ej: Vida Universal, Temporal, GMM) Póliza Contrato de seguro emitido por el proveedor Prima Monto que paga el asegurado (mensual/anual) Prima Excedente Prima adicional sobre la base del plan Promotoría Agrupación de agentes bajo un líder (Promotor) Proveedor Aseguradora (ej: Metlife, AXA, GNP) Retenedor Entidad que retiene parte de las comisiones (nivel superior a promotoría) Servicio Modificación a póliza existente (cambio de beneficiario, domicilio, etc.) SIEMI Sistema de Emisión de Metlife (formato específico de documentos) Solicitud Petición de nuevo seguro o modificación Subretenedor Subnivel dentro de un retenedor Suma Asegurada Monto que pagará la aseguradora en caso de siniestro Valija Agrupación física de documentos impresos para envío
Términos Técnicos# Término Descripción ASPX Active Server Pages Extended (Web Forms) Code-Behind Archivo .aspx.vb con lógica de presentación Crystal Reports Motor de generación de reportes empresariales FormsAuthentication Sistema de autenticación basado en cookies de ASP.NET Master Page Plantilla de layout compartida en Web Forms TableAdapter Componente de Typed DataSet que encapsula comandos SQL Typed DataSet DataSet fuertemente tipado generado desde .xsd ViewState Mecanismo de Web Forms para mantener estado entre postbacks
11. ARQUITECTURA DE BASE DE DATOS# 11.1 Conexión# Base de Datos: olympus_op_pr
Provider: System.Data.SqlClient
Autenticación: Integrated Security (Windows Authentication)
11.2 Tablas Principales (inferidas desde DataSets)# Módulo de Solicitudes# Solicitudes - Solicitudes de seguros
Polizas - Pólizas emitidas
Servicios - Servicios a pólizas existentes
Devoluciones - Devoluciones de solicitudes/servicios
Lotes - Lotes de solicitudes
Valigas - Valijas físicas
Módulo de Agentes# Agentes - Información de agentes
Metas - Metas de producción
Premios - Premios y reconocimientos
Rankings - Rankings de producción
Módulo de Comisiones# Comisiones - Comisiones calculadas
EsquemasComision - Esquemas de comisión configurables
Excepciones - Excepciones a esquemas
Bonos - Bonos (productividad, reclutamiento, etc.)
Catálogos# Retenedor / Subretenedor - Retenedores
Motivo - Motivos de devolución
TipoServicio - Tipos de servicio
Concepto - Conceptos de descuento
Seguridad# Usuarios - Usuarios del sistema
Roles - Roles de usuarios
Privilegios - Privilegios granulares
12. FLUJOS DE NEGOCIO CRÍTICOS# 12.1 Flujo de Solicitud de Nuevo Negocio#
12.2 Flujo de Cálculo de Comisiones#
13. INTEGR ACIONES EXTERNAS# 13.1 Integraciones Identificadas# 1. Proveedores de Seguros (Aseguradoras)# Formato DES (Documento Electrónico de Seguros): Recepción de archivos DES de pólizas emitidas
Procesamiento mediante ProcesarDES.aspx
Conversión de solicitud a póliza
Sistema de Emisión de Metlife
Reportes en formato específico de Metlife
Archivo: relaciones/SIEMI_Metlife.rpt
2. Microsoft Office# Exportación de reportes a Excel
Microsoft.Office.Interop.Excel.dll
Clase Excel.vb para generación
Limitación: Requiere Office instalado en servidor3. Crystal Reports# Runtime de Crystal Reports 13.0.4001
4. Base de Datos SQL Server# Stored Procedures para lógica de negocio
14. ESTRATEGIA DE TESTING# 14.1 Estado Actual# ❌ No se identificaron pruebas automatizadas en el proyecto Alta probabilidad de regresiones
Dificultad para refactorizar con confianza
14.2 Recomendaciones# Fase 1: Unit Tests (Business Layer)# Prioridad: AltaHerramienta: MSTest o NUnitClases a testear primero: 1.
Comisiones.vb - Cálculos críticos
2.
Solicitud.vb - Validaciones de negocio
3.
Poliza.vb - Lógica de conversión
4.
UserData.vb - Serialización/deserialización
<TestClass()>
Public Class ComisionesTests
<TestMethod()>
Public Sub CalcularComision_ConEsquemaBasico_RetornaMontoCorreto()
' Arrange
Dim esquema As New EsquemaComision With {.Porcentaje = 10}
Dim prima As Decimal = 1000
' Act
Dim resultado = Comisiones.Calcular(esquema, prima)
' Assert
Assert.AreEqual(100D, resultado)
End Sub
End ClassFase 2: Integration Tests (Data Layer)# Prioridad: MediaHerramienta: MSTest con base de datos de pruebaFase 3: UI Tests (Presentation)# Prioridad: BajaHerramienta: Selenium WebDriverPáginas críticas a testear: 14.3 Cobertura Objetivo# Fase Cobertura Objetivo Plazo Fase 1 50% Business Layer 3 meses Fase 2 30% Data Layer 6 meses Fase 3 20% UI crítica 9 meses
15. DEPLOYMENT Y DEVOPS# 15.1 Estado Actual# Información limitada disponible , pero se infiere:Servidor: Windows Server con IIS
Base de datos: SQL Server en sql.prod
Deployment: Manual (probablemente FTP o copia de archivos)
15.2 Recomendaciones# CI/CD Pipeline# Herramienta recomendada: Azure DevOps PipelinesGit Push → Build → Unit Tests → Deploy a Staging →
Smoke Tests → Aprobación Manual → Deploy a ProducciónConfiguración Azure DevOps Pipeline (azure-pipelines.yml): Ambientes# Versionamiento# Estrategia recomendada: Semantic Versioning (SemVer)Formato: MAJOR.MINOR.PATCH MAJOR: Cambios incompatibles
MINOR: Nuevas funcionalidades compatibles
Ejemplo: 3.0.12 → 3.1.0 (nueva funcionalidad) → 4.0.0 (migración .NET 4.8.1) 16. PUNTOS FUERTES DEL PROYECTO# A pesar de la deuda técnica, el proyecto tiene fortalezas importantes: ✅ Sistema Funcional y Probado# 15+ años de operación continua sin interrupciones mayores
Cubre todas las necesidades del negocio de seguros
Usuarios satisfechos (inferido por longevidad del sistema)
✅ Arquitectura Clara# Separación en 3 capas bien definida
Organización modular por funcionalidad
Nomenclatura consistente de archivos y carpetas
✅ Cobertura Funcional Completa# 416 páginas cubren todo el ciclo de vida del negocio
88 reportes Crystal Reports para todas las necesidades
Sistema de reporteador dinámico (queries guardados)
15 DataSets proporcionan acceso estructurado a datos
✅ Seguridad Implementada# Sistema de autenticación y autorización basado en roles
Privilegios granulares por funcionalidad
HTTPS forzado mediante redirección
Aunque requiere mejoras, la estructura de seguridad existe
✅ Trazabilidad Completa# Estados detallados de solicitudes/pólizas
Auditoría del flujo completo
Panel de control ejecutivo (PanelControl.aspx)
✅ Flexibilidad de Configuración# 33 catálogos configurables
Esquemas de comisión personalizables
Reporteador con queries SQL guardados
Excepciones configurables por agente/plan
17. RIESGOS DEL PROYECTO# 🔴 Riesgos Críticos# 1.
Riesgo: Vulnerabilidades de seguridad sin parchear
Mitigación: Actualizar a .NET 4.8.1 INMEDIATAMENTE
2.
Contraseñas en texto claro Riesgo: Exposición total si BD es comprometida
Mitigación: Implementar bcrypt URGENTE
3.
Dependencia de un solo lenguaje/tecnología Riesgo: Dificultad para encontrar desarrolladores VB.NET
Mitigación: Documentar y considerar migración a C# a largo plazo
🟠 Riesgos Altos# 1.
Tecnología legacy (Web Forms) Riesgo: No puede migrar a .NET Core (cloud-native)
Mitigación: Evaluar migración a ASP.NET Core en 2-3 años
2.
Ausencia de tests automatizados Riesgo: Regresiones en cada cambio
Mitigación: Implementar tests gradualmente
3.
Riesgo: Dependencia de desarrolladores clave
Mitigación: Documentación exhaustiva y pair programming
🟡 Riesgos Medios# 1.
Librerías desactualizadas Riesgo: Vulnerabilidades conocidas
Mitigación: Plan de actualización gradual
2.
Riesgo: Dificultad para escalar horizontalmente
Mitigación: Optimización de BD y caching
18. CONCLUSIONES Y PRÓXIMOS PASOS# Resumen Ejecutivo# Olympus es un sistema robusto y completo que ha servido eficientemente durante 15+ años. Sin embargo, está construido sobre tecnología obsoleta y riesgosa que requiere atención URGENTE.Decisión Estratégica Recomendada# ACTUALIZACIÓN INCREMENTAL con evaluación de migración futura:[2025 Q1-Q2] Estabilización Crítica
↓
[2025 Q3-Q4] Modernización Parcial
↓
[2026 Q1-Q2] Evaluación Migración .NET Core
↓
[2026-2027] Decisión: Mantener o Migrar1.
✅ Auditoría de seguridad completa con OWASP ZAP
2.
✅ Backup completo de código y BD
3.
✅ Actualizar Web.config (habilitar protecciones)
4.
✅ Planificar migración a .NET 4.8.1
5.
✅ Establecer ambiente de staging
Acciones a 3 meses# 1.
✅ Migrar a .NET Framework 4.8.1
2.
✅ Actualizar jQuery, log4net
3.
✅ Implementar hashing de contraseñas
4.
✅ Testing extenso de regresión
Acciones a 6-12 meses# 1.
✅ Refactorizar código duplicado
2.
✅ Implementar Unit Tests (50% cobertura)
3.
✅ Documentación técnica completa
5.
✅ Evaluar migración a ASP.NET Core
Métricas de Éxito# Métrica Baseline Actual Objetivo 6 meses Objetivo 12 meses Framework Version .NET 4.5 ❌ .NET 4.8.1 ✅ .NET 4.8.1 ✅ Vulnerabilidades Críticas 5+ ❌ 0 ✅ 0 ✅ Cobertura de Tests 0% ❌ 30% ⚠️ 50% ✅ Librerías Actualizadas 20% ❌ 80% ✅ 100% ✅ Deployment Time Manual ❌ Automatizado ✅ Automatizado ✅
NOTAS ADICIONALES# Consideraciones de Licenciamiento# Crystal Reports: Verificar licencias actuales y costo de actualización
Microsoft Office Interop: Considerar alternativas sin licencia (NPOI, EPPlus)
.NET Framework: Gratuito, incluido en Windows Server
Para preguntas sobre esta documentación o el proyecto: Versión documentada: 3.0.12
Referencias# Documentación generada: 2025-12-13Generada por: Claude AI (Sonnet 4.5)Versión del documento: 1.0Proyecto: Olympus v3.0.12Empresa: Grupo KC Agente de Seguros, S.A.P.I. de C.V.ANEXO A: Archivos Clave del Proyecto# Rutas Absolutas de Archivos Principales# 📍 CONFIGURACIÓN
G:\Prod\Olympus\Web\Web.config
G:\Prod\Olympus\Web\Web.sitemap
G:\Prod\Olympus\Web\Global.asax
G:\Prod\Olympus\olympus.sln
📍 LOGIN Y HOME
G:\Prod\Olympus\Web\Default.aspx
G:\Prod\Olympus\Web\general\Home.aspx
G:\Prod\Olympus\Web\general\MasterPage.master
📍 CLASES DE NEGOCIO CRÍTICAS
G:\Prod\Olympus\Web\App_Code\UI\Business\UserData.vb
G:\Prod\Olympus\Web\App_Code\UI\Business\CustomMembership.vb
G:\Prod\Olympus\Web\App_Code\UI\Business\Solicitud.vb
G:\Prod\Olympus\Web\App_Code\UI\Business\Poliza.vb
G:\Prod\Olympus\Web\App_Code\UI\Business\Comisiones.vb
📍 DATASETS PRINCIPALES
G:\Prod\Olympus\Web\App_Code\Data\olympus.xsd
G:\Prod\Olympus\Web\App_Code\Data\Solicitudes.xsd
G:\Prod\Olympus\Web\App_Code\Data\Polizas.xsd
G:\Prod\Olympus\Web\App_Code\Data\Comisiones.xsd
📍 PÁGINAS CRÍTICAS
G:\Prod\Olympus\Web\solicitudes\CapturarSolicitud.aspx
G:\Prod\Olympus\Web\solicitudes\PanelControl.aspx
G:\Prod\Olympus\Web\comisiones\CalcularComisiones.aspx
G:\Prod\Olympus\Web\agentes\BuscarAgentes.aspxANEXO B: Comandos Útiles# Git# Build# IIS#
Get-Website
Restart-WebAppPool -Name "Olympus"
Get-EventLog -LogName Application -Source "ASP.NET*" -Newest 50 Modificado en 2025-12-13 12:21:50