# Database - ERP Construccion **Stack:** PostgreSQL 15+ con PostGIS **Version:** 2.0.0 **Fecha:** 2026-02-03 **Dependencia:** erp-core (auth, core schemas) --- ## Descripcion Base de datos del ERP de construccion. Extiende erp-core con schemas especializados para gestion de obras, estimaciones, INFONAVIT, HSE y mas. **Schemas principales (actuales):** - `construction` - Proyectos, fraccionamientos, avances (24 tablas) - `estimates` - Presupuestos, estimaciones, generadores (8 tablas) - `infonavit` - Integracion INFONAVIT (8 tablas) - `hse` - Seguridad, salud y ambiente (58 tablas) - `hr` - Extension RRHH para construccion - `inventory` - Extension almacen de obra - `purchase` - Extension compras por proyecto - `finance` - Contabilidad construccion (11 tablas) - `assets` - Equipos y maquinaria (11 tablas) - `documents` - Gestion documental (11 tablas) **Total:** 10 schemas, 143 tablas, 115 ENUMs --- ## Estructura ``` database/ ├── DDL-EXECUTION-ORDER.md # Orden de ejecucion (LEER PRIMERO) ├── README.md # Este archivo ├── HERENCIA-ERP-CORE.md # Relacion con erp-core ├── _MAP.md # Mapa completo de la BD ├── VALIDACION-DDL-INVENTARIOS.md # Validaciones ├── drop-and-recreate-database.sh # Script recrear BD ├── validate-clean-load-policy.sh # Validar politica carga limpia ├── init-scripts/ │ ├── 01-init-database.sql # Extensiones, funciones, schemas base │ └── 02-payment-terminals.sql # Terminales de pago └── schemas/ ├── 01-construction-schema-ddl.sql # construction (24 tablas) ├── 02-hr-schema-ddl.sql # hr extension ├── 03-hse-schema-ddl.sql # hse (58 tablas, 67 ENUMs) ├── 04-estimates-schema-ddl.sql # estimates (8 tablas) ├── 05-infonavit-schema-ddl.sql # infonavit (8 tablas) ├── 06-inventory-ext-schema-ddl.sql # inventory extension ├── 07-purchase-ext-schema-ddl.sql # purchase extension ├── 08-finance-schema-ddl.sql # finance (11 tablas) ├── 09-assets-schema-ddl.sql # assets (11 tablas) ├── 10-documents-schema-ddl.sql # documents (11 tablas) └── 99-rls-policies.sql # Politicas RLS ``` --- ## Dependencias **IMPORTANTE:** Este proyecto depende de erp-core. Antes de ejecutar los DDL de construccion: 1. El schema `auth` debe existir con las tablas `tenants` y `users` 2. Ver `DDL-EXECUTION-ORDER.md` para orden de ejecucion completo --- ## Setup Inicial ### Opcion A: Recrear BD Completa (Recomendado) ```bash # Desde Windows PowerShell - ejecuta en WSL wsl -d Ubuntu-24.04 -u developer -- bash '/mnt/c/Empresas/ISEM/workspace-v2/projects/erp-construccion/database/drop-and-recreate-database.sh' ``` ### Opcion B: Ejecutar DDL Manualmente ```bash # Variables de conexion export PGHOST=localhost export PGPORT=5432 export PGDATABASE=erp_construccion_db export PGUSER=erp_admin export PGPASSWORD=erp_dev_2026 # Ruta base desde WSL BASE="/mnt/c/Empresas/ISEM/workspace-v2/projects/erp-construccion/database" # 1. Inicializacion psql -f "$BASE/init-scripts/01-init-database.sql" # 2. Schemas en orden psql -f "$BASE/schemas/01-construction-schema-ddl.sql" psql -f "$BASE/schemas/02-hr-schema-ddl.sql" psql -f "$BASE/schemas/03-hse-schema-ddl.sql" psql -f "$BASE/schemas/04-estimates-schema-ddl.sql" psql -f "$BASE/schemas/05-infonavit-schema-ddl.sql" psql -f "$BASE/schemas/06-inventory-ext-schema-ddl.sql" psql -f "$BASE/schemas/07-purchase-ext-schema-ddl.sql" psql -f "$BASE/schemas/08-finance-schema-ddl.sql" psql -f "$BASE/schemas/09-assets-schema-ddl.sql" psql -f "$BASE/schemas/10-documents-schema-ddl.sql" psql -f "$BASE/schemas/99-rls-policies.sql" ``` --- ## Scripts Disponibles | Script | Descripcion | |--------|-------------| | `drop-and-recreate-database.sh` | Elimina y recrea la BD completa | | `validate-clean-load-policy.sh` | Valida politica de carga limpia | --- ## Convenciones ### Nomenclatura Actual - Schemas: `snake_case` (sin sufijo `_management`) - Tablas: `snake_case` plural - Columnas: `snake_case` singular - Indices: `idx_{tabla}_{columnas}` - Constraints: `chk_{tabla}_{condicion}`, `uq_{tabla}_{columnas}` ### Schemas Legacy (Deprecados) Los siguientes schemas existen para compatibilidad pero NO deben usarse: - `auth_management` -> Usar `auth` - `project_management` -> Usar `construction` - `financial_management` -> Usar `estimates` - Ver `DDL-EXECUTION-ORDER.md` para lista completa --- ## Validacion ### Verificar Schemas ```sql SELECT schema_name FROM information_schema.schemata WHERE schema_name IN ( 'auth', 'core', 'construction', 'estimates', 'infonavit', 'hse', 'hr', 'inventory', 'purchase', 'finance', 'assets', 'documents' ) ORDER BY schema_name; ``` ### Contar Tablas por Schema ```sql SELECT table_schema, COUNT(*) as table_count FROM information_schema.tables WHERE table_schema IN ( 'construction', 'estimates', 'infonavit', 'hse', 'hr', 'inventory', 'purchase', 'finance', 'assets', 'documents' ) GROUP BY table_schema ORDER BY table_count DESC; ``` ### Verificar Tablas Core Requeridas ```sql -- Estas tablas deben existir antes de ejecutar DDL de construccion SELECT EXISTS ( SELECT 1 FROM pg_tables WHERE schemaname = 'auth' AND tablename = 'tenants' ) AS tenants_exists, EXISTS ( SELECT 1 FROM pg_tables WHERE schemaname = 'auth' AND tablename = 'users' ) AS users_exists; ``` --- ## Referencias - `DDL-EXECUTION-ORDER.md` - Orden de ejecucion y dependencias - `HERENCIA-ERP-CORE.md` - Relacion con erp-core - `_MAP.md` - Mapa completo de la BD - `VALIDACION-DDL-INVENTARIOS.md` - Validaciones de inventario - `../../CLAUDE.md` - Instrucciones del proyecto --- ## Variables de Entorno ```bash # Desarrollo local (WSL) DB_HOST=localhost DB_PORT=5432 DB_NAME=erp_construccion_db DB_USER=erp_admin DB_PASSWORD=erp_dev_2026 # Connection string DATABASE_URL=postgresql://erp_admin:erp_dev_2026@localhost:5432/erp_construccion_db ``` --- ## Credenciales de Desarrollo | Variable | Valor | |----------|-------| | Database | erp_construccion_db | | User | erp_admin | | Password | erp_dev_2026 | | Host | localhost | | Port | 5432 | --- *Documentacion actualizada: 2026-02-03*