erp-construccion/orchestration/inventarios/DATABASE_INVENTORY.yml

1483 lines
43 KiB
YAML

# =============================================================================
# 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"