614 lines
19 KiB
YAML
614 lines
19 KiB
YAML
# =============================================================================
|
|
# INVENTARIO DE OBJETOS DE BASE DE DATOS - ERP CONSTRUCCION
|
|
# =============================================================================
|
|
# Fecha: 2025-11-24
|
|
# Version: 1.0.0
|
|
# Basado en: ADR-007, ADR-012
|
|
# DBMS: PostgreSQL 15+ con PostGIS
|
|
# =============================================================================
|
|
|
|
metadata:
|
|
proyecto: ERP Construccion
|
|
version: 1.0.0
|
|
fecha_actualizacion: 2025-11-24
|
|
responsable: Architecture-Analyst
|
|
total_schemas: 8
|
|
total_tablas: 67
|
|
total_enums: 22
|
|
total_funciones: 6
|
|
total_triggers: 5
|
|
total_policies: 47
|
|
|
|
# =============================================================================
|
|
# SCHEMAS
|
|
# =============================================================================
|
|
schemas:
|
|
- name: auth
|
|
tipo: generico
|
|
origen: ERP-Generico
|
|
descripcion: Autenticacion, usuarios, roles, permisos
|
|
modulos: [MAI-001, MAI-013]
|
|
|
|
- name: core
|
|
tipo: generico
|
|
origen: ERP-Generico
|
|
descripcion: Datos maestros, catalogos, partners
|
|
modulos: [MAI-001]
|
|
|
|
- name: construction
|
|
tipo: especifico
|
|
origen: ERP-Construccion
|
|
descripcion: Obras, proyectos, lotes, prototipos, avances
|
|
modulos: [MAI-002, MAI-003, MAI-005, MAI-009, MAI-012]
|
|
|
|
- name: estimates
|
|
tipo: especifico
|
|
origen: ERP-Construccion
|
|
descripcion: Estimaciones, anticipos, retenciones
|
|
modulos: [MAI-008]
|
|
|
|
- name: infonavit
|
|
tipo: especifico
|
|
origen: ERP-Construccion
|
|
descripcion: Cumplimiento INFONAVIT, derechohabientes
|
|
modulos: [MAI-010, MAI-011]
|
|
|
|
- name: inventory
|
|
tipo: generico_ext
|
|
origen: ERP-Generico + Extension
|
|
descripcion: Inventarios con extensiones de obra
|
|
modulos: [MAI-004]
|
|
|
|
- name: purchase
|
|
tipo: generico_ext
|
|
origen: ERP-Generico + Extension
|
|
descripcion: Compras con extensiones de obra
|
|
modulos: [MAI-004]
|
|
|
|
- name: hr
|
|
tipo: generico_ext
|
|
origen: ERP-Generico + Extension
|
|
descripcion: RRHH con asistencias GPS y destajo
|
|
modulos: [MAI-007]
|
|
|
|
# =============================================================================
|
|
# TABLAS POR SCHEMA
|
|
# =============================================================================
|
|
tablas:
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SCHEMA: construction (25 tablas)
|
|
# ---------------------------------------------------------------------------
|
|
construction:
|
|
- nombre: fraccionamientos
|
|
modulo: MAI-002
|
|
descripcion: Desarrollos inmobiliarios/fraccionamientos
|
|
campos_clave: [id, tenant_id, code, name, status]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: etapas
|
|
modulo: MAI-002
|
|
descripcion: Etapas/fases de un fraccionamiento
|
|
campos_clave: [id, tenant_id, fraccionamiento_id, code, status]
|
|
rls: true
|
|
|
|
- nombre: manzanas
|
|
modulo: MAI-002
|
|
descripcion: Manzanas dentro de una etapa
|
|
campos_clave: [id, tenant_id, etapa_id, code]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: lotes
|
|
modulo: MAI-002
|
|
descripcion: Lotes/terrenos vendibles (horizontal)
|
|
campos_clave: [id, tenant_id, manzana_id, prototipo_id, code, status]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: torres
|
|
modulo: MAI-002
|
|
descripcion: Torres/edificios (vertical)
|
|
campos_clave: [id, tenant_id, etapa_id, code, status]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: niveles
|
|
modulo: MAI-002
|
|
descripcion: Pisos de una torre
|
|
campos_clave: [id, tenant_id, torre_id, floor_number]
|
|
rls: true
|
|
|
|
- nombre: departamentos
|
|
modulo: MAI-002
|
|
descripcion: Departamentos/unidades en torre
|
|
campos_clave: [id, tenant_id, nivel_id, prototipo_id, code, status]
|
|
rls: true
|
|
|
|
- nombre: prototipos
|
|
modulo: MAI-002
|
|
descripcion: Tipos de vivienda/prototipos
|
|
campos_clave: [id, tenant_id, code, name, type]
|
|
rls: true
|
|
|
|
- nombre: conceptos
|
|
modulo: MAI-003
|
|
descripcion: Catalogo de conceptos de obra
|
|
campos_clave: [id, tenant_id, code, name, parent_id, unit_price]
|
|
rls: true
|
|
|
|
- nombre: presupuestos
|
|
modulo: MAI-003
|
|
descripcion: Presupuestos por prototipo u obra
|
|
campos_clave: [id, tenant_id, code, fraccionamiento_id, prototipo_id, version]
|
|
rls: true
|
|
|
|
- nombre: presupuesto_partidas
|
|
modulo: MAI-003
|
|
descripcion: Lineas de presupuesto
|
|
campos_clave: [id, tenant_id, presupuesto_id, concepto_id, quantity, unit_price]
|
|
rls: true
|
|
|
|
- nombre: programa_obra
|
|
modulo: MAI-005
|
|
descripcion: Programa maestro de obra
|
|
campos_clave: [id, tenant_id, fraccionamiento_id, code, version]
|
|
rls: true
|
|
|
|
- nombre: programa_actividades
|
|
modulo: MAI-005
|
|
descripcion: Actividades del programa
|
|
campos_clave: [id, tenant_id, programa_id, concepto_id, wbs_code]
|
|
rls: true
|
|
|
|
- nombre: avances_obra
|
|
modulo: MAI-005
|
|
descripcion: Captura de avances fisicos
|
|
campos_clave: [id, tenant_id, lote_id, concepto_id, capture_date, status]
|
|
rls: true
|
|
|
|
- nombre: fotos_avance
|
|
modulo: MAI-005
|
|
descripcion: Evidencia fotografica de avances
|
|
campos_clave: [id, tenant_id, avance_id, file_url]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: bitacora_obra
|
|
modulo: MAI-005
|
|
descripcion: Bitacora diaria de obra
|
|
campos_clave: [id, tenant_id, fraccionamiento_id, entry_date, entry_number]
|
|
rls: true
|
|
|
|
- nombre: checklists
|
|
modulo: MAI-009
|
|
descripcion: Plantillas de verificacion de calidad
|
|
campos_clave: [id, tenant_id, code, name, prototipo_id]
|
|
rls: true
|
|
|
|
- nombre: checklist_items
|
|
modulo: MAI-009
|
|
descripcion: Items del checklist
|
|
campos_clave: [id, tenant_id, checklist_id, sequence, name]
|
|
rls: true
|
|
|
|
- nombre: inspecciones
|
|
modulo: MAI-009
|
|
descripcion: Inspecciones de calidad
|
|
campos_clave: [id, tenant_id, checklist_id, lote_id, status]
|
|
rls: true
|
|
|
|
- nombre: inspeccion_resultados
|
|
modulo: MAI-009
|
|
descripcion: Resultados de inspeccion por item
|
|
campos_clave: [id, tenant_id, inspeccion_id, checklist_item_id, is_passed]
|
|
rls: true
|
|
|
|
- nombre: tickets_postventa
|
|
modulo: MAI-009
|
|
descripcion: Tickets de garantia/postventa
|
|
campos_clave: [id, tenant_id, ticket_number, lote_id, status]
|
|
rls: true
|
|
|
|
- nombre: subcontratistas
|
|
modulo: MAI-012
|
|
descripcion: Catalogo de subcontratistas
|
|
campos_clave: [id, tenant_id, code, name, specialty]
|
|
rls: true
|
|
|
|
- nombre: contratos
|
|
modulo: MAI-012
|
|
descripcion: Contratos con subcontratistas
|
|
campos_clave: [id, tenant_id, contract_number, subcontratista_id, status]
|
|
rls: true
|
|
|
|
- nombre: contrato_partidas
|
|
modulo: MAI-012
|
|
descripcion: Lineas del contrato
|
|
campos_clave: [id, tenant_id, contrato_id, concepto_id, quantity, unit_price]
|
|
rls: true
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SCHEMA: estimates (8 tablas)
|
|
# ---------------------------------------------------------------------------
|
|
estimates:
|
|
- nombre: estimaciones
|
|
modulo: MAI-008
|
|
descripcion: Estimaciones de obra periodicas
|
|
campos_clave: [id, tenant_id, estimate_number, contrato_id, status]
|
|
rls: true
|
|
|
|
- nombre: estimacion_conceptos
|
|
modulo: MAI-008
|
|
descripcion: Lineas de concepto por estimacion
|
|
campos_clave: [id, tenant_id, estimacion_id, concepto_id, quantity_current]
|
|
rls: true
|
|
|
|
- nombre: generadores
|
|
modulo: MAI-008
|
|
descripcion: Generadores de cantidades
|
|
campos_clave: [id, tenant_id, estimacion_concepto_id, generator_number, quantity]
|
|
rls: true
|
|
|
|
- nombre: anticipos
|
|
modulo: MAI-008
|
|
descripcion: Anticipos otorgados a subcontratistas
|
|
campos_clave: [id, tenant_id, advance_number, contrato_id, net_amount]
|
|
rls: true
|
|
|
|
- nombre: amortizaciones
|
|
modulo: MAI-008
|
|
descripcion: Amortizaciones de anticipos
|
|
campos_clave: [id, tenant_id, anticipo_id, estimacion_id, amount]
|
|
rls: true
|
|
|
|
- nombre: retenciones
|
|
modulo: MAI-008
|
|
descripcion: Retenciones aplicadas
|
|
campos_clave: [id, tenant_id, estimacion_id, retention_type, amount]
|
|
rls: true
|
|
|
|
- nombre: fondo_garantia
|
|
modulo: MAI-008
|
|
descripcion: Fondo de garantia por contrato
|
|
campos_clave: [id, tenant_id, contrato_id, accumulated_amount]
|
|
rls: true
|
|
|
|
- nombre: estimacion_workflow
|
|
modulo: MAI-008
|
|
descripcion: Historial de workflow de estimaciones
|
|
campos_clave: [id, tenant_id, estimacion_id, from_status, to_status, action]
|
|
rls: true
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SCHEMA: infonavit (8 tablas)
|
|
# ---------------------------------------------------------------------------
|
|
infonavit:
|
|
- nombre: registro_infonavit
|
|
modulo: MAI-011
|
|
descripcion: Registro del constructor ante INFONAVIT
|
|
campos_clave: [id, tenant_id, registro_number, company_id]
|
|
rls: true
|
|
|
|
- nombre: oferta_vivienda
|
|
modulo: MAI-011
|
|
descripcion: Oferta de viviendas ante INFONAVIT
|
|
campos_clave: [id, tenant_id, oferta_number, fraccionamiento_id, status]
|
|
rls: true
|
|
|
|
- nombre: derechohabientes
|
|
modulo: MAI-010
|
|
descripcion: Derechohabientes INFONAVIT/compradores
|
|
campos_clave: [id, tenant_id, nss, full_name, status, credit_type]
|
|
rls: true
|
|
|
|
- nombre: asignacion_vivienda
|
|
modulo: MAI-010
|
|
descripcion: Asignacion de vivienda a derechohabiente
|
|
campos_clave: [id, tenant_id, derechohabiente_id, lote_id, status]
|
|
rls: true
|
|
|
|
- nombre: actas
|
|
modulo: MAI-011
|
|
descripcion: Actas oficiales INFONAVIT
|
|
campos_clave: [id, tenant_id, acta_number, acta_type, status]
|
|
rls: true
|
|
|
|
- nombre: acta_viviendas
|
|
modulo: MAI-011
|
|
descripcion: Viviendas incluidas en acta
|
|
campos_clave: [id, tenant_id, acta_id, lote_id]
|
|
rls: true
|
|
|
|
- nombre: reportes_infonavit
|
|
modulo: MAI-011
|
|
descripcion: Reportes periodicos a INFONAVIT
|
|
campos_clave: [id, tenant_id, report_number, report_type, status]
|
|
rls: true
|
|
|
|
- nombre: historico_puntos
|
|
modulo: MAI-010
|
|
descripcion: Historico de puntos INFONAVIT
|
|
campos_clave: [id, tenant_id, derechohabiente_id, query_date, puntos]
|
|
rls: true
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SCHEMA: inventory (EXTENSIONES - 4 tablas)
|
|
# ---------------------------------------------------------------------------
|
|
inventory_ext:
|
|
- nombre: almacenes_proyecto
|
|
modulo: MAI-004
|
|
descripcion: Almacenes por proyecto de construccion
|
|
campos_clave: [id, tenant_id, warehouse_id, fraccionamiento_id, warehouse_type]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: requisiciones_obra
|
|
modulo: MAI-004
|
|
descripcion: Requisiciones de material desde obra
|
|
campos_clave: [id, tenant_id, requisition_number, fraccionamiento_id, status]
|
|
rls: true
|
|
|
|
- nombre: requisicion_lineas
|
|
modulo: MAI-004
|
|
descripcion: Lineas de requisicion de obra
|
|
campos_clave: [id, tenant_id, requisicion_id, product_id, quantity_requested]
|
|
rls: true
|
|
|
|
- nombre: consumos_obra
|
|
modulo: MAI-004
|
|
descripcion: Consumos de materiales por obra/lote
|
|
campos_clave: [id, tenant_id, fraccionamiento_id, lote_id, product_id, quantity]
|
|
rls: true
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SCHEMA: purchase (EXTENSIONES - 5 tablas)
|
|
# ---------------------------------------------------------------------------
|
|
purchase_ext:
|
|
- nombre: purchase_order_construction
|
|
modulo: MAI-004
|
|
descripcion: Extension de OC para construccion
|
|
campos_clave: [id, tenant_id, purchase_order_id, fraccionamiento_id]
|
|
rls: true
|
|
|
|
- nombre: supplier_construction
|
|
modulo: MAI-004
|
|
descripcion: Extension de proveedores para construccion
|
|
campos_clave: [id, tenant_id, supplier_id, specialties, overall_rating]
|
|
rls: true
|
|
|
|
- nombre: comparativo_cotizaciones
|
|
modulo: MAI-004
|
|
descripcion: Cuadro comparativo de cotizaciones
|
|
campos_clave: [id, tenant_id, code, requisicion_id, status]
|
|
rls: true
|
|
|
|
- nombre: comparativo_proveedores
|
|
modulo: MAI-004
|
|
descripcion: Proveedores en comparativo
|
|
campos_clave: [id, tenant_id, comparativo_id, supplier_id, total_amount]
|
|
rls: true
|
|
|
|
- nombre: comparativo_productos
|
|
modulo: MAI-004
|
|
descripcion: Productos cotizados por proveedor
|
|
campos_clave: [id, tenant_id, comparativo_proveedor_id, product_id, unit_price]
|
|
rls: true
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# SCHEMA: hr (EXTENSIONES - 8 tablas)
|
|
# ---------------------------------------------------------------------------
|
|
hr_ext:
|
|
- nombre: employee_construction
|
|
modulo: MAI-007
|
|
descripcion: Extension de empleados para construccion
|
|
campos_clave: [id, tenant_id, employee_id, worker_type, specialty]
|
|
rls: true
|
|
|
|
- nombre: asistencias
|
|
modulo: MAI-007
|
|
descripcion: Registro de asistencia con GPS/biometrico
|
|
campos_clave: [id, tenant_id, employee_id, attendance_date, attendance_type]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: asistencia_biometrico
|
|
modulo: MAI-007
|
|
descripcion: Detalles de registro biometrico
|
|
campos_clave: [id, tenant_id, asistencia_id, device_id, biometric_type]
|
|
rls: true
|
|
|
|
- nombre: geocercas
|
|
modulo: MAI-007
|
|
descripcion: Geocercas para validacion de ubicacion
|
|
campos_clave: [id, tenant_id, fraccionamiento_id, name, polygon]
|
|
rls: true
|
|
postgis: true
|
|
|
|
- nombre: destajo
|
|
modulo: MAI-007
|
|
descripcion: Trabajo a destajo/precio unitario
|
|
campos_clave: [id, tenant_id, employee_id, concepto_id, quantity_measured, status]
|
|
rls: true
|
|
|
|
- nombre: destajo_detalle
|
|
modulo: MAI-007
|
|
descripcion: Detalle de mediciones de destajo
|
|
campos_clave: [id, tenant_id, destajo_id, description, quantity]
|
|
rls: true
|
|
|
|
- nombre: cuadrillas
|
|
modulo: MAI-007
|
|
descripcion: Cuadrillas de trabajo
|
|
campos_clave: [id, tenant_id, fraccionamiento_id, code, name, leader_id]
|
|
rls: true
|
|
|
|
- nombre: cuadrilla_miembros
|
|
modulo: MAI-007
|
|
descripcion: Miembros de cuadrillas
|
|
campos_clave: [id, tenant_id, cuadrilla_id, employee_id, role]
|
|
rls: true
|
|
|
|
# =============================================================================
|
|
# ENUMs / TYPES
|
|
# =============================================================================
|
|
enums:
|
|
# Construction
|
|
- schema: construction
|
|
name: project_status
|
|
values: [draft, planning, in_progress, paused, completed, cancelled]
|
|
|
|
- schema: construction
|
|
name: lot_status
|
|
values: [available, reserved, sold, under_construction, delivered, warranty]
|
|
|
|
- schema: construction
|
|
name: prototype_type
|
|
values: [horizontal, vertical, commercial, mixed]
|
|
|
|
- schema: construction
|
|
name: advance_status
|
|
values: [pending, captured, reviewed, approved, rejected]
|
|
|
|
- schema: construction
|
|
name: quality_status
|
|
values: [pending, in_review, approved, rejected, rework]
|
|
|
|
- schema: construction
|
|
name: contract_type
|
|
values: [fixed_price, unit_price, cost_plus, mixed]
|
|
|
|
- schema: construction
|
|
name: contract_status
|
|
values: [draft, pending_approval, active, suspended, terminated, closed]
|
|
|
|
# Estimates
|
|
- schema: estimates
|
|
name: estimate_status
|
|
values: [draft, submitted, reviewed, approved, invoiced, paid, rejected, cancelled]
|
|
|
|
- schema: estimates
|
|
name: advance_type
|
|
values: [initial, progress, materials]
|
|
|
|
- schema: estimates
|
|
name: retention_type
|
|
values: [guarantee, tax, penalty, other]
|
|
|
|
- schema: estimates
|
|
name: generator_status
|
|
values: [draft, in_progress, completed, approved]
|
|
|
|
# Infonavit
|
|
- schema: infonavit
|
|
name: derechohabiente_status
|
|
values: [prospect, pre_qualified, qualified, assigned, in_process, owner, cancelled]
|
|
|
|
- schema: infonavit
|
|
name: credit_type
|
|
values: [infonavit_tradicional, infonavit_total, cofinavit, mejoravit, fovissste, fovissste_infonavit, bank_credit, cash]
|
|
|
|
- schema: infonavit
|
|
name: acta_type
|
|
values: [inicio_obra, verificacion_avance, entrega_recepcion, conclusion_obra, liberacion_vivienda]
|
|
|
|
- schema: infonavit
|
|
name: acta_status
|
|
values: [draft, pending, signed, submitted, approved, rejected, cancelled]
|
|
|
|
- schema: infonavit
|
|
name: report_type
|
|
values: [avance_fisico, avance_financiero, inventario_viviendas, asignaciones, escrituraciones, cartera_vencida]
|
|
|
|
# Inventory Extensions
|
|
- schema: inventory
|
|
name: warehouse_type_construction
|
|
values: [central, obra, temporal, transito]
|
|
|
|
- schema: inventory
|
|
name: requisition_status
|
|
values: [draft, submitted, approved, partially_served, served, cancelled]
|
|
|
|
# HR Extensions
|
|
- schema: hr
|
|
name: attendance_type_construction
|
|
values: [manual, biometric, gps, qr_code]
|
|
|
|
- schema: hr
|
|
name: worker_type
|
|
values: [permanent, temporary, subcontract, piece_rate]
|
|
|
|
- schema: hr
|
|
name: destajo_status
|
|
values: [pending, measured, approved, paid]
|
|
|
|
# =============================================================================
|
|
# FUNCIONES
|
|
# =============================================================================
|
|
funciones:
|
|
- schema: estimates
|
|
name: calculate_estimate_totals
|
|
parametros: [p_estimacion_id UUID]
|
|
retorno: VOID
|
|
descripcion: Recalcula los totales de una estimacion
|
|
|
|
- schema: estimates
|
|
name: update_advance_amortization
|
|
parametros: []
|
|
retorno: TRIGGER
|
|
descripcion: Actualiza amortizacion de anticipo
|
|
|
|
- schema: hr
|
|
name: validate_attendance_location
|
|
parametros: [p_location GEOMETRY, p_fraccionamiento_id UUID]
|
|
retorno: BOOLEAN
|
|
descripcion: Valida si ubicacion esta dentro de geocercas
|
|
|
|
# =============================================================================
|
|
# TRIGGERS
|
|
# =============================================================================
|
|
triggers:
|
|
- schema: estimates
|
|
name: trg_update_advance_amortization
|
|
tabla: amortizaciones
|
|
eventos: [INSERT, UPDATE, DELETE]
|
|
funcion: update_advance_amortization
|
|
|
|
# =============================================================================
|
|
# VISTAS
|
|
# =============================================================================
|
|
vistas: []
|
|
# Pendiente: Definir vistas en sprints posteriores
|
|
|
|
# =============================================================================
|
|
# ESTADISTICAS
|
|
# =============================================================================
|
|
estadisticas:
|
|
por_schema:
|
|
construction: 25
|
|
estimates: 8
|
|
infonavit: 8
|
|
inventory_ext: 4
|
|
purchase_ext: 5
|
|
hr_ext: 8
|
|
|
|
por_modulo:
|
|
MAI-002: 8 # Proyectos y Estructura
|
|
MAI-003: 3 # Presupuestos y Costos
|
|
MAI-004: 9 # Compras e Inventarios
|
|
MAI-005: 6 # Control de Obra
|
|
MAI-007: 8 # RRHH y Asistencias
|
|
MAI-008: 8 # Estimaciones
|
|
MAI-009: 5 # Calidad y Postventa
|
|
MAI-010: 3 # CRM Derechohabientes
|
|
MAI-011: 5 # INFONAVIT
|
|
MAI-012: 3 # Contratos
|
|
|
|
tablas_con_postgis: 7
|
|
tablas_con_rls: 58
|
|
|
|
# =============================================================================
|
|
# FIN DEL INVENTARIO
|
|
# =============================================================================
|