DOCUMENTACIÓN DEL PROYECTO ANDROMEDA#
Nombre del proyecto: Andromeda - Sistema de Gestión de Cobranza de Seguros
Descripción y propósito: Sistema web empresarial para la gestión integral de cobranza de seguros, administración de pólizas, retenedores, pagos, envíos y seguimiento de operaciones de seguros de vida.
Versión del framework .NET utilizado: .NET Framework 4.6
Tipo de aplicación: Aplicación Web ASP.NET WebForms
Fecha de última modificación del proyecto: Diciembre 2024
Base de datos: SQL Server (AndromedaDB + olympus_op_pr)
2. MAPA DE SITIO / ESTRUCTURA DEL PROYECTO#
2.1 Estructura de la Solución#
📁 Andromeda/
├── 📁 Web/ (Proyecto Web Principal - ASP.NET WebForms)
│ ├── 📁 admin/
│ │ └── 📄 Consultar_Log.aspx (Consultar logs del sistema)
│ ├── 📁 App_Code/
│ │ ├── 📁 Business/ (Capa de Lógica de Negocio)
│ │ │ ├── 📄 Persistencia.vb (Acceso a datos - ADO.NET)
│ │ │ ├── 📄 Envio.vb (Lógica de envíos)
│ │ │ ├── 📄 Pago.vb (Lógica de pagos)
│ │ │ ├── 📄 Empleado.vb (Gestión de empleados)
│ │ │ ├── 📄 Retenedor.vb (Gestión de retenedores)
│ │ │ ├── 📄 Usuario.vb (Gestión de usuarios)
│ │ │ ├── 📄 CustomMembership.vb (Autenticación personalizada)
│ │ │ ├── 📄 Inclusion.vb (Inclusiones de pólizas)
│ │ │ ├── 📄 Rechazo.vb (Rechazos de pólizas)
│ │ │ ├── 📄 C40.vb (Circular 40)
│ │ │ ├── 📄 Validacion.vb (Validaciones de negocio)
│ │ │ ├── 📄 Helpers.vb (Funciones auxiliares)
│ │ │ ├── 📄 Exportar.vb (Exportación de datos)
│ │ │ ├── 📄 Convertir.vb (Conversiones de formatos)
│ │ │ ├── 📄 CambiarFormato.vb (Cambio de formatos)
│ │ │ ├── 📄 Dividir.vb (División de archivos)
│ │ │ ├── 📄 Archivos.vb (Gestión de archivos)
│ │ │ ├── 📄 Lista.vb (Listas genéricas)
│ │ │ ├── 📄 Privilegio.vb (Control de acceso)
│ │ │ ├── 📄 Agente.vb (Gestión de agentes)
│ │ │ ├── 📄 UserData.vb (Datos de sesión)
│ │ │ ├── 📄 Escribir.vb (Escritura de archivos)
│ │ │ ├── 📄 Escritura.vb (Generación de archivos)
│ │ │ ├── 📄 Carga.vb (Carga masiva)
│ │ │ ├── 📄 Conversiones.vb (Conversión de datos)
│ │ │ └── 📄 layouts.vb (Layouts de archivos)
│ │ ├── 📁 Model/ (Modelos de datos)
│ │ │ ├── 📄 mo_persistencia.vb (Persistencia de datos)
│ │ │ ├── 📄 mo_persistencia_olympus.vb (Integración Olympus)
│ │ │ ├── 📄 mo_functions.vb (Funciones del modelo)
│ │ │ ├── 📄 mo_fill.vb (Llenado de datos)
│ │ │ └── 📄 mo_retenedor.vb (Modelo retenedor)
│ │ ├── 📁 UI/ (Adaptadores de UI)
│ │ │ ├── 📄 ConceptosGridTableAdapter.vb
│ │ │ ├── 📄 DefinicionesGridTableAdapter.vb
│ │ │ ├── 📄 EquivalenciasGridTableAdapter.vb
│ │ │ ├── 📄 ParametrosGridTableAdapter.vb
│ │ │ └── 📄 TiposContratoGridTableAdapter.vb
│ │ ├── 📄 Nf_FrontBack.vb (Comunicación frontend/backend)
│ │ ├── 📄 Nf_FrontBackLocal.vb (Comunicación local)
│ │ ├── 📄 cobranza.xsd (Esquema de datos de cobranza)
│ │ └── 📄 gridviews.xsd (Esquema de grids)
│ ├── 📁 catalogos/ (Catálogos maestros)
│ │ ├── 📄 CapturarMotivoRechazo.aspx
│ │ ├── 📄 CapturarMotivonoTomarse.aspx
│ │ ├── 📄 CapturarOficina.aspx
│ │ ├── 📄 CapturarTipoContrato.aspx
│ │ ├── 📄 ConsultarCentrosTrabajo.aspx
│ │ ├── 📄 Carga_Centros_Trabajo.aspx
│ │ ├── 📄 DirectorioRetenedores.aspx
│ │ ├── 📄 ContactoRetenedores.aspx
│ │ ├── 📄 FechaCierrePago.aspx
│ │ ├── 📄 FechasCierreEnvio.aspx
│ │ └── 📄 Invasion_Mercado.aspx
│ ├── 📁 consultas/ (Módulo de consultas)
│ │ ├── 📄 BuscarEmpleado.aspx
│ │ ├── 📄 BuscarExclusion.aspx
│ │ ├── 📄 BuscarInclusion.aspx
│ │ ├── 📄 Busqueda.aspx (Búsqueda general E/P/C/R)
│ │ └── 📄 MatrizEnvioPago.aspx
│ ├── 📁 empleados/ (Gestión de empleados)
│ │ ├── 📄 CapturarEmpleado.aspx
│ │ └── 📄 Cargar_Empleados.aspx
│ ├── 📁 envios/ (Módulo de envíos)
│ │ ├── 📄 Carga_Envios.aspx (Carga masiva de envíos)
│ │ ├── 📄 Envios_procesados.aspx
│ │ ├── 📄 CapturarInclusion.aspx
│ │ ├── 📄 CapturarExclusion.aspx
│ │ ├── 📄 CapturarRechazo.aspx
│ │ ├── 📄 Carga_Rechazos.aspx
│ │ ├── 📄 Traspasar_Quincena_Envios.aspx
│ │ ├── 📄 Previo_Envios.aspx
│ │ ├── 📄 Reenvio_Masivo.aspx
│ │ ├── 📄 Resultado_reenvio.aspx
│ │ ├── 📄 Generar_Circular40.aspx (Circular 40 CNBS)
│ │ ├── 📄 Buscar_Circular40.aspx
│ │ ├── 📄 Actualiza_Nombres.aspx
│ │ ├── 📄 Admin_files.aspx (Descarga de archivos)
│ │ ├── 📄 ImprimirEtiquetas_Mensajeria.aspx
│ │ ├── 📄 MostrarPDF.aspx
│ │ └── 📄 MostrarXLS.aspx
│ ├── 📁 pagos/ (Módulo de pagos)
│ │ ├── 📄 Cargar_Pagos.aspx (Carga masiva de pagos)
│ │ ├── 📄 Pagos_procesados.aspx
│ │ ├── 📄 ListarDepositos.aspx
│ │ ├── 📄 CapturarDeposito.aspx
│ │ ├── 📄 Duplicar_Quincena_Pago.aspx
│ │ ├── 📄 Comparar_Quincena.aspx
│ │ ├── 📄 SepararConceptos.aspx
│ │ ├── 📄 DividirArchivo.aspx
│ │ ├── 📄 Eliminar_envios_pagos.aspx
│ │ ├── 📄 Localizar_Poliza.aspx (Histórico)
│ │ └── 📄 Previo_pagos.aspx
│ ├── 📁 seguimiento/ (Seguimiento de pólizas)
│ │ ├── 📄 SeguimientoPolizas.aspx (Vigentes sin descuento)
│ │ ├── 📄 Corregir_no_identificados.aspx
│ │ ├── 📄 polizas_canceladas.aspx (Rescatadas con descuento)
│ │ ├── 📄 Carga_no_idenfiticados.aspx
│ │ ├── 📄 Carga_No_Tomadas.aspx
│ │ ├── 📄 Carga_No_Tomarse.aspx
│ │ ├── 📄 Carga_Cancelaciones.aspx
│ │ ├── 📄 Carga_Cobranza_Bancaria.aspx
│ │ ├── 📄 Carga_Exclusiones.aspx
│ │ ├── 📄 Carga_Inclusiones.aspx
│ │ ├── 📄 Extractores.aspx
│ │ ├── 📄 BuscarAsegurado.aspx
│ │ └── 📄 DetalleAsegurado.aspx
│ ├── 📁 retenedores/ (Gestión de retenedores)
│ │ ├── 📄 ListarRetenedores.aspx
│ │ ├── 📄 ListarRetenedoresInvasion.aspx
│ │ ├── 📄 CapturarRetenedor.aspx
│ │ ├── 📄 BitacoraVisitasRetenedores.aspx
│ │ └── 📄 CapturarVisitaRetenedor.aspx
│ ├── 📁 Rehabilitados/
│ │ └── 📄 Rehabilitaciones.aspx
│ ├── 📁 Reportes/ (Módulo de reportes)
│ │ ├── 📄 GenerarReportes.aspx
│ │ ├── 📄 ListarReportes.aspx
│ │ └── 📄 MostrarPDF.aspx
│ ├── 📁 seguridad/ (Administración de seguridad)
│ │ ├── 📄 ListarUsuarios.aspx
│ │ ├── 📄 CapturarUsuarios.aspx
│ │ └── 📄 ListarRoles.aspx
│ ├── 📁 layouts/ (Gestión de layouts/formatos)
│ │ ├── 📄 ListarFormatos.aspx
│ │ ├── 📄 ListarConversiones.aspx
│ │ ├── 📄 DefinirFormato.aspx
│ │ ├── 📄 Captura_convension.aspx
│ │ └── 📄 Cambiar_F_Archivo.aspx
│ ├── 📁 general/ (Páginas generales)
│ │ ├── 📄 Home.aspx (Página principal)
│ │ ├── 📄 MasterPage.master (Plantilla maestra)
│ │ ├── 📄 Error.aspx
│ │ ├── 📄 Exporta_Excel.aspx
│ │ ├── 📄 ListarTrabajos.aspx
│ │ └── 📄 ProcesarTrabajo.aspx
│ ├── 📁 bin/ (Ensamblados compilados)
│ ├── 📁 temp/ (Archivos temporales)
│ │ ├── 📁 Pagos/upload/
│ │ └── 📁 descargas/
│ ├── 📁 Pdfs/ (Archivos PDF generados)
│ ├── 📁 scripts/ (JavaScript)
│ ├── 📁 images/ (Imágenes)
│ ├── 📁 App_Themes/Tema1/ (Estilos CSS)
│ ├── 📄 Default.aspx (Login)
│ ├── 📄 RecuperarPassword.aspx
│ ├── 📄 Web.config (Configuración)
│ ├── 📄 Web.sitemap (Mapa de sitio)
│ ├── 📄 Global.asax
│ └── 📄 packages.config
├── 📁 CLogic/ (Proyecto de Lógica Compartida - DLL)
│ ├── 📄 Persistencia.vb (Acceso a datos compartido)
│ ├── 📄 Reportes.vb (Generación de reportes)
│ ├── 📄 ReportesExt.vb (Extensiones de reportes)
│ ├── 📁 Reportes/ (Crystal Reports .rpt)
│ │ ├── 📄 A01_Análisis_de_Cartera.rpt
│ │ ├── 📄 B01_Cancelaciones.rpt
│ │ ├── 📄 B02_Listado_de_Exclusiones.rpt
│ │ ├── 📄 B03_Inclusiones_Retenedores_Central.rpt
│ │ ├── 📄 C01_Envíos_Retenedor_Quincena.rpt
│ │ ├── 📄 C02_Listado_Analitico.rpt
│ │ ├── 📄 C03_Carta_de_Entrega.rpt
│ │ ├── 📄 C04_Pagos_Procesados_por_Retenedor.rpt
│ │ ├── 📄 C05_Control_de_Pagos.rpt
│ │ ├── 📄 C06_Estados_de_Cuenta.rpt
│ │ └── 📄 C07_Vigentes_Con_Descuento.rpt
│ └── 📄 CLogic.vbproj
└── 📁 DBQueries/ (Scripts SQL)
└── 📄 CambioDB.sql
2.2 Organización de Namespaces#
Sin namespaces explícitos: El proyecto usa la estructura tradicional de ASP.NET WebForms sin namespaces personalizados
App_Code: Clases de negocio compiladas automáticamente
CLogic: Librería de lógica compartida
2.3 Proyectos de la Solución#
1.
Andromeda (Web): Proyecto principal ASP.NET WebForms
2.
CLogic: Librería de clase VB.NET para reportes y lógica compartida
3.
DBQueries: Scripts SQL y procedimientos almacenados (carpeta virtual)
3. INVENTARIO DE LIBRERÍAS Y DEPENDENCIAS#
3.1 NuGet Packages#
| Librería | Versión Actual | Propósito | Categoría |
|---|
| Microsoft.IdentityModel.JsonWebTokens | 6.15.0 | Manejo de tokens JWT | Seguridad |
| Microsoft.IdentityModel.Logging | 6.15.0 | Logging para IdentityModel | Seguridad |
| Microsoft.IdentityModel.Tokens | 6.15.0 | Validación de tokens de seguridad | Seguridad |
| System.IdentityModel.Tokens.Jwt | 6.15.0 | Autenticación JWT | Seguridad |
| Newtonsoft.Json | 13.0.1 | Serialización JSON | Utilidades |
3.2 Ensamblados GAC / Referencias Locales#
| Librería | Versión | Propósito | Categoría |
|---|
| CrystalDecisions.CrystalReports.Engine | 13.0.4000.0 | Motor de reportes Crystal Reports | Reportes |
| CrystalDecisions.ReportSource | 13.0.4000.0 | Fuente de datos para reportes | Reportes |
| CrystalDecisions.Shared | 13.0.4000.0 | Componentes compartidos Crystal | Reportes |
| CrystalDecisions.Web | 13.0.4000.0 | Visor web Crystal Reports | Reportes |
| CrystalDecisions.Windows.Forms | 13.0.4000.0 | Controles Windows Forms | Reportes |
| Microsoft.Office.Interop.Excel | 12.0.0.0 | Interoperabilidad con Excel | Office |
| Microsoft.Vbe.Interop | 12.0.0.0 | Visual Basic for Applications | Office |
| Office | 12.0.0.0 | Microsoft Office Core | Office |
| Ionic.Utils.Zip | N/A | Compresión ZIP | Utilidades |
| Ajax | N/A | Llamadas AJAX personalizadas | Web |
| Brettle.Web.NeatUpload | N/A | Carga de archivos grandes | Web |
| ICSharpCode.SharpZipLib | N/A | Compresión de archivos | Utilidades |
3.3 Dependencias del Framework#
System.Web.Extensions (AJAX)
4. ARQUITECTURA DEL PROYECTO#
4.1 Patrón Arquitectónico#
Patrón N-Layer (3 Capas) con WebForms clásico:El proyecto implementa una arquitectura de 3 capas tradicional:1.
Capa de Presentación: Páginas ASPX con CodeBehind en VB.NET
2.
Capa de Lógica de Negocio: Clases en App_Code/Business
3.
Capa de Acceso a Datos: ADO.NET directo con Stored Procedures
4.2 Diagrama de Arquitectura#
4.3 Componentes Principales#
Capa de Presentación#
Páginas ASPX: 105 páginas WebForms organizadas por módulos funcionales
MasterPage: Plantilla maestra común (general/MasterPage.master)
Temas: App_Themes/Tema1 con estilos CSS personalizados
Controles: GridViews, FormViews, controles de validación ASP.NET
AJAX: Ajax.PageHandlerFactory para operaciones asíncronas
Capa de Negocio#
Módulos de negocio: 40+ clases VB en App_Code/Business
Autenticación: CustomMembership.vb implementa Forms Authentication personalizado
Validaciones: Validacion.vb con reglas de negocio
Conversiones: Convertir.vb, Conversiones.vb para transformación de datos
Gestión de archivos: Archivos.vb, Dividir.vb, Exportar.vb
Capa de Datos#
Persistencia: ADO.NET con SqlCommand y SqlDataAdapter
Stored Procedures: Toda la lógica SQL está en SPs
AndromedaDB: Base principal de cobranza
olympus_op_pr: Base de datos corporativa (integración)
Modelo de datos: Esquemas XSD (cobranza.xsd, gridviews.xsd)
Librería CLogic#
Reportes: Crystal Reports (.rpt) con más de 20 reportes
Persistencia compartida: Acceso a datos reutilizable
ReportesExt: Extensiones para generación de reportes
4.4 Flujo de Datos#
4.5 Flujo de Autenticación#
5. ASPECTOS MÁS RELEVANTES#
5.1 Funcionalidades Principales#
1.
Carga masiva de envíos desde archivos planos (layouts configurables)
Procesamiento automático de envíos por quincena
Generación de Circular 40
Impresión de etiquetas de mensajería
2.
Carga masiva de archivos de pago
Procesamiento de depósitos bancarios
Separación de conceptos de pago
Duplicación y comparación de quincenas
Control de pagos procesados
3.
Directorio de retenedores y centros de trabajo
Gestión de empleados por retenedor
Invasión de mercado (análisis de competencia)
4.
Pólizas vigentes sin descuento
Pólizas canceladas/rescatadas con descuento
Corrección de no identificados
Extractores de información
5.
Búsqueda integral (E/P/C/R: Envíos/Pagos/Cancelaciones/Rechazos)
Más de 20 reportes Crystal Reports: 6.
Fechas de cierre (envíos/pagos)
Layouts y conversiones de archivos
7.
Administración y SeguridadGestión de usuarios y roles
Control de privilegios por página
Trabajos en proceso (background jobs)
8.
Cambiar formato de archivos
5.2 Configuraciones Críticas#
Connection Strings#
<connectionStrings>
<add name="olympusConnectionString"
connectionString="Data Source=sql.prod;Initial Catalog=olympus_op_pr;..." />
<add name="cobranzaConnectionString"
connectionString="Data Source=sql.prod;Initial Catalog=AndromedaDB;..." />
</connectionStrings>
Configuraciones de Aplicación#
<appSettings>
<add key="OlympusDB" value="olympus_op_pr"/>
<add key="CobranzaDB" value="AndromedaDB"/>
<add key="ReportesPath" value="G:\Prod\Andromeda\CLogic\Reportes\"/>
<add key="PdfOutputPath" value="G:\Prod\Andromeda\Web\Pdfs\"/>
<add key="RutaLayoutExcel" value="G:\Prod\Andromeda\Web\temp\descargas\"/>
<add key="RutaPagosUpload" value="G:\Prod\Andromeda\Web\temp\Pagos\upload\"/>
<add key="log" value="andromeda.log"/>
<add key="RutaLog" value="C:\"/>
<add key="WSPolizas.wsPolizas" value="http://olympus.grupokc.com.mx/wspolizas/wsPolizas.asmx"/>
<add key="version" value="2.2.2"/>
<add key="aspnet:MaxHttpCollectionKeys" value="50000"/>
<add key="aspnet:MaxJsonDeserializerMembers" value="1000"/>
</appSettings>
Configuraciones de Seguridad#
<authentication mode="Forms">
<forms loginUrl="Default.aspx" protection="Validation" timeout="300"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<membership defaultProvider="CustomMembership">
<providers>
<add name="CustomMembership" type="CustomMembership"
passwordFormat="Clear" enablePasswordRetrieval="true"/>
</providers>
</membership>
Configuraciones de Rendimiento#
<httpRuntime executionTimeout="1600"
maxRequestLength="900000"
minFreeThreads="8"/>
<sessionState timeout="1600"/>
<requestLimits maxAllowedContentLength="2147483648" />
<jsonSerialization maxJsonLength="5000000"/>
5.3 Patrones de Diseño Implementados#
1.
Custom Membership Provider: Implementación personalizada de autenticación ASP.NET
2.
Factory Pattern: En la generación de reportes (ReportesExt.vb)
3.
Helper Pattern: Clases estáticas con funciones auxiliares (Helpers.vb)
4.
Data Transfer Object (DTO): Uso de Hashtables para parámetros de SPs
5.
Template Method: MasterPage.master define estructura común
6.
Singleton (implícito): Clases estáticas de persistencia (Shared)
5.4 Seguridad#
Autenticación#
Forms Authentication con CustomMembership Provider
Timeout de sesión: 300 minutos (5 horas)
Recuperación de contraseña: RecuperarPassword.aspx
Cambio de contraseña: Home/UpdatePassword.aspx
Autorización#
Deny users="?": Acceso denegado a usuarios anónimos
Control de privilegios: Privilegio.vb valida acceso por página
Roles: Gestión de roles en seguridad/ListarRoles.aspx
Protecciones Implementadas#
Validación de entrada en controles ASP.NET
ViewState con validación (protection="Validation")
Timeout de sesión configurado
⚠️ ADVERTENCIA DE SEGURIDAD: Contraseñas en texto plano (passwordFormat="Clear")
⚠️ Connection strings con credenciales en Web.config
Áreas de Mejora de Seguridad#
6. ANÁLISIS DE VERSIONES Y COMPATIBILIDAD#
6.1 Framework .NET#
Versión actual: .NET Framework 4.6
Fecha de lanzamiento: Julio 2015
Fecha de fin de soporte: Abril 2027 (parte de .NET Framework 4.6.2+)
Estado: ⚠️ Obsoleto - Soporte limitado
6.2 Compatibilidad del Framework#
| Componente | Versión | Estado | Notas |
|---|
| .NET Framework | 4.6 | ⚠️ Desactualizado | Actualizar a .NET 4.8 (última versión) |
| ASP.NET WebForms | 4.6 | ⚠️ Legacy | Tecnología legacy, considerar migración |
| VB.NET | 14.0 | ✅ Funcional | Lenguaje estable |
| Crystal Reports | 13.0.4000.0 | ⚠️ Obsoleto | SAP Crystal Reports 2016 |
| SQL Server | Compatible | ✅ | Funciona con versiones modernas |
6.3 Características Modernas Utilizadas#
Muy limitadas: El proyecto usa principalmente características de VB.NET 2008-2012:Inferencia de tipos (Option Infer)
Extension methods (limitado)
Null-conditional operators
7. RECOMENDACIONES DE ACTUALIZACIÓN#
7.1 Prioridad Alta 🔴#
| Componente | Versión Actual | Versión Recomendada | Motivo | Esfuerzo |
|---|
| .NET Framework | 4.6 | 4.8 | Soporte extendido, últimas actualizaciones de seguridad | Medio |
| Contraseñas | Texto plano | Hash (PBKDF2/bcrypt) | CRÍTICO DE SEGURIDAD | Alto |
| Crystal Reports | 13.0 | SAP Crystal 2020+ o alternativa | Vulnerabilidades conocidas, EOL | Alto |
| Microsoft.Office.Interop.Excel | 12.0 | EPPlus 5.x / NPOI | Dependencia de Office instalado, licenciamiento | Medio |
| Componente | Versión Actual | Versión Recomendada | Beneficio | Esfuerzo |
|---|
| Newtonsoft.Json | 13.0.1 | 13.0.3+ | Actualizaciones de seguridad menores | Bajo |
| JWT Libraries | 6.15.0 | 7.x+ | Mejoras de rendimiento y seguridad | Bajo |
| AJAX Framework | Custom | jQuery AJAX o Fetch API | Modernización, mejor mantenimiento | Medio |
| ADO.NET directo | Actual | Dapper o Entity Framework | Type-safety, productividad | Alto |
7.3 Prioridad Baja 🟢#
| Componente | Versión Actual | Versión Recomendada | Beneficio | Esfuerzo |
|---|
| ASP.NET WebForms | 4.6 | ASP.NET Core MVC/Blazor | Modernización, cross-platform, performance | Muy Alto |
| VB.NET | Actual | C# | Ecosistema más amplio, mejores herramientas | Muy Alto |
| ViewState | Habilitado | Disabled + AJAX | Menor payload, mejor rendimiento | Medio |
7.4 Roadmap de Actualización Recomendado#
7.5 Estrategia de Migración a .NET Moderno#
Opción 1: Actualización Incremental (Recomendado a corto plazo)#
1.
✅ Actualizar a .NET Framework 4.8 (compatible, bajo riesgo)
2.
Modernizar acceso a datos (Dapper)
3.
Separar lógica de negocio en proyectos .NET Standard 2.0
4.
Crear APIs REST en ASP.NET Core que consuman la lógica existente
5.
Migrar UI gradualmente a Blazor/React/Angular
Opción 2: Reescritura Completa (Largo plazo)#
1.
Diseñar nueva arquitectura en ASP.NET Core 8+
2.
Implementar Clean Architecture / Vertical Slice
4.
Coexistencia temporal de ambos sistemas
Opción 3: Mantener en .NET Framework 4.8#
Aplicable si no hay presupuesto para migración
Actualizar a 4.8 y mantener con parches de seguridad
8. MÉTRICAS DEL PROYECTO#
8.1 Distribución por Tipo de Archivo#
8.2 Complejidad del Código#
Total de archivos VB: 153
Total de páginas ASPX: 105
Clases de negocio: ~40 en App_Code/Business
Reportes Crystal: 20+ archivos .rpt
Stored Procedures: ~100+ (estimado en base de datos)
Módulos funcionales: 11 principales
8.3 Cobertura de Funcionalidades#
8.4 Estado de Dependencias#
9. DEUDA TÉCNICA IDENTIFICADA#
9.1 Issues Críticos#
Seguridad#
Arquitectura#
Código#
Testing#
9.2 Mejoras Recomendadas#
Corto Plazo (0-3 meses)#
Largo Plazo (6-12 meses)#
Consideraciones Arquitectónicas#
10. GLOSARIO TÉCNICO#
Términos del Dominio de Seguros#
Retenedor: Empresa o entidad que retiene primas de seguro de sus empleados para pago colectivo
Centro de Trabajo: Ubicación física de un retenedor donde trabajan empleados asegurados
Envío: Archivo/documento que contiene información de pólizas para descuento de prima
Pago: Transacción de pago de primas por parte del retenedor
Inclusión: Alta de nueva póliza en el sistema de descuentos
Exclusión: Baja de póliza del sistema de descuentos
Rechazo: Póliza que no pudo ser procesada por inconsistencias
No identificado: Pago que no se puede asociar a una póliza específica
Póliza vigente sin descuento: Póliza activa pero sin convenio de descuento automático
Póliza rescatada: Póliza cancelada con devolución de valor de rescate
Rehabilitación: Reactivación de póliza suspendida
Quincena: Período quincenal de procesamiento de envíos y pagos
Invasión de mercado: Análisis de clientes atendidos por competencia
Términos Técnicos del Proyecto#
Layout: Definición de formato de archivo plano (posiciones, tipos de datos)
Conversión: Transformación de formato de archivo de entrada a formato sistema
Olympus: Sistema corporativo principal (base de datos olympus_op_pr)
Andromeda: Sistema de cobranza (base de datos AndromedaDB)
WSPolizas: Web Service de integración con sistema de pólizas
Trabajo: Proceso asíncrono en background (ListarTrabajos.aspx)
11. NOTAS ADICIONALES#
11.1 Integración con Otros Sistemas#
Olympus: Integración con base de datos corporativa (olympus_op_pr) para datos de pólizas, asegurados y agentes
WSPolizas: Web Service SOAP para consultas de información de pólizas
Excel: Generación masiva de reportes en formato Excel usando Office Interop
11.2 Procesamiento de Archivos#
El sistema maneja archivos planos con layouts configurables:Layouts definidos en tabla de base de datos
Conversiones personalizadas por retenedor
Validaciones automáticas durante carga
Generación de archivos de salida en formatos estándar
11.3 Características de Auditoría#
Log de transacciones (andromeda.log)
Registro de consultas SQL (Consultar_Log.aspx)
Bitácora de visitas a retenedores
Histórico de pólizas (Localizar_Poliza.aspx)
Control de cambios en catálogos
11.4 Rendimiento y Escalabilidad#
Configuraciones para carga masiva:executionTimeout: 1600 segundos
maxAllowedContentLength: 2 GB
Recomendaciones de optimización:Implementar paginación en grids grandes
Agregar índices en tablas de transacciones
Implementar caché de consultas frecuentes
Optimizar stored procedures con planes de ejecución
Considerar procesamiento asíncrono para cargas masivas
11.5 Backup y Recuperación#
Actual: No identificado en la configuración
Recomendaciones:Implementar backup diario de AndromedaDB
Backup incremental cada 4 horas
Retention policy de 30 días
Disaster recovery plan documentado
Backup de archivos en temp/ y Pdfs/
11.6 Entorno de Producción#
Servidor: sql.prod (SQL Server)
Path de instalación: G:\Prod\Andromeda\
IIS: Configurado con URL Rewrite (HTTP a HTTP/HTTPS)
Cultura: es-MX (Español de México)
12. ANÁLISIS COMPARATIVO: ESTADO ACTUAL VS. MEJOR PRÁCTICA#
| Aspecto | Estado Actual | Mejor Práctica Recomendada | Gap |
|---|
| Framework | .NET Framework 4.6 | .NET 8 | ⚠️ Alto |
| UI | ASP.NET WebForms | Blazor/React/Angular | ⚠️ Alto |
| Acceso a datos | ADO.NET manual | Entity Framework Core / Dapper | ⚠️ Medio |
| Autenticación | Custom Membership | ASP.NET Identity / IdentityServer | ⚠️ Alto |
| Passwords | Texto plano | Hashed (bcrypt/PBKDF2) | 🔴 Crítico |
| Testing | Ninguno | Unit + Integration tests | 🔴 Crítico |
| Logging | Archivo .log plano | Serilog/NLog estructurado | ⚠️ Medio |
| CI/CD | Manual | Azure DevOps/GitHub Actions | ⚠️ Alto |
| Reportes | Crystal Reports 13.0 | Telerik/FastReport/SSRS | ⚠️ Medio |
| API | Web Service SOAP | RESTful API / GraphQL | ⚠️ Medio |
| Dependency Injection | No usado | DI Container (built-in) | ⚠️ Medio |
| Async/Await | No usado | Async programming | ⚠️ Bajo |
| Containerización | No aplicable | Docker + Kubernetes | ⚠️ Bajo |
| Monitoreo | Logs manuales | Application Insights / ELK | ⚠️ Medio |
Repositorio#
Control de versión: Git (migrado desde Subversion/AnkhSVN)
Branch principal: automatizacion_cobranza
Documentación Técnica Relacionada#
Esquemas de base de datos: G:\Prod\Andromeda\DBQueries\
Reportes Crystal: G:\Prod\Andromeda\CLogic\Reportes\
Layouts de archivos: Configurados en base de datos (tabla Layouts)
URLs del Sistema#
Documentación generada: 2024-12-13
Versión del documento: 1.0
Basado en: Análisis estático del código fuente en G:\Prod\Andromeda\Modificado en 2025-12-19 17:45:35