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

ClassLibrary

DOCUMENTACIÓN TÉCNICA - NF.ClassLibrary#

1. INFORMACIÓN GENERAL DEL PROYECTO#

Nombre del proyecto: NF.ClassLibrary
Descripción y propósito: Librería de clases compartida para aplicaciones del ecosistema .NET Framework. Proporciona funcionalidades comunes para manejo de bases de datos, procesamiento de archivos, cotizaciones de seguros, integración con servicios externos (Google Drive, Gmail), procesamiento de documentos PDF/Excel, y servicios de importación/exportación de datos.
Versión del framework .NET: .NET Framework 4.8
Tipo de aplicación: Class Library (DLL)
Versión del ensamblado: 1.0.0.0
Fecha de creación original: 2016
Fecha de última modificación: Mayo 2025
Visual Studio: Version 17.5.2.0 (Visual Studio 2022)

2. MAPA DE SITIO / ESTRUCTURA DEL PROYECTO#

📁 NF.ClassLibrary/
├── 📁 Abstractos/
│   ├── 📄 FileUploaderRules.cs
│   ├── 📄 NegocioResultado.cs
│   └── 📄 ValidadorExcel.cs
├── 📁 CotizadorAutos/
│   ├── 📄 Cobertura.cs
│   ├── 📄 CoberturasAutos.cs
│   ├── 📄 CoberturaResult.cs
│   ├── 📄 Cotizacion.cs
│   ├── 📄 CotizacionResult.cs
│   ├── 📄 Direccion.cs
│   ├── 📄 KeyValue.cs
│   ├── 📄 PaqueteCoberturas.cs
│   ├── 📄 Persona.cs
│   ├── 📄 Poliza.cs
│   ├── 📄 Prima.cs
│   └── 📄 Vehiculo.cs
├── 📁 Cripto/
│   ├── 📄 Encripcion.cs
│   └── 📄 OpenSSL.cs
├── 📁 Crm/
│   └── 📄 Quote.cs
├── 📁 Database/
│   ├── 📄 AttachmentModel.cs
│   ├── 📄 Database.cs
│   ├── 📄 DataModel.cs
│   ├── 📄 DataQs.cs
│   ├── 📄 DataSort.cs
│   ├── 📄 Excel.cs
│   ├── 📄 Field.cs
│   ├── 📄 Mail.cs
│   ├── 📄 Query.cs
│   ├── 📄 ResponseResult.cs
│   ├── 📄 ReportesIP.cs
│   └── 📄 Token.cs
├── 📁 FileUploader/
│   ├── 📄 FileToSave.cs
│   ├── 📄 FileUploader.cs
│   ├── 📄 FileUploaderApprovals.cs
│   ├── 📄 FileUploaderDetencionPagos.cs
│   ├── 📄 FileUploaderDigitalLibrary.cs
│   ├── 📄 FileUploaderEdoctasMet.cs
│   ├── 📄 FileUploaderFromStream.cs
│   ├── 📄 FileUploaderHelios*.cs (múltiples archivos específicos)
│   ├── 📄 FileUploaderMetHelios*.cs
│   ├── 📄 FileUploaderResult.cs
│   ├── 📄 FileUploaderSaveInSQL.cs
│   ├── 📄 FileUploaderSubirFactura*.cs
│   ├── 📄 FileUploaderTmp.cs
│   ├── 📄 FileUploaderValidarFactura.cs
│   ├── 📄 PortadaComunicados.cs
│   ├── 📄 ReadPdf.cs
│   └── 📄 SplittingPdfFile.cs
├── 📁 Gm/
│   ├── 📄 Cotizacion.cs
│   └── 📄 Plan.cs
├── 📁 Importacion/
│   ├── 📄 ImportacionApprovals.cs
│   ├── 📄 ImportadorDetencionPagos.cs
│   ├── 📄 ImportadorFromExcel.cs
│   ├── 📄 ImportadorHelios*.cs (múltiples archivos específicos)
│   ├── 📄 ImportadorIntegralDeComisiones*.cs
│   ├── 📄 ImportadorMet*.cs
│   ├── 📄 ImportadorResultado.cs
│   ├── 📄 ValidadorExcelResultado.cs
│   ├── 📄 ValidadorMetEdoctas.cs
│   ├── 📄 ValidadorRecibosAplicados.cs
│   └── 📄 ValidadorVacio.cs
├── 📁 Log/
│   └── 📄 Log.cs
├── 📁 Met99/
│   ├── 📄 Cobertura.cs
│   ├── 📄 Cotizacion.cs
│   ├── 📄 Ocupacion.cs
│   └── 📄 proyeccionFinanciera.cs
├── 📁 Services/
│   ├── 📄 CerFile.cs
│   ├── 📄 Constantes.cs
│   ├── 📄 Enumeradores.cs
│   ├── 📄 Helpers.cs
│   ├── 📄 Json.cs
│   ├── 📄 MimeType.cs
│   ├── 📄 Prospecto.cs
│   ├── 📄 ToPdf.cs
│   └── 📄 Usuario.cs
├── 📁 shcp/
│   ├── 📄 cfdi.cs
│   ├── 📄 cfdiAgentes.cs
│   └── 📄 IngresoFacturable.cs
├── 📁 Properties/
│   └── 📄 AssemblyInfo.cs
├── 📄 app.config
├── 📄 packages.config
└── 📄 NF.ClassLibrary.csproj

