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