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

Andromeda

DOCUMENTACIÓN DEL PROYECTO ANDROMEDA#

1. INFORMACIÓN GENERAL DEL PROYECTO#

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
Versión actual: 2.2.2
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íaVersión ActualPropósitoCategoría
Microsoft.IdentityModel.JsonWebTokens6.15.0Manejo de tokens JWTSeguridad
Microsoft.IdentityModel.Logging6.15.0Logging para IdentityModelSeguridad
Microsoft.IdentityModel.Tokens6.15.0Validación de tokens de seguridadSeguridad
System.IdentityModel.Tokens.Jwt6.15.0Autenticación JWTSeguridad
Newtonsoft.Json13.0.1Serialización JSONUtilidades

3.2 Ensamblados GAC / Referencias Locales#

LibreríaVersiónPropósitoCategoría
CrystalDecisions.CrystalReports.Engine13.0.4000.0Motor de reportes Crystal ReportsReportes
CrystalDecisions.ReportSource13.0.4000.0Fuente de datos para reportesReportes
CrystalDecisions.Shared13.0.4000.0Componentes compartidos CrystalReportes
CrystalDecisions.Web13.0.4000.0Visor web Crystal ReportsReportes
CrystalDecisions.Windows.Forms13.0.4000.0Controles Windows FormsReportes
Microsoft.Office.Interop.Excel12.0.0.0Interoperabilidad con ExcelOffice
Microsoft.Vbe.Interop12.0.0.0Visual Basic for ApplicationsOffice
Office12.0.0.0Microsoft Office CoreOffice
Ionic.Utils.ZipN/ACompresión ZIPUtilidades
AjaxN/ALlamadas AJAX personalizadasWeb
Brettle.Web.NeatUploadN/ACarga de archivos grandesWeb
ICSharpCode.SharpZipLibN/ACompresión de archivosUtilidades

3.3 Dependencias del Framework#

System.Data (ADO.NET)
System.Web
System.Web.Extensions (AJAX)
System.Web.Services
System.Configuration
System.DirectoryServices
System.Net.Http
System.Drawing
System.Xml

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
Dos bases de datos:
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.
Gestión de Envíos
Carga masiva de envíos desde archivos planos (layouts configurables)
Procesamiento automático de envíos por quincena
Generación de Circular 40
Traspasar quincenas
Reenvío masivo
Impresión de etiquetas de mensajería
2.
Gestión de Pagos
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.
Gestión de Retenedores
Directorio de retenedores y centros de trabajo
Bitácora de visitas
Gestión de empleados por retenedor
Invasión de mercado (análisis de competencia)
Contactos de retenedores
4.
Seguimiento de Pólizas
Pólizas vigentes sin descuento
Pólizas canceladas/rescatadas con descuento
Corrección de no identificados
Carga de cancelaciones
Rehabilitaciones
Extractores de información
5.
Consultas y Reportería
Búsqueda integral (E/P/C/R: Envíos/Pagos/Cancelaciones/Rechazos)
Matriz de envío/pago
Histórico de pólizas
Más de 20 reportes Crystal Reports:
Análisis de cartera
Control de pagos
Estados de cuenta
Listados analíticos
Cartas de entrega
6.
Gestión de Catálogos
Motivos de rechazo
Oficinas
Tipos de contrato
Fechas de cierre (envíos/pagos)
Layouts y conversiones de archivos
7.
Administración y Seguridad
Gestión de usuarios y roles
Log de auditoría
Control de privilegios por página
Trabajos en proceso (background jobs)
8.
Utilerías
Cambiar formato de archivos
Dividir archivos grandes
Separar conceptos
Eliminar envíos/pagos
Exportación a Excel

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
Login: Default.aspx
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#

Implementar hashing de contraseñas (bcrypt/PBKDF2)
Mover connection strings a configuración encriptada
Implementar protección CSRF
Validación de entrada más robusta (anti-XSS)
Implementar HTTPS obligatorio
Usar parámetros preparados consistentemente (prevenir SQL injection)

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
Versión de C#: C# 6.0
Versión de VB.NET: VB 14

6.2 Compatibilidad del Framework#

ComponenteVersiónEstadoNotas
.NET Framework4.6⚠️ DesactualizadoActualizar a .NET 4.8 (última versión)
ASP.NET WebForms4.6⚠️ LegacyTecnología legacy, considerar migración
VB.NET14.0✅ FuncionalLenguaje estable
Crystal Reports13.0.4000.0⚠️ ObsoletoSAP Crystal Reports 2016
SQL ServerCompatible✅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)
LINQ (parcialmente)
Generics básicos
Extension methods (limitado)
NO utiliza:
Async/Await
Entity Framework
Dependency Injection
Unit Testing
Programación funcional
Pattern matching
Null-conditional operators

7. RECOMENDACIONES DE ACTUALIZACIÓN#

7.1 Prioridad Alta 🔴#

ComponenteVersión ActualVersión RecomendadaMotivoEsfuerzo
.NET Framework4.64.8Soporte extendido, últimas actualizaciones de seguridadMedio
ContraseñasTexto planoHash (PBKDF2/bcrypt)CRÍTICO DE SEGURIDADAlto
Crystal Reports13.0SAP Crystal 2020+ o alternativaVulnerabilidades conocidas, EOLAlto
Microsoft.Office.Interop.Excel12.0EPPlus 5.x / NPOIDependencia de Office instalado, licenciamientoMedio

7.2 Prioridad Media 🟡#