Organización de Namespaces#

El proyecto utiliza un namespace principal: nf.classLibrary
Todos los componentes se organizan bajo este namespace único, con separación lógica por carpetas físicas.

3. INVENTARIO DE LIBRERÍAS Y DEPENDENCIAS#

NuGet Packages#

LibreríaVersión ActualPropósitoCategoría
BouncyCastle1.8.9Criptografía y seguridad (versión legacy)Seguridad
BouncyCastle.Cryptography2.5.1Criptografía modernaSeguridad
DotNetZip1.15.0Compresión y descompresión de archivos ZIPUtilidades
EPPlus5.6.3Creación y lectura de archivos Excel (XLSX)Documentos
Google.Apis1.69.0API base de GoogleAPI Externa
Google.Apis.Auth1.69.0Autenticación con servicios GoogleAPI Externa
Google.Apis.Core1.69.0Funcionalidades core de Google APIsAPI Externa
Google.Apis.Drive.v31.69.0.3740Integración con Google DriveAPI Externa
Google.Apis.Gmail.v11.69.0.3742Integración con GmailAPI Externa
iTextSharp5.5.13.2Generación y manipulación de PDFDocumentos
itextsharp.xmlworker5.5.13.2Procesamiento XML para PDFsDocumentos
MailKit4.12.0Cliente moderno de correo electrónicoEmail
Microsoft.AspNet.Mvc5.2.7ASP.NET MVC FrameworkWeb
Microsoft.AspNet.Razor3.2.7Motor de vistas RazorWeb
Microsoft.AspNet.WebApi.Client5.2.7Cliente HTTP para Web APIWeb
Microsoft.AspNet.WebPages3.2.7Sistema de páginas webWeb
Microsoft.IO.RecyclableMemoryStream1.4.1Gestión eficiente de memoria para streamsPerformance
MimeKit4.12.0Procesamiento de mensajes MIMEEmail
Newtonsoft.Json13.0.3Serialización/deserialización JSONSerialización
System.Buffers4.6.0Gestión de buffers de memoriaPerformance
System.Formats.Asn18.0.2Formato ASN.1 para criptografíaSeguridad
System.Memory4.6.0Tipos de memoria modernosPerformance
System.Runtime.CompilerServices.Unsafe6.1.2Operaciones de bajo nivelPerformance
System.Threading.Tasks.Extensions4.6.3Extensiones para programación asíncronaAsync
System.ValueTuple4.5.0Soporte para tuplasUtilidades

Referencias del Sistema#

System.Data (Acceso a datos ADO.NET)
System.Configuration (Configuración de aplicaciones)
System.Drawing (Procesamiento de imágenes)
System.IO.Compression (Compresión)
System.Management (Gestión del sistema)
System.Net.Http (Cliente HTTP)
System.Security (Seguridad)
System.ServiceModel (WCF)
System.Transactions (Transacciones distribuidas)
System.Web (Funcionalidades web)
System.Xml (Procesamiento XML)
PresentationCore (WPF Core)
WindowsBase (Base de Windows)

4. ARQUITECTURA DEL PROYECTO#

4.1 Patrón Arquitectónico#

