# ============================================================================= # DATABASE INVENTORY - ERP CONSTRUCCION # ============================================================================= # Version: 1.3.0 # Ultima actualizacion: 2025-12-09 # Proposito: Inventario canonico de objetos de base de datos # Nomenclatura: Ver NAMING-CONVENTIONS.md # ============================================================================= metadata: proyecto: ERP Construccion version: 2.1.0 fecha_actualizacion: 2025-12-09 motor: PostgreSQL 15+ extensiones: [uuid-ossp, pg_trgm, btree_gist, pgcrypto, postgis] # ============================================================================= # HERENCIA DE ERP CORE # ============================================================================= herencia_core: version_core: "1.2.0" tablas_heredadas: 144 # Total de tablas del core (actualizado 2025-12-09) schemas_heredados: - auth: 26 # 10 (auth.sql) + 16 (auth-extensions.sql) - core: 12 # Partners, catálogos, monedas, UoM - financial: 15 # Contabilidad, facturas, pagos - inventory: 20 # 10 (inventory.sql) + 10 (inventory-extensions.sql) - purchase: 8 # Órdenes de compra, proveedores - sales: 10 # Órdenes de venta, clientes - projects: 10 # Proyectos, tareas, dependencias - hr: 6 # RRHH base, empleados - analytics: 7 # Centros de costo, cuentas analíticas - system: 13 # Mensajes, notificaciones, logs - billing: 11 # SaaS multi-tenant (opcional) - crm: 6 # CRM leads, opportunities (opcional) referencia: "apps/erp-core/database/ddl/" documento_herencia: "../database/HERENCIA-ERP-CORE.md" # ============================================================================= # RESUMEN DE OBJETOS (ACTUALIZADO 2025-12-09) # ============================================================================= resumen: schemas_core: 12 # Heredados de erp-core schemas_especificos: 7 # construction, hr, hse, estimates, infonavit, inventory-ext, purchase-ext tablas_heredadas: 144 # Del core (actualizado 2025-12-09) tablas_especificas: 110 # 24 construction + 8 hr + 58 hse + 8 estimates + 8 infonavit + 4 inventory + 5 purchase tablas_total: 254 # 144 + 110 enums: 89 # 22 base + 67 HSE funciones: 13 triggers: 15 rls_policies: 254 # 1 policy por tabla con tenant_id (144 core + 110 construcción) indices: 350+ estado_implementacion: database_core: "100%" # ERP Core validado con carga limpia database_construccion: "100%" # DDL completo - 7 schemas, 110 tablas backend: "5%" # Solo entidades base frontend: "2%" # Solo estructura ddl_files_core: - "erp-core/database/ddl/00-prerequisites.sql" - "erp-core/database/ddl/01-auth.sql" - "erp-core/database/ddl/01-auth-extensions.sql" - "erp-core/database/ddl/02-core.sql" - "erp-core/database/ddl/03-analytics.sql" - "erp-core/database/ddl/04-financial.sql" - "erp-core/database/ddl/05-inventory.sql" - "erp-core/database/ddl/05-inventory-extensions.sql" - "erp-core/database/ddl/06-purchase.sql" - "erp-core/database/ddl/07-sales.sql" - "erp-core/database/ddl/08-projects.sql" - "erp-core/database/ddl/09-system.sql" - "erp-core/database/ddl/10-billing.sql" - "erp-core/database/ddl/11-crm.sql" - "erp-core/database/ddl/12-hr.sql" ddl_files_extension: - schemas/01-construction-schema-ddl.sql # 24 tablas - schemas/02-hr-schema-ddl.sql # 8 tablas - schemas/03-hse-schema-ddl.sql # 58 tablas - schemas/04-estimates-schema-ddl.sql # 8 tablas - schemas/05-infonavit-schema-ddl.sql # 8 tablas - schemas/06-inventory-ext-schema-ddl.sql # 4 tablas - schemas/07-purchase-ext-schema-ddl.sql # 5 tablas # ============================================================================= # SCHEMAS - NOMENCLATURA UNIFICADA # ============================================================================= schemas: # --------------------------------------------------------------------------- # Schemas heredados de erp-core (NO MODIFICAR) # --------------------------------------------------------------------------- - nombre: auth origen: erp-core descripcion: Autenticacion JWT, sesiones tablas: 6 estado: implementado - nombre: core_tenants origen: erp-core descripcion: Multi-tenancy tablas: 8 estado: implementado - nombre: core_shared origen: erp-core descripcion: Funciones compartidas funciones: 10 estado: implementado # --------------------------------------------------------------------------- # Schemas ESPECIFICOS de construccion # --------------------------------------------------------------------------- - nombre: construction origen: construccion descripcion: Proyectos, estructura obra, avances, calidad, contratos tablas: 24 ddl: construction-schema-ddl.sql modulos: [MAI-002, MAI-003, MAI-005, MAI-009, MAI-012] estado: definido - nombre: estimates origen: construccion descripcion: Presupuestos, estimaciones, anticipos, retenciones tablas: 8 ddl: estimates-schema-ddl.sql modulos: [MAI-003, MAI-008] estado: definido - nombre: infonavit origen: construccion descripcion: Integracion INFONAVIT, RUV, derechohabientes tablas: 8 ddl: infonavit-schema-ddl.sql modulos: [MAI-010, MAI-011] estado: definido # --------------------------------------------------------------------------- # Schemas de EXTENSION (extienden ERP Core) # --------------------------------------------------------------------------- - nombre: hr origen: construccion descripcion: Extension RRHH - asistencias, destajo, cuadrillas tablas: 8 ddl: hr-ext-schema-ddl.sql modulos: [MAI-007] extiende: core.hr estado: definido - nombre: inventory origen: construccion descripcion: Extension Inventario - almacenes obra, requisiciones tablas: 4 ddl: inventory-ext-schema-ddl.sql modulos: [MAI-004] extiende: core.inventory estado: definido - nombre: purchase origen: construccion descripcion: Extension Compras - OC construccion, comparativos tablas: 5 ddl: purchase-ext-schema-ddl.sql modulos: [MAI-004] extiende: core.purchase estado: definido # ============================================================================= # TABLAS POR SCHEMA (ALINEADO CON DDL) # ============================================================================= tablas: # --------------------------------------------------------------------------- # construction (24 tablas) # --------------------------------------------------------------------------- construction: # Estructura de Proyecto (8 tablas) - nombre: fraccionamientos descripcion: Desarrollos/fraccionamientos de vivienda modulo: MAI-002 columnas: - { nombre: id, tipo: UUID, pk: true, default: gen_random_uuid() } - { nombre: tenant_id, tipo: UUID, fk: auth.tenants, nullable: false } - { nombre: code, tipo: VARCHAR(20), unique: true } - { nombre: name, tipo: VARCHAR(200), nullable: false } - { nombre: project_type, tipo: project_type_enum } - { nombre: location, tipo: GEOMETRY(Point, 4326) } - { nombre: address, tipo: TEXT } - { nombre: status, tipo: project_status_enum, default: active } - { nombre: start_date, tipo: DATE } - { nombre: estimated_end_date, tipo: DATE } - { nombre: created_at, tipo: TIMESTAMPTZ, default: CURRENT_TIMESTAMP } - { nombre: created_by, tipo: UUID, fk: auth.users } - { nombre: updated_at, tipo: TIMESTAMPTZ } - { nombre: updated_by, tipo: UUID } - { nombre: deleted_at, tipo: TIMESTAMPTZ } - { nombre: deleted_by, tipo: UUID } rls: true - nombre: etapas descripcion: Etapas de un fraccionamiento modulo: MAI-002 fk_parent: fraccionamientos rls: true - nombre: manzanas descripcion: Manzanas de una etapa (horizontal) modulo: MAI-002 fk_parent: etapas rls: true - nombre: lotes descripcion: Lotes individuales (vivienda horizontal) modulo: MAI-002 fk_parent: manzanas rls: true - nombre: torres descripcion: Torres de una etapa (vertical) modulo: MAI-002 fk_parent: etapas rls: true - nombre: niveles descripcion: Niveles de una torre modulo: MAI-002 fk_parent: torres rls: true - nombre: departamentos descripcion: Departamentos (vivienda vertical) modulo: MAI-002 fk_parent: niveles rls: true - nombre: prototipos descripcion: Catalogo de prototipos de vivienda modulo: MAI-002 rls: true # Presupuestos y Conceptos (3 tablas) - nombre: conceptos descripcion: Catalogo de conceptos de obra (APU) modulo: MAI-003 rls: true - nombre: presupuestos descripcion: Presupuestos de obra modulo: MAI-003 fk_parent: fraccionamientos rls: true - nombre: presupuesto_partidas descripcion: Partidas de presupuesto modulo: MAI-003 fk_parent: presupuestos rls: true # Programacion y Avances (5 tablas) - nombre: programa_obra descripcion: Programa general de obra modulo: MAI-005 fk_parent: fraccionamientos rls: true - nombre: programa_actividades descripcion: Actividades del programa modulo: MAI-005 fk_parent: programa_obra rls: true - nombre: avances_obra descripcion: Registro de avances de obra modulo: MAI-005 rls: true - nombre: fotos_avance descripcion: Fotos de evidencia de avance modulo: MAI-005 fk_parent: avances_obra rls: true - nombre: bitacora_obra descripcion: Entradas de bitacora de obra modulo: MAI-005 fk_parent: fraccionamientos rls: true # Calidad (5 tablas) - nombre: checklists descripcion: Plantillas de checklist modulo: MAI-009 rls: true - nombre: checklist_items descripcion: Items de checklist modulo: MAI-009 fk_parent: checklists rls: true - nombre: inspecciones descripcion: Inspecciones realizadas modulo: MAI-009 rls: true - nombre: inspeccion_resultados descripcion: Resultados de inspeccion modulo: MAI-009 fk_parent: inspecciones rls: true - nombre: tickets_postventa descripcion: Tickets de postventa/garantia modulo: MAI-009 rls: true # Contratos (3 tablas) - nombre: subcontratistas descripcion: Catalogo de subcontratistas modulo: MAI-012 rls: true - nombre: contratos descripcion: Contratos de obra/subcontrato modulo: MAI-012 fk_parent: fraccionamientos rls: true - nombre: contrato_partidas descripcion: Partidas de contrato modulo: MAI-012 fk_parent: contratos rls: true # --------------------------------------------------------------------------- # estimates (8 tablas) # --------------------------------------------------------------------------- estimates: - nombre: estimaciones descripcion: Estimaciones de obra modulo: MAI-008 columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID, nullable: false } - { nombre: fraccionamiento_id, tipo: UUID, fk: construction.fraccionamientos } - { nombre: contrato_id, tipo: UUID, fk: construction.contratos } - { nombre: numero, tipo: INTEGER } - { nombre: tipo, tipo: estimate_type_enum } - { nombre: period_start, tipo: DATE } - { nombre: period_end, tipo: DATE } - { nombre: gross_amount, tipo: DECIMAL(16,2) } - { nombre: deductions, tipo: DECIMAL(16,2) } - { nombre: net_amount, tipo: DECIMAL(16,2), computed: true } - { nombre: status, tipo: estimate_status_enum } rls: true - nombre: estimacion_conceptos descripcion: Detalle conceptos de estimacion modulo: MAI-008 fk_parent: estimaciones rls: true - nombre: generadores descripcion: Numeros generadores modulo: MAI-008 fk_parent: estimacion_conceptos rls: true - nombre: anticipos descripcion: Anticipos de obra modulo: MAI-008 fk_parent: contratos rls: true - nombre: amortizaciones descripcion: Amortizaciones de anticipos modulo: MAI-008 fk_parent: anticipos rls: true - nombre: retenciones descripcion: Retenciones (garantia, IMSS, ISR) modulo: MAI-008 fk_parent: estimaciones rls: true - nombre: fondo_garantia descripcion: Fondo de garantia modulo: MAI-008 fk_parent: contratos rls: true - nombre: estimacion_workflow descripcion: Historial workflow de estimacion modulo: MAI-008 fk_parent: estimaciones rls: true # --------------------------------------------------------------------------- # infonavit (8 tablas) # --------------------------------------------------------------------------- infonavit: - nombre: registro_infonavit descripcion: Registro de obra ante INFONAVIT (RUV) modulo: MAI-011 fk_parent: construction.fraccionamientos rls: true - nombre: oferta_vivienda descripcion: Oferta de vivienda registrada modulo: MAI-011 rls: true - nombre: derechohabientes descripcion: Derechohabientes INFONAVIT modulo: MAI-010 columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID } - { nombre: nss, tipo: VARCHAR(11) } - { nombre: curp, tipo: VARCHAR(18) } - { nombre: nombre_completo, tipo: VARCHAR(200) } - { nombre: puntos_infonavit, tipo: INTEGER } - { nombre: monto_credito, tipo: DECIMAL(14,2) } - { nombre: status, tipo: beneficiary_status_enum } rls: true - nombre: asignacion_vivienda descripcion: Asignacion derechohabiente-vivienda modulo: MAI-011 rls: true - nombre: actas descripcion: Actas de entrega modulo: MAI-011 rls: true - nombre: acta_viviendas descripcion: Viviendas incluidas en acta modulo: MAI-011 fk_parent: actas rls: true - nombre: reportes_infonavit descripcion: Reportes enviados a INFONAVIT modulo: MAI-011 rls: true - nombre: historico_puntos descripcion: Historico puntos ecologicos modulo: MAI-011 rls: true # --------------------------------------------------------------------------- # hr - Extension (8 tablas) # --------------------------------------------------------------------------- hr: - nombre: employee_construction descripcion: Extension de empleados para construccion modulo: MAI-007 extiende: core.hr.employees columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID } - { nombre: employee_id, tipo: UUID, fk: core.hr.employees } - { nombre: worker_type, tipo: worker_type_enum } - { nombre: subcontratista_id, tipo: UUID, fk: construction.subcontratistas } - { nombre: nss, tipo: VARCHAR(15) } - { nombre: stps_dc3_number, tipo: VARCHAR(50) } - { nombre: default_fraccionamiento_id, tipo: UUID } - { nombre: specialty, tipo: VARCHAR(100) } rls: true - nombre: asistencias descripcion: Registro de asistencias con GPS/biometrico modulo: MAI-007 columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID } - { nombre: employee_id, tipo: UUID } - { nombre: fraccionamiento_id, tipo: UUID } - { nombre: attendance_date, tipo: DATE } - { nombre: attendance_type, tipo: attendance_type_construction_enum } - { nombre: check_in_time, tipo: TIMESTAMP } - { nombre: check_out_time, tipo: TIMESTAMP } - { nombre: worked_hours, tipo: DECIMAL(4,2), computed: true } - { nombre: check_in_location, tipo: GEOMETRY(Point, 4326) } - { nombre: check_out_location, tipo: GEOMETRY(Point, 4326) } - { nombre: is_valid, tipo: BOOLEAN } rls: true - nombre: asistencia_biometrico descripcion: Registros biometricos modulo: MAI-007 fk_parent: asistencias rls: true - nombre: geocercas descripcion: Geocercas para validacion GPS modulo: MAI-007 columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID } - { nombre: fraccionamiento_id, tipo: UUID } - { nombre: name, tipo: VARCHAR(100) } - { nombre: polygon, tipo: GEOMETRY(Polygon, 4326) } - { nombre: radius_meters, tipo: DECIMAL(8,2) } - { nombre: is_active, tipo: BOOLEAN } rls: true - nombre: destajo descripcion: Trabajo a destajo/precio unitario modulo: MAI-007 rls: true - nombre: destajo_detalle descripcion: Detalle de mediciones de destajo modulo: MAI-007 fk_parent: destajo rls: true - nombre: cuadrillas descripcion: Cuadrillas de trabajo modulo: MAI-007 rls: true - nombre: cuadrilla_miembros descripcion: Miembros de cuadrillas modulo: MAI-007 fk_parent: cuadrillas rls: true # --------------------------------------------------------------------------- # inventory - Extension (4 tablas) # --------------------------------------------------------------------------- inventory: - nombre: almacenes_proyecto descripcion: Almacenes por proyecto de construccion modulo: MAI-004 extiende: core.inventory.warehouses rls: true - nombre: requisiciones_obra descripcion: Requisiciones de material desde obra modulo: MAI-004 rls: true - nombre: requisicion_lineas descripcion: Lineas de requisicion de obra modulo: MAI-004 fk_parent: requisiciones_obra rls: true - nombre: consumos_obra descripcion: Consumos de materiales por obra/lote modulo: MAI-004 rls: true # --------------------------------------------------------------------------- # purchase - Extension (5 tablas) # --------------------------------------------------------------------------- purchase: - nombre: purchase_order_construction descripcion: Extension OC para construccion modulo: MAI-004 extiende: core.purchase.purchase_orders rls: true - nombre: supplier_construction descripcion: Extension proveedores para construccion modulo: MAI-004 extiende: core.purchase.suppliers columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID } - { nombre: supplier_id, tipo: UUID, fk: core.purchase.suppliers } - { nombre: is_materials_supplier, tipo: BOOLEAN } - { nombre: is_services_supplier, tipo: BOOLEAN } - { nombre: is_equipment_supplier, tipo: BOOLEAN } - { nombre: specialties, tipo: TEXT[] } - { nombre: quality_rating, tipo: DECIMAL(3,2) } - { nombre: delivery_rating, tipo: DECIMAL(3,2) } - { nombre: price_rating, tipo: DECIMAL(3,2) } - { nombre: overall_rating, tipo: DECIMAL(3,2), computed: true } rls: true - nombre: comparativo_cotizaciones descripcion: Cuadro comparativo de cotizaciones modulo: MAI-004 rls: true - nombre: comparativo_proveedores descripcion: Proveedores participantes en comparativo modulo: MAI-004 fk_parent: comparativo_cotizaciones rls: true - nombre: comparativo_productos descripcion: Productos cotizados por proveedor modulo: MAI-004 fk_parent: comparativo_proveedores rls: true # --------------------------------------------------------------------------- # hse - Seguridad HSE (58 tablas) - IMPLEMENTADO # --------------------------------------------------------------------------- hse: # RF-MAA017-001: Gestion de Incidentes (5 tablas) - nombre: incidentes descripcion: Registro de incidentes y accidentes modulo: MAA-017 rf: RF-MAA017-001 rls: true columnas: - { nombre: id, tipo: UUID, pk: true } - { nombre: tenant_id, tipo: UUID, fk: core.tenants } - { nombre: folio, tipo: VARCHAR(20), unique: true } - { nombre: fecha_hora, tipo: TIMESTAMPTZ } - { nombre: fraccionamiento_id, tipo: UUID, fk: construction.fraccionamientos } - { nombre: ubicacion_geo, tipo: GEOMETRY(Point, 4326) } - { nombre: tipo, tipo: tipo_incidente } - { nombre: gravedad, tipo: gravedad_incidente } - { nombre: estado, tipo: estado_incidente } - nombre: incidente_involucrados descripcion: Personas involucradas en incidente modulo: MAA-017 rf: RF-MAA017-001 fk_parent: incidentes rls: false - nombre: incidente_investigacion descripcion: Investigacion del incidente modulo: MAA-017 rf: RF-MAA017-001 fk_parent: incidentes rls: false - nombre: incidente_acciones descripcion: Acciones correctivas modulo: MAA-017 rf: RF-MAA017-001 fk_parent: incidentes rls: false - nombre: incidente_evidencias descripcion: Fotos y evidencias modulo: MAA-017 rf: RF-MAA017-001 fk_parent: incidentes rls: false # RF-MAA017-002: Control de Capacitaciones (6 tablas) - nombre: capacitaciones descripcion: Catalogo de capacitaciones modulo: MAA-017 rf: RF-MAA017-002 rls: true - nombre: capacitacion_matriz descripcion: Matriz capacitacion por puesto modulo: MAA-017 rf: RF-MAA017-002 rls: true - nombre: instructores descripcion: Instructores internos/externos modulo: MAA-017 rf: RF-MAA017-002 rls: true - nombre: capacitacion_sesiones descripcion: Sesiones programadas modulo: MAA-017 rf: RF-MAA017-002 rls: true - nombre: capacitacion_asistentes descripcion: Asistencia a sesiones modulo: MAA-017 rf: RF-MAA017-002 fk_parent: capacitacion_sesiones rls: false - nombre: constancias_dc3 descripcion: Constancias STPS DC-3 modulo: MAA-017 rf: RF-MAA017-002 rls: true # RF-MAA017-003: Inspecciones de Seguridad (7 tablas) - nombre: tipos_inspeccion descripcion: Tipos de inspeccion modulo: MAA-017 rf: RF-MAA017-003 rls: true - nombre: checklist_items descripcion: Items de checklist modulo: MAA-017 rf: RF-MAA017-003 fk_parent: tipos_inspeccion rls: false - nombre: programa_inspecciones descripcion: Programa de inspecciones modulo: MAA-017 rf: RF-MAA017-003 rls: true - nombre: inspecciones descripcion: Inspecciones ejecutadas modulo: MAA-017 rf: RF-MAA017-003 rls: true - nombre: inspeccion_evaluaciones descripcion: Evaluacion de items modulo: MAA-017 rf: RF-MAA017-003 fk_parent: inspecciones rls: false - nombre: hallazgos descripcion: Hallazgos detectados modulo: MAA-017 rf: RF-MAA017-003 rls: true - nombre: hallazgo_evidencias descripcion: Evidencias de hallazgos modulo: MAA-017 rf: RF-MAA017-003 fk_parent: hallazgos rls: false # RF-MAA017-004: Control de EPP (7 tablas) - nombre: epp_catalogo descripcion: Catalogo de EPP modulo: MAA-017 rf: RF-MAA017-004 rls: true - nombre: epp_matriz_puesto descripcion: EPP requerido por puesto modulo: MAA-017 rf: RF-MAA017-004 rls: true - nombre: epp_asignaciones descripcion: EPP asignado a trabajadores modulo: MAA-017 rf: RF-MAA017-004 rls: true - nombre: epp_inspecciones descripcion: Inspecciones de EPP modulo: MAA-017 rf: RF-MAA017-004 fk_parent: epp_asignaciones rls: false - nombre: epp_bajas descripcion: Bajas de EPP modulo: MAA-017 rf: RF-MAA017-004 fk_parent: epp_asignaciones rls: false - nombre: epp_inventario descripcion: Inventario de EPP modulo: MAA-017 rf: RF-MAA017-004 rls: true - nombre: epp_movimientos descripcion: Movimientos de inventario EPP modulo: MAA-017 rf: RF-MAA017-004 rls: true # RF-MAA017-005: Cumplimiento STPS (11 tablas) - nombre: normas_stps descripcion: Catalogo normas STPS modulo: MAA-017 rf: RF-MAA017-005 rls: false seed_data: true - nombre: norma_requisitos descripcion: Requisitos por norma modulo: MAA-017 rf: RF-MAA017-005 fk_parent: normas_stps rls: false - nombre: cumplimiento_obra descripcion: Estado cumplimiento por obra modulo: MAA-017 rf: RF-MAA017-005 rls: true - nombre: comision_seguridad descripcion: Comisiones de seguridad e higiene modulo: MAA-017 rf: RF-MAA017-005 rls: true - nombre: comision_integrantes descripcion: Integrantes de comision modulo: MAA-017 rf: RF-MAA017-005 fk_parent: comision_seguridad rls: false - nombre: comision_recorridos descripcion: Recorridos de comision modulo: MAA-017 rf: RF-MAA017-005 fk_parent: comision_seguridad rls: false - nombre: programa_seguridad descripcion: Programa anual de seguridad modulo: MAA-017 rf: RF-MAA017-005 rls: true - nombre: programa_actividades descripcion: Actividades del programa modulo: MAA-017 rf: RF-MAA017-005 fk_parent: programa_seguridad rls: false - nombre: documentos_stps descripcion: Documentos STPS emitidos modulo: MAA-017 rf: RF-MAA017-005 rls: true - nombre: auditorias descripcion: Auditorias HSE modulo: MAA-017 rf: RF-MAA017-005 rls: true # RF-MAA017-006: Gestion Ambiental (9 tablas) - nombre: residuos_catalogo descripcion: Catalogo de residuos modulo: MAA-017 rf: RF-MAA017-006 rls: false seed_data: true - nombre: residuos_generacion descripcion: Registro generacion residuos modulo: MAA-017 rf: RF-MAA017-006 rls: true - nombre: almacen_temporal descripcion: Almacenes temporales de residuos modulo: MAA-017 rf: RF-MAA017-006 rls: true - nombre: proveedores_ambientales descripcion: Proveedores ambientales autorizados modulo: MAA-017 rf: RF-MAA017-006 rls: true - nombre: manifiestos_residuos descripcion: Manifiestos de residuos peligrosos modulo: MAA-017 rf: RF-MAA017-006 rls: true - nombre: manifiesto_detalle descripcion: Detalle de manifiestos modulo: MAA-017 rf: RF-MAA017-006 fk_parent: manifiestos_residuos rls: false - nombre: impacto_ambiental descripcion: Matriz de impacto ambiental modulo: MAA-017 rf: RF-MAA017-006 rls: true - nombre: quejas_ambientales descripcion: Quejas ambientales recibidas modulo: MAA-017 rf: RF-MAA017-006 rls: true # RF-MAA017-007: Permisos de Trabajo (8 tablas) - nombre: tipos_permiso_trabajo descripcion: Tipos de permiso de trabajo modulo: MAA-017 rf: RF-MAA017-007 rls: true - nombre: permisos_trabajo descripcion: Permisos de trabajo de alto riesgo modulo: MAA-017 rf: RF-MAA017-007 rls: true - nombre: permiso_personal descripcion: Personal asignado a permiso modulo: MAA-017 rf: RF-MAA017-007 fk_parent: permisos_trabajo rls: false - nombre: permiso_autorizaciones descripcion: Autorizaciones de permiso modulo: MAA-017 rf: RF-MAA017-007 fk_parent: permisos_trabajo rls: false - nombre: permiso_checklist descripcion: Checklist pre/durante/post trabajo modulo: MAA-017 rf: RF-MAA017-007 fk_parent: permisos_trabajo rls: false - nombre: permiso_monitoreos descripcion: Monitoreos durante ejecucion modulo: MAA-017 rf: RF-MAA017-007 fk_parent: permisos_trabajo rls: false - nombre: permiso_eventos descripcion: Eventos del permiso modulo: MAA-017 rf: RF-MAA017-007 fk_parent: permisos_trabajo rls: false - nombre: permiso_documentos descripcion: Documentos adjuntos modulo: MAA-017 rf: RF-MAA017-007 fk_parent: permisos_trabajo rls: false # RF-MAA017-008: Indicadores HSE (7 tablas) - nombre: indicadores_config descripcion: Configuracion de indicadores modulo: MAA-017 rf: RF-MAA017-008 rls: true - nombre: indicadores_meta_obra descripcion: Metas por obra modulo: MAA-017 rf: RF-MAA017-008 rls: false - nombre: indicadores_valores descripcion: Valores calculados modulo: MAA-017 rf: RF-MAA017-008 rls: true - nombre: horas_trabajadas descripcion: Horas hombre por obra modulo: MAA-017 rf: RF-MAA017-008 rls: true - nombre: dias_sin_accidente descripcion: Contador dias sin accidente modulo: MAA-017 rf: RF-MAA017-008 rls: true - nombre: reportes_programados descripcion: Reportes programados HSE modulo: MAA-017 rf: RF-MAA017-008 rls: true - nombre: alertas_indicadores descripcion: Alertas de indicadores modulo: MAA-017 rf: RF-MAA017-008 rls: true # ============================================================================= # ENUMS # ============================================================================= enums: # Proyectos - nombre: project_type_enum schema: construction valores: [horizontal, vertical, mixed] - nombre: project_status_enum schema: construction valores: [planning, active, paused, completed, cancelled] - nombre: stage_status_enum schema: construction valores: [pending, in_progress, completed] - nombre: unit_status_enum schema: construction valores: [available, reserved, sold, under_construction, delivered] - nombre: housing_type_enum schema: construction valores: [house, apartment, duplex, townhouse] # Presupuestos y Estimaciones - nombre: budget_status_enum schema: estimates valores: [draft, approved, active, closed] - nombre: estimate_type_enum schema: estimates valores: [client, subcontractor, piece_rate] - nombre: estimate_status_enum schema: estimates valores: [draft, in_review, observations, approved, invoiced, paid, cancelled] # Control de Obra - nombre: logbook_type_enum schema: construction valores: [progress, incident, weather, visit, general] - nombre: checklist_status_enum schema: construction valores: [pending, in_progress, approved, rejected] # RRHH - nombre: worker_type_enum schema: hr valores: [permanent, temporary, subcontract, piece_rate] - nombre: attendance_type_construction_enum schema: hr valores: [manual, biometric, gps, qr_code] - nombre: destajo_status_enum schema: hr valores: [pending, measured, approved, paid] # Compras - nombre: requisition_status_enum schema: inventory valores: [draft, submitted, approved, partially_served, served, cancelled] - nombre: warehouse_type_construction_enum schema: inventory valores: [central, obra, temporal, transito] # INFONAVIT - nombre: beneficiary_status_enum schema: infonavit valores: [prospect, qualified, assigned, delivered] - nombre: cofinavit_program_enum schema: infonavit valores: [tradicional, total, infonavit_fovissste, apoyo_infonavit] # HSE - Seguridad (67 ENUMs) # Incidentes - nombre: tipo_incidente schema: hse valores: [accidente, incidente, casi_accidente] - nombre: gravedad_incidente schema: hse valores: [leve, moderado, grave, fatal] - nombre: estado_incidente schema: hse valores: [abierto, en_investigacion, cerrado] - nombre: rol_involucrado schema: hse valores: [lesionado, testigo, responsable] - nombre: factor_causa schema: hse valores: [acto_inseguro, condicion_insegura] # Capacitaciones - nombre: tipo_capacitacion schema: hse valores: [induccion, especifica, certificacion, reentrenamiento] - nombre: estado_sesion schema: hse valores: [programada, en_curso, completada, cancelada] # Inspecciones - nombre: frecuencia schema: hse valores: [diaria, semanal, quincenal, mensual, eventual] - nombre: estado_inspeccion schema: hse valores: [programada, en_progreso, completada, cancelada, vencida] - nombre: resultado_evaluacion schema: hse valores: [cumple, no_cumple, no_aplica] - nombre: gravedad_hallazgo schema: hse valores: [critico, mayor, menor] - nombre: estado_hallazgo schema: hse valores: [abierto, en_correccion, verificando, cerrado, reabierto] - nombre: tipo_evidencia schema: hse valores: [hallazgo, correccion] # EPP - nombre: categoria_epp schema: hse valores: [cabeza, ojos, auditiva, respiratoria, manos, pies, caidas, ropa] - nombre: estado_epp schema: hse valores: [activo, vencido, danado, perdido, devuelto] - nombre: estado_inspeccion_epp schema: hse valores: [bueno, regular, malo, danado] - nombre: motivo_baja_epp schema: hse valores: [vencimiento, danado, perdido, terminacion_laboral] - nombre: tipo_movimiento_epp schema: hse valores: [entrada, salida, transferencia, ajuste] # STPS - nombre: estado_comision schema: hse valores: [activa, vencida, renovada] - nombre: rol_comision schema: hse valores: [presidente, secretario, vocal_patronal, vocal_trabajador] - nombre: representacion schema: hse valores: [patronal, trabajadores] - nombre: estado_recorrido schema: hse valores: [programado, realizado, cancelado, pendiente] - nombre: estado_programa schema: hse valores: [borrador, activo, finalizado] - nombre: tipo_actividad_programa schema: hse valores: [capacitacion, inspeccion, simulacro, campana, otro] - nombre: estado_actividad schema: hse valores: [pendiente, en_progreso, completada, cancelada] - nombre: tipo_documento_stps schema: hse valores: [dc1, dc2, dc3, dc4, st7, st9] - nombre: tipo_auditoria schema: hse valores: [interna, simulada, stps, cliente, certificadora] - nombre: resultado_auditoria schema: hse valores: [aprobada, aprobada_observaciones, no_aprobada] - nombre: estado_cumplimiento schema: hse valores: [cumple, parcial, no_cumple, no_aplica] # Ambiental - nombre: categoria_residuo schema: hse valores: [peligroso, manejo_especial, urbano] - nombre: unidad_residuo schema: hse valores: [kg, litros, m3, piezas] - nombre: estado_residuo schema: hse valores: [almacenado, en_transito, dispuesto] - nombre: estado_almacen schema: hse valores: [operativo, lleno, mantenimiento] - nombre: tipo_proveedor_ambiental schema: hse valores: [transportista, reciclador, confinamiento] - nombre: estado_manifiesto schema: hse valores: [emitido, en_transito, entregado, cerrado] - nombre: tipo_impacto schema: hse valores: [ruido, polvo, vibraciones, agua, emision, vegetacion, otro] - nombre: severidad schema: hse valores: [bajo, medio, alto] - nombre: probabilidad schema: hse valores: [baja, media, alta] - nombre: nivel_riesgo schema: hse valores: [tolerable, moderado, significativo] - nombre: estado_impacto schema: hse valores: [identificado, mitigando, controlado] - nombre: origen_queja schema: hse valores: [vecino, autoridad, interno, anonimo] - nombre: tipo_queja schema: hse valores: [ruido, polvo, olores, agua, otro] - nombre: estado_queja schema: hse valores: [recibida, atendiendo, cerrada] # Permisos de trabajo - nombre: estado_permiso schema: hse valores: [borrador, solicitado, aprobado_parcial, autorizado, en_ejecucion, suspendido, cerrado, rechazado, vencido] - nombre: rol_permiso schema: hse valores: [ejecutor, supervisor, vigia, operador, senalero] - nombre: decision_autorizacion schema: hse valores: [aprobado, rechazado] - nombre: momento_checklist schema: hse valores: [pre_trabajo, durante, post_trabajo] - nombre: tipo_evento_permiso schema: hse valores: [inicio, suspension, reanudacion, extension, anomalia, cierre] # Indicadores - nombre: tipo_indicador schema: hse valores: [reactivo, proactivo, ambiental] - nombre: frecuencia_calculo schema: hse valores: [diario, semanal, mensual] - nombre: periodo_tipo schema: hse valores: [diario, semanal, mensual, anual] - nombre: estado_semaforo schema: hse valores: [verde, amarillo, rojo] - nombre: fuente_horas schema: hse valores: [asistencia, manual] - nombre: tipo_reporte_hse schema: hse valores: [semanal, mensual, trimestral, anual] - nombre: formato_reporte schema: hse valores: [pdf, excel, ambos] - nombre: tipo_alerta_indicador schema: hse valores: [meta_superada, tendencia_negativa, sin_datos] # ============================================================================= # FUNCIONES # ============================================================================= funciones: core_shared: - nombre: set_updated_at() descripcion: Trigger para actualizar updated_at trigger: BEFORE UPDATE - nombre: audit_log_changes() descripcion: Log de auditoria trigger: AFTER INSERT/UPDATE/DELETE - nombre: validate_rfc() descripcion: Validacion RFC mexicano parametros: [rfc VARCHAR] retorna: BOOLEAN - nombre: generate_code() descripcion: Generacion de codigos secuenciales parametros: [prefix VARCHAR, sequence_name VARCHAR] retorna: VARCHAR - nombre: calculate_working_days() descripcion: Calcula dias habiles entre fechas parametros: [start_date DATE, end_date DATE] retorna: INTEGER - nombre: get_current_tenant_id() descripcion: Obtiene tenant_id de session retorna: UUID - nombre: validate_tenant_access() descripcion: Valida acceso del usuario al tenant parametros: [user_id UUID, tenant_id UUID] retorna: BOOLEAN - nombre: log_user_action() descripcion: Log de acciones de usuario trigger: AFTER INSERT/UPDATE/DELETE estimates: - nombre: calculate_estimate_totals() descripcion: Calcula totales de estimacion parametros: [estimate_id UUID] retorna: RECORD - nombre: update_advance_amortization() descripcion: Actualiza amortizacion de anticipos trigger: AFTER INSERT ON estimaciones hr: - nombre: validate_attendance_location() descripcion: Valida ubicacion dentro de geocerca parametros: [location GEOMETRY, fraccionamiento_id UUID] retorna: BOOLEAN construction: - nombre: calculate_unit_progress() descripcion: Calcula avance de unidad parametros: [unit_id UUID, unit_type VARCHAR] retorna: DECIMAL # ============================================================================= # RLS POLICIES (template) # ============================================================================= rls_template: descripcion: Todas las tablas tienen policy de tenant isolation funcion: get_current_tenant_id() policy_standard: nombre: tenant_isolation operacion: ALL using: tenant_id = get_current_tenant_id() with_check: tenant_id = get_current_tenant_id() # ============================================================================= # INDICES ESPECIALES # ============================================================================= indices_especiales: postgis: - tabla: construction.fraccionamientos columna: location tipo: GIST - tabla: hr.asistencias columna: check_in_location tipo: GIST - tabla: hr.asistencias columna: check_out_location tipo: GIST - tabla: hr.geocercas columna: polygon tipo: GIST trigram: - tabla: construction.fraccionamientos columna: name tipo: GIN usando: pg_trgm - tabla: infonavit.derechohabientes columna: nombre_completo tipo: GIN usando: pg_trgm # ============================================================================= # NOMENCLATURA DEPRECADA (NO USAR) # ============================================================================= schemas_deprecados: - project_management: "usar 'construction'" - financial_management: "usar 'estimates'" - hr_management: "usar 'hr'" - purchasing_management: "usar 'purchase'" - construction_management: "usar 'construction'" - quality_management: "integrado en 'construction'" - contract_management: "integrado en 'construction'" - crm_management: "integrado en 'infonavit'" - infonavit_management: "usar 'infonavit'" - assets_management: "usar 'assets' (pendiente)" - documents_management: "usar 'documents' (pendiente)" # ============================================================================= # VALIDACION DDL (2025-12-09) # ============================================================================= validacion_ddl: fecha: "2025-12-09" estado: "✅ COMPLETO - 7 schemas, 110 tablas" total_archivos_ddl: 7 archivos_ddl: - archivo: "schemas/01-construction-schema-ddl.sql" tablas: 24 estado: "implementado" - archivo: "schemas/02-hr-schema-ddl.sql" tablas: 8 estado: "implementado" - archivo: "schemas/03-hse-schema-ddl.sql" tablas: 58 estado: "implementado" - archivo: "schemas/04-estimates-schema-ddl.sql" tablas: 8 estado: "implementado" - archivo: "schemas/05-infonavit-schema-ddl.sql" tablas: 8 estado: "implementado" - archivo: "schemas/06-inventory-ext-schema-ddl.sql" tablas: 4 estado: "implementado" - archivo: "schemas/07-purchase-ext-schema-ddl.sql" tablas: 5 estado: "implementado" alineacion_erp_core: rls_variable: "app.current_tenant_id" fk_tenants: "auth.tenants" fk_users: "auth.users" prerequisitos_verificados: true verificaciones_prerequisitos: - "DDL verifica existencia de auth.tenants" - "DDL verifica existencia de auth.users" - "DDL verifica existencia de schemas dependientes" - "ERP-Core debe estar instalado antes de ejecutar DDL" compatible_erp_core: true # ============================================================================= # METADATA # ============================================================================= metadata: creado_por: Requirements-Analyst fecha_creacion: 2025-12-06 ultima_actualizacion: 2025-12-09 version_documento: 1.3.0 cambios_version: - "1.3.0: DDL completo - 7 schemas, 110 tablas (2025-12-09)" - "1.3.0: Nuevos DDL: estimates, infonavit, inventory-ext, purchase-ext" - "1.3.0: Variable RLS corregida a app.current_tenant_id" - "1.2.0: Validacion DDL - 50 FK corregidas a auth.* (2025-12-08)" - "1.1.0: Nomenclatura unificada segun NAMING-CONVENTIONS.md"