"use strict"; /** * Database Constants - SSOT (Single Source of Truth) * * IMPORTANTE: Este archivo es la UNICA fuente de verdad para nombres de * schemas, tablas y columnas. Cualquier hardcoding sera detectado por * el script validate-constants-usage.ts * * @module @shared/constants/database */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TABLE_REFS = exports.DB_COLUMNS = exports.DB_TABLES = exports.DB_SCHEMAS = void 0; exports.getFullTableName = getFullTableName; /** * Database Schemas * Todos los schemas de la base de datos PostgreSQL */ exports.DB_SCHEMAS = { // Auth & Core AUTH: 'auth', CORE: 'core', // Domain Schemas CONSTRUCTION: 'construction', HR: 'hr', HSE: 'hse', ESTIMATES: 'estimates', INFONAVIT: 'infonavit', INVENTORY: 'inventory', PURCHASE: 'purchase', // System Schemas FINANCIAL: 'financial', ANALYTICS: 'analytics', AUDIT: 'audit', SYSTEM: 'system', }; /** * Database Tables organized by Schema */ exports.DB_TABLES = { // Auth Schema [exports.DB_SCHEMAS.AUTH]: { USERS: 'users', ROLES: 'roles', PERMISSIONS: 'permissions', ROLE_PERMISSIONS: 'role_permissions', USER_ROLES: 'user_roles', SESSIONS: 'sessions', REFRESH_TOKENS: 'refresh_tokens', TENANTS: 'tenants', TENANT_USERS: 'tenant_users', PASSWORD_RESETS: 'password_resets', }, // Core Schema [exports.DB_SCHEMAS.CORE]: { COMPANIES: 'companies', PARTNERS: 'partners', CURRENCIES: 'currencies', COUNTRIES: 'countries', STATES: 'states', CITIES: 'cities', UOM: 'units_of_measure', UOM_CATEGORIES: 'uom_categories', SEQUENCES: 'sequences', ATTACHMENTS: 'attachments', }, // Construction Schema (24 tables) [exports.DB_SCHEMAS.CONSTRUCTION]: { // Project Structure (8) PROYECTOS: 'proyectos', FRACCIONAMIENTOS: 'fraccionamientos', ETAPAS: 'etapas', MANZANAS: 'manzanas', LOTES: 'lotes', TORRES: 'torres', NIVELES: 'niveles', DEPARTAMENTOS: 'departamentos', PROTOTIPOS: 'prototipos', // Budget & Concepts (3) CONCEPTOS: 'conceptos', PRESUPUESTOS: 'presupuestos', PRESUPUESTO_PARTIDAS: 'presupuesto_partidas', // Schedule & Progress (5) PROGRAMA_OBRA: 'programa_obra', PROGRAMA_ACTIVIDADES: 'programa_actividades', AVANCES_OBRA: 'avances_obra', FOTOS_AVANCE: 'fotos_avance', BITACORA_OBRA: 'bitacora_obra', // Quality (5) CHECKLISTS: 'checklists', CHECKLIST_ITEMS: 'checklist_items', INSPECCIONES: 'inspecciones', INSPECCION_RESULTADOS: 'inspeccion_resultados', TICKETS_POSTVENTA: 'tickets_postventa', // Contracts (3) SUBCONTRATISTAS: 'subcontratistas', CONTRATOS: 'contratos', CONTRATO_PARTIDAS: 'contrato_partidas', }, // HR Schema (8 tables) [exports.DB_SCHEMAS.HR]: { EMPLOYEES: 'employees', EMPLOYEE_CONSTRUCTION: 'employee_construction', PUESTOS: 'puestos', ASISTENCIAS: 'asistencias', ASISTENCIA_BIOMETRICO: 'asistencia_biometrico', GEOCERCAS: 'geocercas', DESTAJO: 'destajo', DESTAJO_DETALLE: 'destajo_detalle', CUADRILLAS: 'cuadrillas', CUADRILLA_MIEMBROS: 'cuadrilla_miembros', EMPLOYEE_FRACCIONAMIENTOS: 'employee_fraccionamientos', }, // HSE Schema (58 tables - main groups) [exports.DB_SCHEMAS.HSE]: { // Incidents (5) INCIDENTES: 'incidentes', INCIDENTE_INVOLUCRADOS: 'incidente_involucrados', INCIDENTE_ACCIONES: 'incidente_acciones', INCIDENTE_EVIDENCIAS: 'incidente_evidencias', INCIDENTE_CAUSAS: 'incidente_causas', // Training (6) CAPACITACIONES: 'capacitaciones', CAPACITACION_PARTICIPANTES: 'capacitacion_participantes', CAPACITACION_MATERIALES: 'capacitacion_materiales', CERTIFICACIONES: 'certificaciones', CERTIFICACION_EMPLEADOS: 'certificacion_empleados', PLAN_CAPACITACION: 'plan_capacitacion', // Inspections (7) INSPECCIONES_SEGURIDAD: 'inspecciones_seguridad', INSPECCION_HALLAZGOS: 'inspeccion_hallazgos', CHECKLIST_SEGURIDAD: 'checklist_seguridad', CHECKLIST_SEGURIDAD_ITEMS: 'checklist_seguridad_items', AREAS_RIESGO: 'areas_riesgo', RONDAS_SEGURIDAD: 'rondas_seguridad', RONDA_PUNTOS: 'ronda_puntos', // EPP (7) EPP_CATALOGO: 'epp_catalogo', EPP_ASIGNACIONES: 'epp_asignaciones', EPP_ENTREGAS: 'epp_entregas', EPP_DEVOLUCIONES: 'epp_devoluciones', EPP_INSPECCIONES: 'epp_inspecciones', EPP_VIDA_UTIL: 'epp_vida_util', EPP_STOCK: 'epp_stock', // STPS Compliance (11) NORMAS_STPS: 'normas_stps', REQUISITOS_NORMA: 'requisitos_norma', CUMPLIMIENTO_NORMA: 'cumplimiento_norma', AUDITORIAS_STPS: 'auditorias_stps', AUDITORIA_HALLAZGOS: 'auditoria_hallazgos', PLANES_ACCION: 'planes_accion', ACCIONES_CORRECTIVAS: 'acciones_correctivas', COMISION_SEGURIDAD: 'comision_seguridad', COMISION_MIEMBROS: 'comision_miembros', RECORRIDOS_COMISION: 'recorridos_comision', ACTAS_COMISION: 'actas_comision', // Environmental (9) IMPACTOS_AMBIENTALES: 'impactos_ambientales', RESIDUOS: 'residuos', RESIDUO_MOVIMIENTOS: 'residuo_movimientos', MANIFIESTOS_RESIDUOS: 'manifiestos_residuos', MONITOREO_AMBIENTAL: 'monitoreo_ambiental', PERMISOS_AMBIENTALES: 'permisos_ambientales', PROGRAMAS_AMBIENTALES: 'programas_ambientales', INDICADORES_AMBIENTALES: 'indicadores_ambientales', EVENTOS_AMBIENTALES: 'eventos_ambientales', // Work Permits (8) PERMISOS_TRABAJO: 'permisos_trabajo', PERMISO_RIESGOS: 'permiso_riesgos', PERMISO_AUTORIZACIONES: 'permiso_autorizaciones', PERMISOS_ALTURA: 'permisos_altura', PERMISOS_CALIENTE: 'permisos_caliente', PERMISOS_CONFINADO: 'permisos_confinado', PERMISOS_ELECTRICO: 'permisos_electrico', PERMISOS_EXCAVACION: 'permisos_excavacion', // KPIs (7) KPI_CONFIGURACION: 'kpi_configuracion', KPI_VALORES: 'kpi_valores', KPI_METAS: 'kpi_metas', DASHBOARDS_HSE: 'dashboards_hse', ALERTAS_HSE: 'alertas_hse', REPORTES_HSE: 'reportes_hse', ESTADISTICAS_PERIODO: 'estadisticas_periodo', }, // Estimates Schema (8 tables) [exports.DB_SCHEMAS.ESTIMATES]: { ESTIMACIONES: 'estimaciones', ESTIMACION_CONCEPTOS: 'estimacion_conceptos', GENERADORES: 'generadores', ANTICIPOS: 'anticipos', AMORTIZACIONES: 'amortizaciones', RETENCIONES: 'retenciones', FONDO_GARANTIA: 'fondo_garantia', ESTIMACION_WORKFLOW: 'estimacion_workflow', }, // INFONAVIT Schema (8 tables) [exports.DB_SCHEMAS.INFONAVIT]: { REGISTRO_INFONAVIT: 'registro_infonavit', OFERTA_VIVIENDA: 'oferta_vivienda', DERECHOHABIENTES: 'derechohabientes', ASIGNACION_VIVIENDA: 'asignacion_vivienda', ACTAS: 'actas', ACTA_VIVIENDAS: 'acta_viviendas', REPORTES_INFONAVIT: 'reportes_infonavit', HISTORICO_PUNTOS: 'historico_puntos', }, // Inventory Extension Schema (4 tables) [exports.DB_SCHEMAS.INVENTORY]: { ALMACENES_PROYECTO: 'almacenes_proyecto', REQUISICIONES_OBRA: 'requisiciones_obra', REQUISICION_LINEAS: 'requisicion_lineas', CONSUMOS_OBRA: 'consumos_obra', // Base tables (reference) PRODUCTS: 'products', LOCATIONS: 'locations', STOCK_MOVES: 'stock_moves', STOCK_QUANTS: 'stock_quants', }, // Purchase Extension Schema (5 tables) [exports.DB_SCHEMAS.PURCHASE]: { PURCHASE_ORDER_CONSTRUCTION: 'purchase_order_construction', SUPPLIER_CONSTRUCTION: 'supplier_construction', COMPARATIVO_COTIZACIONES: 'comparativo_cotizaciones', COMPARATIVO_PROVEEDORES: 'comparativo_proveedores', COMPARATIVO_PRODUCTOS: 'comparativo_productos', // Base tables (reference) PURCHASE_ORDERS: 'purchase_orders', PURCHASE_ORDER_LINES: 'purchase_order_lines', SUPPLIERS: 'suppliers', }, // Audit Schema [exports.DB_SCHEMAS.AUDIT]: { AUDIT_LOG: 'audit_log', CHANGE_HISTORY: 'change_history', USER_ACTIVITY: 'user_activity', }, }; /** * Common Column Names (to avoid hardcoding) */ exports.DB_COLUMNS = { // Audit columns ID: 'id', CREATED_AT: 'created_at', UPDATED_AT: 'updated_at', CREATED_BY: 'created_by', UPDATED_BY: 'updated_by', DELETED_AT: 'deleted_at', // Multi-tenant columns TENANT_ID: 'tenant_id', // Common FK columns USER_ID: 'user_id', PROJECT_ID: 'proyecto_id', FRACCIONAMIENTO_ID: 'fraccionamiento_id', EMPLOYEE_ID: 'employee_id', // Status columns STATUS: 'status', IS_ACTIVE: 'is_active', // Analytic columns (Odoo pattern) ANALYTIC_ACCOUNT_ID: 'analytic_account_id', }; /** * Helper function to get full table name */ function getFullTableName(schema, table) { return `${schema}.${table}`; } /** * Get schema.table reference */ exports.TABLE_REFS = { // Auth USERS: getFullTableName(exports.DB_SCHEMAS.AUTH, exports.DB_TABLES[exports.DB_SCHEMAS.AUTH].USERS), TENANTS: getFullTableName(exports.DB_SCHEMAS.AUTH, exports.DB_TABLES[exports.DB_SCHEMAS.AUTH].TENANTS), ROLES: getFullTableName(exports.DB_SCHEMAS.AUTH, exports.DB_TABLES[exports.DB_SCHEMAS.AUTH].ROLES), // Construction PROYECTOS: getFullTableName(exports.DB_SCHEMAS.CONSTRUCTION, exports.DB_TABLES[exports.DB_SCHEMAS.CONSTRUCTION].PROYECTOS), FRACCIONAMIENTOS: getFullTableName(exports.DB_SCHEMAS.CONSTRUCTION, exports.DB_TABLES[exports.DB_SCHEMAS.CONSTRUCTION].FRACCIONAMIENTOS), // HR EMPLOYEES: getFullTableName(exports.DB_SCHEMAS.HR, exports.DB_TABLES[exports.DB_SCHEMAS.HR].EMPLOYEES), // HSE INCIDENTES: getFullTableName(exports.DB_SCHEMAS.HSE, exports.DB_TABLES[exports.DB_SCHEMAS.HSE].INCIDENTES), CAPACITACIONES: getFullTableName(exports.DB_SCHEMAS.HSE, exports.DB_TABLES[exports.DB_SCHEMAS.HSE].CAPACITACIONES), }; //# sourceMappingURL=database.constants.js.map