N-Layer Architecture (Arquitectura en Capas) con enfoque en Utility Library Pattern
El proyecto implementa una arquitectura de librería compartida organizada en capas funcionales:
Capa de Abstracción: Clases base y contratos (Abstractos)
Capa de Datos: Acceso a base de datos y modelos (Database)
Capa de Negocio: Lógica de negocio específica (CotizadorAutos, Met99, Gm, Crm)
Capa de Servicios: Servicios transversales (Services, Cripto, Log)
Capa de Procesamiento: Importación y carga de archivos (FileUploader, Importacion)
Capa de Integración Fiscal: Funcionalidades SHCP y facturación (shcp)

4.2 Diagrama de Arquitectura (Mermaid)#

4.3 Componentes Principales#

Capa de Abstracción (Abstractos)#

Define contratos base y clases abstractas para validación de archivos Excel, reglas de carga de archivos y resultados de operaciones de negocio.
Clases principales:
NegocioResultado: Clase resultado estándar con propiedades success, total, message, data y dataTable
ValidadorExcel: Base para validación de archivos Excel
FileUploaderRules: Reglas de negocio para carga de archivos

Capa de Datos (Database)#

Maneja toda la comunicación con SQL Server, ejecución de stored procedures, consultas dinámicas y operaciones CRUD.
Características:
Clase DataBase con patrón IDisposable
Soporte para múltiples bases de datos configurables
Manejo de connection strings por entorno (RunTimeMode)
Clase Mail para envío de correos con SMTP/MailKit
Modelos de datos (DataModel, Token, Field)
Sistema de consultas dinámicas (Query, DataQs)

Capa de Negocio#

CotizadorAutos:
Sistema completo de cotización de seguros de autos con modelos para coberturas, pólizas, vehículos, personas y cálculo de primas.
Met99:
Módulo de cotización de seguros con coberturas, ocupaciones y proyecciones financieras.
Gm:
Módulo de planes y cotizaciones específicas.
Crm:
Integración con sistemas CRM (Quote).

Capa de Servicios (Services)#

Servicios transversales reutilizables:
Helpers: Métodos de extensión y utilidades generales
Json: Serialización/deserialización
ToPdf: Conversión de documentos a PDF
CerFile: Manejo de certificados digitales (.cer)
MimeType: Detección de tipos MIME
Constantes y Enumeradores: Valores constantes del sistema
Usuario y Prospecto: Modelos de dominio

Capa de Procesamiento de Archivos (FileUploader/Importacion)#

FileUploader:
Sistema especializado en carga y procesamiento de archivos:
Validación de facturas XML/PDF
Procesamiento de archivos Helios (sistema de pólizas)
Procesamiento de archivos Qualitas (aseguradora)
Integración con biblioteca digital
Procesamiento de estados de cuenta y cobranza
División de archivos PDF
Lectura de PDF estructurados
Importacion:
Sistema de importación masiva desde Excel:
Importadores específicos por tipo de archivo (Helios, Ana, Qualitas, Met)
Validadores de integridad de datos
Procesamiento de detención de pagos
Importación de catálogos (oficinas, centros de costos, monedas)
Cálculo de ingresos facturables

Capa de Criptografía (Cripto)#

Encripcion: Hash de passwords con SHA1
OpenSSL: Integración con OpenSSL para operaciones criptográficas

Capa de Logging (Log)#

Sistema de registro de eventos y auditoría.

Capa de Integración Fiscal (shcp)#

cfdi: Procesamiento de Comprobantes Fiscales Digitales
cfdiAgentes: CFDIs específicos para agentes
IngresoFacturable: Cálculo de ingresos facturables para SHCP

Servicios Externos#

Google Drive API: Almacenamiento y gestión de documentos
Gmail API: Envío y recepción de correos
SMTP/MailKit: Envío de correos tradicional

4.4 Flujo de Datos#

Flujo de Importación de Archivos#


5. ASPECTOS MÁS RELEVANTES#

5.1 Funcionalidades Principales#