ComponenteVersión ActualVersión RecomendadaBeneficioEsfuerzo
Newtonsoft.Json13.0.113.0.3+Actualizaciones de seguridad menoresBajo
JWT Libraries6.15.07.x+Mejoras de rendimiento y seguridadBajo
AJAX FrameworkCustomjQuery AJAX o Fetch APIModernización, mejor mantenimientoMedio
ADO.NET directoActualDapper o Entity FrameworkType-safety, productividadAlto

7.3 Prioridad Baja 🟢#

ComponenteVersión ActualVersión RecomendadaBeneficioEsfuerzo
ASP.NET WebForms4.6ASP.NET Core MVC/BlazorModernización, cross-platform, performanceMuy Alto
VB.NETActualC#Ecosistema más amplio, mejores herramientasMuy Alto
ViewStateHabilitadoDisabled + AJAXMenor payload, mejor rendimientoMedio

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
3.
Migrar módulo por módulo
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
Funcional hasta 2027+

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#

CRÍTICO: Contraseñas almacenadas en texto plano (passwordFormat="Clear")
CRÍTICO: Connection strings con credenciales en Web.config sin encriptación
ALTO: No hay protección CSRF en formularios
ALTO: ViewState no encriptado puede contener datos sensibles
MEDIO: Sin validación anti-XSS en entrada de usuario
MEDIO: Timeout de sesión muy alto (1600 min = 26 horas)

Arquitectura#

ALTO: Uso de .NET Framework 4.6 (obsoleto, actualizar a 4.8 mínimo)
ALTO: Crystal Reports 13.0 (2011) con vulnerabilidades conocidas
ALTO: Sin separación de capas clara (código de negocio mezclado con UI)
MEDIO: ADO.NET manual sin ORM (código repetitivo, propenso a errores)
MEDIO: Sin inyección de dependencias

Código#

ALTO: Sin manejo de errores consistente (try-catch vacíos en varios lugares)
MEDIO: Uso extensivo de Hashtable en lugar de objetos tipados
MEDIO: Código VB.NET mezclado con lógica de negocio en CodeBehind
MEDIO: Sin logging estructurado (solo archivos .log planos)
BAJO: Uso de Ajax.dll personalizado en lugar de jQuery/Fetch

Testing#

CRÍTICO: Sin tests unitarios
CRÍTICO: Sin tests de integración
ALTO: Sin CI/CD pipeline
MEDIO: Sin documentación de APIs (Web Services)

9.2 Mejoras Recomendadas#

Corto Plazo (0-3 meses)#

Implementar hashing de contraseñas con PBKDF2 o bcrypt
Encriptar secciones sensibles del Web.config
Actualizar a .NET Framework 4.8
Implementar logging estructurado (Serilog, NLog)
Agregar protección CSRF a formularios críticos
Reducir timeout de sesión a valor razonable (60-120 min)
Actualizar Newtonsoft.Json y librerías JWT
Documentar stored procedures críticos

Mediano Plazo (3-6 meses)#

Migrar de Office Interop a EPPlus/NPOI
Evaluar migración de Crystal Reports a alternativas modernas (Telerik, FastReport)
Implementar capa de servicio con Dapper o micro-ORM
Crear objetos DTO tipados en lugar de Hashtables
Implementar manejo centralizado de excepciones
Agregar validación de entrada robusta
Configurar HTTPS obligatorio
Implementar backup automático de base de datos

Largo Plazo (6-12 meses)#

Diseñar estrategia de migración a .NET Core/.NET 8
Implementar tests unitarios (objetivo: 50% code coverage)
Separar lógica de negocio en proyectos .NET Standard
Crear APIs REST para funcionalidades core
Implementar frontend moderno (Blazor/React/Angular)
Configurar CI/CD (Azure DevOps, GitHub Actions)
Implementar monitoreo de aplicación (Application Insights)

Consideraciones Arquitectónicas#

Evaluar microservicios para módulos independientes (Envíos, Pagos, Seguimiento)
Implementar caché distribuida (Redis) para mejorar rendimiento
Separar base de datos en read/write replicas si el volumen lo justifica
Implementar Event Sourcing para auditoría completa

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:
maxRequestLength: 900 MB
executionTimeout: 1600 segundos
maxAllowedContentLength: 2 GB
maxJsonLength: 5 MB
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#

AspectoEstado ActualMejor Práctica RecomendadaGap
Framework.NET Framework 4.6.NET 8⚠️ Alto
UIASP.NET WebFormsBlazor/React/Angular⚠️ Alto
Acceso a datosADO.NET manualEntity Framework Core / Dapper⚠️ Medio
AutenticaciónCustom MembershipASP.NET Identity / IdentityServer⚠️ Alto
PasswordsTexto planoHashed (bcrypt/PBKDF2)🔴 Crítico
TestingNingunoUnit + Integration tests🔴 Crítico
LoggingArchivo .log planoSerilog/NLog estructurado⚠️ Medio
CI/CDManualAzure DevOps/GitHub Actions⚠️ Alto
ReportesCrystal Reports 13.0Telerik/FastReport/SSRS⚠️ Medio
APIWeb Service SOAPRESTful API / GraphQL⚠️ Medio
Dependency InjectionNo usadoDI Container (built-in)⚠️ Medio
Async/AwaitNo usadoAsync programming⚠️ Bajo
ContainerizaciónNo aplicableDocker + Kubernetes⚠️ Bajo
MonitoreoLogs manualesApplication Insights / ELK⚠️ Medio

13. RECURSOS Y CONTACTOS#

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#

Login: http://andromeda.grupokc.com.mx/Default.aspx
Web Service: http://olympus.grupokc.com.mx/wspolizas/wsPolizas.asmx

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
Anterior
Olympus
Siguiente
FrontBack
Built with