284 lines
10 KiB
JavaScript
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
|