1.
Sistema de Cotización de Seguros Automotrices
Cotización multi-aseguradora (Qualitas, ANA, etc.)
Cálculo de primas y coberturas
Generación de propuestas y paquetes
Gestión de pólizas y vehículos
2.
Procesamiento Masivo de Archivos
Importación de archivos Excel con validación robusta
Procesamiento de archivos de aseguradoras (Helios, Qualitas, ANA)
Carga de estados de cuenta y reportes de cobranza
Validación y almacenamiento de facturas electrónicas
3.
Integración con Servicios de Google
Almacenamiento automático en Google Drive
Envío de correos mediante Gmail API
Gestión de archivos adjuntos
4.
Gestión Documental
Generación de PDFs desde HTML (iTextSharp)
División y procesamiento de archivos PDF
Lectura estructurada de PDFs
Conversión de documentos
5.
Sistema de Facturación Electrónica (CFDI)
Procesamiento de CFDIs (XML)
Validación de certificados digitales (.cer)
Cálculo de ingresos facturables para SHCP
Gestión de facturas de agentes
6.
Acceso a Datos Empresarial
Conexión dinámica a múltiples bases de datos
Ejecución de stored procedures
Consultas parametrizadas y seguras
Manejo de transacciones
7.
Sistema de Envío de Correos
SMTP tradicional y MailKit moderno
Soporte para adjuntos múltiples
Configuración flexible de servidores
8.
Manejo de Archivos Excel Avanzado
Lectura y escritura con EPPlus
Validación de estructuras
Exportación de reportes
9.
Criptografía y Seguridad
Encriptación de contraseñas (SHA1)
Integración con OpenSSL
Manejo de certificados digitales
10.
Sistema de Logging y Auditoría
Registro de operaciones críticas
Trazabilidad de procesos

5.2 Configuraciones Críticas#

Connection Strings#

El sistema utiliza un patrón de configuración por entorno:
<connectionStrings>
  <add name="Prometeo_[RunTimeMode]" connectionString="..." />
</connectionStrings>
Donde RunTimeMode se obtiene de:
<appSettings>
  <add key="RunTimeMode" value="Dev|Test|Prod" />
</appSettings>
Bases de datos soportadas:
Prometeo (principal)
Otras configurables dinámicamente

Configuración de Seguridad#

Assembly Binding Redirects:
Configurados en app.config para resolver conflictos de versiones:
Newtonsoft.Json → 13.0.0.0
iTextSharp → 5.5.13.2
BouncyCastle.Crypto → 1.8.9.0
System.Runtime.CompilerServices.Unsafe → 6.0.3.0
System.Memory → 4.0.2.0
System.Buffers → 4.0.4.0

Configuración de Logging#

Implementado a través de la clase Log en el namespace nf.classLibrary.

Variables de Entorno#

RunTimeMode: Define el entorno de ejecución (Dev/Test/Prod)
Credenciales de servicios Google (configuradas por código)
Configuración SMTP para envío de correos

5.3 Patrones de Diseño Implementados#

1.
Repository Pattern (Implícito)
Clase DataBase actúa como repositorio genérico
Abstracción del acceso a datos
2.
Factory Pattern
Construcción dinámica de importadores específicos
FileUploaders especializados por tipo
3.
Template Method Pattern
Clase abstracta ValidadorExcel define flujo de validación
Implementaciones concretas en ValidadorMetEdoctas, etc.
4.
Strategy Pattern
Diferentes estrategias de importación (ImportadorHelios, ImportadorFromExcel)
Validadores intercambiables
5.
Disposable Pattern
Implementación de IDisposable en clase DataBase
Gestión correcta de recursos (SqlConnection)
6.
Result Pattern
Clases ResponseResult, NegocioResultado, ImportadorResultado
Encapsulación de resultados con success/error
7.
Helper/Utility Pattern
Clase estática Helpers con métodos de extensión
Servicios utilitarios (Json, MimeType, ToPdf)

5.4 Seguridad#

Autenticación#

No implementada directamente (librería de utilidades)
Hash de passwords con SHA1CryptoServiceProvider
⚠️ ADVERTENCIA: SHA1 es obsoleto para passwords, se recomienda migrar a bcrypt o Argon2

Autorización#

No aplica (librería sin lógica de autorización)
Se delega a las aplicaciones consumidoras

Protecciones Implementadas#

✅ Protecciones existentes:
1.
Consultas parametrizadas: Uso de SqlParameter para prevenir SQL Injection
2.
IDisposable Pattern: Liberación correcta de recursos de base de datos
3.
Validación de archivos: Validadores específicos para archivos de entrada
4.
Manejo de excepciones: Try-catch en operaciones críticas
5.
Connection String por configuración: No hardcodeadas en código
⚠️ Vulnerabilidades potenciales identificadas:
1.
SHA1 para passwords: Algoritmo obsoleto y vulnerable
2.
Falta de validación de entrada: No se observa sanitización exhaustiva
3.
Posible exposición de información: Mensajes de error pueden exponer detalles internos
4.
Sin rate limiting: No hay protección contra ataques de fuerza bruta
5.
Certificados SSL/TLS: Configuración SMTP con enableSsl pero sin validación de certificados
Nivel de seguridad general: 🟡 MEDIO
Protecciones básicas implementadas
Requiere mejoras críticas en criptografía
Falta defensa en profundidad

