- Create DDL-EXECUTION-ORDER.md with schema dependencies - Document execution order for erp-core + erp-construccion - Add WSL commands for database recreation - Update README.md with current schema counts (10 schemas, 143 tables, 115 ENUMs) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
222 lines
6.2 KiB
Markdown
222 lines
6.2 KiB
Markdown
# 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*
|