erp-construccion-backend/dist/shared/constants/database.constants.js

284 lines
10 KiB
JavaScript

"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