6. ANÁLISIS DE VERSIONES Y COMPATIBILIDAD#

Framework .NET#

Versión actual: .NET Framework 4.8
Fecha de lanzamiento: Abril 2019
Fecha de fin de soporte: Vinculado al ciclo de vida de Windows
Estado: ✅ Soportado (Soporte extendido hasta que Windows 10/11 estén soportados)
Notas importantes:
.NET Framework 4.8 es la última versión de .NET Framework
Microsoft recomienda migrar a .NET 6/8 para nuevos desarrollos
.NET Framework 4.8 recibirá solo correcciones de seguridad críticas

Compatibilidad C##

Versión del lenguaje: C# 7.3 (por .NET Framework 4.8)
Características modernas NO disponibles:
Nullable Reference Types (C# 8)
Pattern Matching avanzado (C# 9+)
Records (C# 9)
Global usings (C# 10)
Required members (C# 11)

Compatibilidad de Plataforma#

Windows: ✅ Completamente compatible
Linux: ❌ No soportado (requiere .NET Core/.NET 6+)
macOS: ❌ No soportado (requiere .NET Core/.NET 6+)

7. RECOMENDACIONES DE ACTUALIZACIÓN#

7.1 Prioridad Alta 🔴#

Librería/FrameworkVersión ActualVersión RecomendadaMotivoEsfuerzo
Algoritmo de HashSHA1SHA256/bcrypt/Argon2Seguridad Crítica - SHA1 es vulnerableBajo
iTextSharp5.5.13.2iText7 u alternativaEOL - Versión obsoleta sin soporteAlto
BouncyCastle (dual)1.8.9 + 2.5.12.5.1 (consolidar)Eliminar versión legacy 1.8.9Medio
.NET Framework4.8.NET 8 LTSModernización y cross-platformMuy Alto
Detalle crítico - SHA1:

7.2 Prioridad Media 🟡#

LibreríaVersión ActualVersión RecomendadaBeneficioEsfuerzo
EPPlus5.6.37.5+Nuevas características Excel, mejor performanceMedio
Google.Apis.*1.69.0Última estableNuevas APIs y correccionesBajo
Newtonsoft.Json13.0.3System.Text.Json (migrar)Performance y nativo en .NET modernoAlto
MailKit4.12.0Última estableMejoras de seguridad SMTPBajo
Microsoft.AspNet.Mvc5.2.7ASP.NET Core 8Modernización (requiere .NET 8)Muy Alto

7.3 Prioridad Baja 🟢#

LibreríaVersión ActualVersión RecomendadaBeneficioEsfuerzo
DotNetZip1.15.0System.IO.CompressionNativo, sin dependencia externaBajo
System.Memory4.6.0Integrado en .NET 8Eliminación de NuGet innecesarioBajo (.NET 8)
System.Buffers4.6.0Integrado en .NET 8Eliminación de NuGet innecesarioBajo (.NET 8)

7.4 Framework .NET - Roadmap de Migración#

7.5 Plan de Migración a .NET 8#

Fase 1: Preparación (2 meses)
1.
Inventariar dependencias incompatibles
2.
Identificar código dependiente de .NET Framework específico
3.
Crear proyecto paralelo en .NET 8
4.
Configurar multi-targeting temporal
Fase 2: Migración Gradual (3 meses)
1.
Migrar módulos independientes primero (Services, Cripto)
2.
Actualizar librerías incompatibles
3.
Refactorizar código System.Web dependiente
4.
Implementar inyección de dependencias donde corresponda
Fase 3: Consolidación (2 meses)
1.
Migración completa del proyecto
2.
Pruebas exhaustivas
3.
Actualización de aplicaciones consumidoras
4.
Deployment gradual
Beneficios de migrar a .NET 8:
✅ Cross-platform (Windows, Linux, macOS)
✅ Mejor performance (2-3x más rápido)
✅ Soporte LTS hasta noviembre 2026
✅ Características modernas de C# 12
✅ Mejor seguridad nativa
✅ Menor consumo de memoria
✅ Contenedorización nativa

8. MÉTRICAS DEL PROYECTO#

Distribución de Archivos#

Estadísticas del Proyecto#

Total de archivos .cs: ~120+ archivos
Módulos principales: 11 carpetas funcionales
Dependencias NuGet: 25+ paquetes
Líneas de código estimadas: 15,000 - 20,000 LOC
Complejidad: Media-Alta (dominio asegurador especializado)

Cobertura de Dependencias#

Detalle:
🟢 Actualizadas (40%): MailKit, MimeKit, Newtonsoft.Json, Google APIs, EPPlus
🟡 Desactualizadas menores (35%): Librerías System., Microsoft.AspNet.
🔴 Críticas (25%): iTextSharp (EOL), SHA1 (vulnerable), .NET Framework 4.8 (legacy)

9. DEUDA TÉCNICA IDENTIFICADA#

Issues Críticos 🔴#

Vulnerabilidad de seguridad: Migrar SHA1 a algoritmo moderno (bcrypt/Argon2/PBKDF2)
Librería obsoleta: iTextSharp 5.x sin soporte, migrar a iText7 o alternativa (QuestPDF, PdfSharp)
Doble dependencia BouncyCastle: Versiones 1.8.9 y 2.5.1 coexisten, consolidar en 2.5.1
.NET Framework EOL: Framework legacy sin futuro, planificar migración a .NET 8

Issues Importantes 🟡#

Falta de inyección de dependencias: Código acoplado con new directo
Sin manejo centralizado de excepciones: Lógica dispersa en try-catch
Falta de logging estructurado: Implementar Serilog o NLog
Sin pruebas unitarias: No se identificaron proyectos de testing
Código System.Web: Dependencias web en librería de clase (acoplamiento innecesario)
Connection strings hardcoded: Patrón de configuración poco flexible
Falta de validación de entrada: No se observa sanitización exhaustiva de datos externos
Sin documentación XML: Falta XML comments en clases públicas

Mejoras Recomendadas 🟢#

Implementar patrón Unit of Work: Para gestión de transacciones complejas
Agregar validación con FluentValidation: Validación declarativa y reutilizable
Implementar AutoMapper: Para mapeo de entidades/DTOs
Migrar a Async/Await: Operaciones I/O síncronas bloqueantes
Implementar Circuit Breaker: Para llamadas a servicios externos (Polly)
Agregar health checks: Monitoreo de dependencias externas
Containerización: Preparar para Docker/Kubernetes
Documentación técnica: README, diagramas de arquitectura actualizados
Implementar CQRS: Separación de comandos y consultas en módulos complejos
Cache distribuido: Redis/MemoryCache para optimización
Telemetría: Application Insights u OpenTelemetry
Versionado semántico: Gestión de versiones de la librería

Refactoring Sugerido#

Alta prioridad:
1.
Extraer lógica de negocio de clases de datos (Single Responsibility)
2.
Crear interfaces para clases principales (Database, Mail, FileUploader)
3.
Separar configuración de código (Options Pattern)
4.
Eliminar dependencias System.Web innecesarias
Media prioridad:
1.
Normalizar nombres de archivos (convención PascalCase consistente)
2.
Consolidar clases utilitarias dispersas
3.
Crear DTOs explícitos en lugar de Dictionary<string, object>
4.
Implementar Validators específicos por entidad

10. GLOSARIO TÉCNICO#

TérminoDescripción
ANAAseguradora (Seguros ANA) - Una de las aseguradoras integradas en el sistema
CFDIComprobante Fiscal Digital por Internet - Factura electrónica SAT México
CoberturasProtecciones incluidas en una póliza de seguro
DeducibleCantidad que el asegurado debe pagar antes de que la aseguradora cubra un siniestro
EdoctaEstado de Cuenta - Reporte financiero de pólizas y pagos
EPPlusLibrería .NET para manipulación de archivos Excel sin Office instalado
HeliosSistema de gestión de pólizas de seguros (aparentemente sistema interno/legacy)
iTextSharpLibrería para creación y manipulación de archivos PDF
L.U.C.Límite Único Combinado - Tipo de cobertura en seguros
MailKitCliente de correo moderno para .NET (SMTP, IMAP, POP3)
Met99/MetSistema o aseguradora específica (Metlife posiblemente)
PrimaCosto de la póliza de seguro
PrometeoNombre de la base de datos principal del sistema
QualitasAseguradora Qualitas - Una de las aseguradoras principales del sistema
RunTimeModeConfiguración de entorno (Dev/Test/Prod)
SHCPSecretaría de Hacienda y Crédito Público - Institución fiscal de México
SP (Stored Procedure)Procedimiento almacenado en SQL Server
Suma AseguradaValor máximo que paga la aseguradora en caso de siniestro

11. NOTAS ADICIONALES#

Observaciones Importantes#

1.
Dominio Altamente Especializado: El proyecto está profundamente ligado al sector asegurador mexicano con integración a sistemas específicos (Helios, Qualitas, ANA) y normativas fiscales (SAT/SHCP).
2.
Dependencia de SQL Server: Todo el acceso a datos está centralizado en SQL Server con uso intensivo de stored procedures. No hay abstracción para otros motores de BD.
3.
Arquitectura Monolítica: Librería única con múltiples responsabilidades. En una arquitectura moderna se separaría en:
NF.Core (abstracciones, interfaces)
NF.Data (acceso a datos)
NF.Insurance (lógica de seguros)
NF.FileProcessing (procesamiento de archivos)
NF.Integration (Google, Email, SHCP)
NF.Common (utilidades transversales)
4.
Patrón de Configuración Legacy: Uso de ConfigurationManager y app.config en lugar de IConfiguration moderno.
5.
Sin Contenedorización: No preparado para Docker/Kubernetes (dependencias Windows).
6.
Posible Código Duplicado: Múltiples clases Cotizacion.cs y Cobertura.cs en diferentes namespaces (CotizadorAutos, Met99, Gm) sugieren duplicación de lógica.

Fortalezas del Proyecto#

✅ Separación clara de responsabilidades por carpetas
✅ Uso de patrones Result para manejo de errores
✅ Implementación de IDisposable para recursos
✅ Validación de archivos antes de procesamiento
✅ Integración con servicios modernos (Google APIs, MailKit)
✅ Soporte para múltiples bases de datos y entornos
✅ Funcionalidad completa y especializada del dominio

Debilidades del Proyecto#

❌ Framework obsoleto (.NET Framework 4.8)
❌ Algoritmo de hash vulnerable (SHA1)
❌ Falta de pruebas unitarias
❌ Sin inyección de dependencias
❌ Dependencias legacy (iTextSharp, ASP.NET MVC)
❌ Acoplamiento a Windows
❌ Sin documentación de código (XML comments)
❌ Falta de async/await en operaciones I/O

Próximos Pasos Recomendados#

Inmediatos (1-2 meses):
1.
Migrar SHA1 a bcrypt (seguridad crítica)
2.
Implementar suite de pruebas unitarias básicas
3.
Documentar clases públicas con XML comments
4.
Actualizar BouncyCastle y consolidar versión
Corto plazo (3-6 meses):
1.
Migrar operaciones síncronas a async/await
2.
Implementar inyección de dependencias
3.
Actualizar Google APIs y MailKit
4.
Crear interfaces para clases principales
Mediano plazo (6-12 meses):
1.
Planificar migración a .NET 8 LTS
2.
Migrar iTextSharp a alternativa moderna
3.
Implementar logging estructurado
4.
Separar librería en módulos más pequeños
Largo plazo (12+ meses):
1.
Completar migración a .NET 8
2.
Implementar arquitectura modular (NuGet packages separados)
3.
Containerización y CI/CD
4.
Migrar Newtonsoft.Json a System.Text.Json

12. INFORMACIÓN DE SOPORTE#

Contacto Técnico#

Repositorio Git: Configurado (branch: master)
Sistema de control de versiones: Git

Entornos#

EntornoRunTimeModeEstado
DesarrolloDev✅ Activo
PruebasTest✅ Activo
ProducciónProd✅ Activo

Aplicaciones que Consumen esta Librería#

Basado en las referencias a proyectos externos en paths de NuGet:
Fb_Cotizador - Sistema de cotización front-end
front_back - Aplicación web principal

Documentación generada: 2025-12-13
Analizado por: Claude AI (Sonnet 4.5)
Versión del documento: 1.0
Framework analizado: .NET Framework 4.8
Proyecto: NF.ClassLibrary v1.0.0.0
Modificado en 2025-12-14 01:45:45
Anterior
MetCotizadores
Siguiente
Chatbase
Built with