Files
ventas_php/php8-migration/analisis-base-datos.md
nickpons666 aaa77e870e Complete PHP 8.3.6 migration with modern architecture
- Added secure .env configuration with SystemConfig class
- Implemented multi-company DatabaseManager with MySQLi migration
- Fixed all PHP 8 compatibility issues (deprecated functions, syntax)
- Created complete AJAX login system with proper validation
- Added MockDatabase for development without MySQL dependencies
- Updated core classes (db, util, main, user, error, empresa)
- Fixed JavaScript loading and template compilation
- Added comprehensive documentation in php8-migration/
- System fully functional at http://ventas-test.local:82/login

Features:
- Multi-company database architecture with fallback to master
- Secure configuration management
- Modern PHP 8 practices with proper error handling
- Complete login functionality with validation
- Template cache cleared and updated

All critical issues resolved and system ready for production.
2026-01-06 22:52:04 -06:00

4.3 KiB
Executable File

Análisis de Base de Datos - Sistema Multi-Empresa

Estructura de Bases de Datos Identificada

Base de Datos Principal: avantikads_nmgen

Propósito: Base de datos master/global del sistema Tablas clave:

  • empresa - Catálogo de empresas (empresaId como PK)
  • usuario - Usuarios del sistema con empresaId asociado
  • Configuración global y shared resources

Base de Datos de Empresa: avantikads_nm15

Propósito: Datos específicos de empresa con ID 15 Contenido: Tablas operativas como:

  • _prodSinInv - Productos sin inventario
  • Todas las tablas transaccionales de la empresa 15

Arquitectura Multi-Empresa Confirmada

Estructura Validada

avantikads_nmgen (Master DB)
├── empresa (empresaId, activo, datos generales)
├── usuario (usuarioId, empresaId, datos usuario)
└── [Tablas globales]

avantikads_nm{empresaId} (Empresa-specific DB)
├── _prodSinInv
├── productos
├── pedidos
├── ventas
└── [Todas las tablas operativas]

Flujo de Autenticación y Selección

  1. Usuario inicia sesión → Conexión a avantikads_nmgen
  2. Validación de credenciales en tabla usuario
  3. Obtención de empresaId del registro del usuario
  4. Conexión dinámica a avantikads_nm{empresaId}
  5. Operaciones en BD de la empresa específica

Implicaciones para la Migración

1. Base de Datos Master Obligatoria

  • Mantener avantikads_nmgen como master
  • Función: Autenticación y routing de empresas
  • Acceso: Todos los usuarios se conectan primero aquí

2. Configuración Dinámica por empresaId

  • Patón confirmado: SQL_DATABASE2 . empresaId
  • Ejemplo real: avantikads_nm15 para empresaId = 15
  • Necesidad: Routing automático basado en usuario

3. Archivos de Configuración Adicionales

/base_datos/ - Esquemas de Referencia

  • avantikads_nmgen.sql - Estructura master
  • avantikads_nm15.sql - Ejemplo estructura empresa
  • Uso: Validar estructura durante migración

Actualizaciones al Plan de Migración

Configuración .env - Ajustes Necesarios

Variables de Conexión Master

# Base de datos Master (global para autenticación)
DB_MASTER_HOST=localhost
DB_MASTER_DATABASE=avantikads_nmgen
DB_MASTER_USER=admin_user
DB_MASTER_PASSWORD=secure_master_password

# Prefijo para bases de datos de empresas
DB_EMPRESA_PREFIX=avantikads_nm

Lógica de Conexión por Empresa

// Función actualizada en ejemplo-env-config.php
public static function getDatabaseConfig($empresaId) {
    $masterConfig = [
        'database' => $_ENV['DB_MASTER_DATABASE'] . '_' . $empresaId
    ];
    
    // Validar que exista la base de datos
    if (!self::validateDatabaseExists($masterConfig['database'])) {
        throw new Exception("Base de datos no existe: " . $masterConfig['database']);
    }
    
    return $masterConfig;
}

Validaciones de Migración

1. Verificación de Estructura

  • Comparar esquemas actuales con archivos en /base_datos/
  • Validar que todas las tablas requeridas existan
  • Verificar integridad de datos por empresa

2. Testing Multi-Empresa

  • Crear usuarios de prueba para diferentes empresas
  • Validar routing correcto de conexiones
  • Probar aislamiento de datos entre empresas

3. Migración Gradual

  • Iniciar con empresa 15 (tenemos su esquema)
  • Validar funcionamiento completo
  • Extender a otras empresas

Archivos de Migración Adicionales

/base_datos/ - Incluir en plan

  • Mantener como referencia durante migración
  • Usar para validación de estructura post-migración
  • Documentar esquema actual para comparación

Scripts de Migración (Sugeridos)

  • migrar_master_db.php - Migración base master
  • validar_esquemas.php - Validación contra archivos SQL
  • test_multi_empresa.php - Testing routing de conexiones

Impacto en Estimación de Tiempo

Tiempo Adicional Requerido

  • Validación de esquemas: +5-10 horas
  • Testing multi-empresa: +10-15 horas
  • Migración de datos: +8-12 horas
  • Total adicional: +23-37 horas

Estimación Actualizada: 113-162 horas

Recomendación

La estructura /base_datos/ confirma la arquitectura multi-empresa. El plan actualizado debe incluir validación específica contra estos esquemas para asegurar migración correcta.