workspace-v1/projects/erp-construccion/database/README.md
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

4.4 KiB

Database - MVP Sistema Administración de Obra

Stack: PostgreSQL 15+ con PostGIS Versión: 1.0.0 Fecha: 2025-11-20


📋 DESCRIPCIÓN

Base de datos del sistema de administración de obra e INFONAVIT.

Schemas principales:

  • auth_management - Autenticación y usuarios
  • project_management - Proyectos y estructura de obra
  • financial_management - Presupuestos y control financiero
  • purchasing_management - Compras e inventarios
  • construction_management - Control de obra y avances
  • quality_management - Calidad y postventa
  • infonavit_management - Integración INFONAVIT

🏗️ ESTRUCTURA

ddl/
├── 00-init.sql                    # Inicialización + extensiones
└── schemas/                       # Schemas por contexto
    ├── auth_management/
    │   ├── tables/               # Tablas (01-users.sql, 02-roles.sql, ...)
    │   ├── functions/            # Funciones SQL
    │   ├── triggers/             # Triggers
    │   └── views/                # Vistas
    ├── project_management/
    │   └── ...
    └── [otros schemas]/

seeds/
├── dev/                          # Datos de desarrollo
└── prod/                         # Datos de producción inicial

migrations/                       # Migraciones versionadas
scripts/                          # Scripts de utilidad

🚀 SETUP INICIAL

1. Crear Base de Datos

# Ejecutar script de creación
cd scripts
./create-database.sh

2. Ejecutar DDL

# Ejecutar inicialización
psql $DATABASE_URL -f ddl/00-init.sql

# Ejecutar schemas (en orden)
psql $DATABASE_URL -f ddl/schemas/auth_management/tables/01-users.sql
# ... etc

3. Cargar Seeds (desarrollo)

psql $DATABASE_URL -f seeds/dev/01-users.sql
psql $DATABASE_URL -f seeds/dev/02-projects.sql

🔧 SCRIPTS DISPONIBLES

Script Descripción
create-database.sh Crea la base de datos desde cero
reset-database.sh Elimina y recrea la base de datos
run-migrations.sh Ejecuta migraciones pendientes
backup-database.sh Crea backup de la base de datos

📊 CONVENCIONES

Nomenclatura

Seguir ESTANDARES-NOMENCLATURA.md:

  • Schemas: snake_case + sufijo _management
  • Tablas: snake_case plural
  • Columnas: snake_case singular
  • Índices: idx_{tabla}_{columnas}
  • Foreign Keys: fk_{origen}_to_{destino}
  • Constraints: chk_{tabla}_{columna}

Estructura de Archivo DDL

-- ============================================================================
-- Tabla: nombre_tabla
-- Schema: nombre_schema
-- Descripción: [descripción]
-- Autor: Database-Agent
-- Fecha: YYYY-MM-DD
-- ============================================================================

DROP TABLE IF EXISTS schema.tabla CASCADE;

CREATE TABLE schema.tabla (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    -- columnas...
    created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

COMMENT ON TABLE schema.tabla IS '[descripción]';
COMMENT ON COLUMN schema.tabla.columna IS '[descripción]';

CREATE INDEX idx_tabla_columna ON schema.tabla(columna);

🔍 VALIDACIÓN

Verificar Schemas

SELECT schema_name
FROM information_schema.schemata
WHERE schema_name LIKE '%_management';

Verificar Tablas

SELECT table_schema, table_name,
       (SELECT COUNT(*) FROM information_schema.columns
        WHERE table_schema = t.table_schema
        AND table_name = t.table_name) as column_count
FROM information_schema.tables t
WHERE table_schema LIKE '%_management'
ORDER BY table_schema, table_name;

Verificar Índices

SELECT tablename, indexname
FROM pg_indexes
WHERE schemaname LIKE '%_management'
ORDER BY tablename;

📚 REFERENCIAS


📝 VARIABLES DE ENTORNO

DATABASE_URL=postgresql://usuario:password@localhost:5432/nombre_db
DB_HOST=localhost
DB_PORT=5432
DB_NAME=erp_construccion
DB_USER=postgres
DB_PASSWORD=password

Mantenido por: Database-Agent Última actualización: 2025-11-20