erp-mecanicas-diesel-databa.../README.md
rckrdmrd 40371c6151 Migración desde erp-mecanicas-diesel/database - Estándar multi-repo v2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:11:31 -06:00

4.0 KiB

Base de Datos - Mecánicas Diesel

Descripción

Base de datos PostgreSQL para el sistema de gestión de talleres de mecánica diesel.

Schemas

Schema Descripción
service_management Órdenes de servicio, diagnósticos, cotizaciones
parts_management Inventario de refacciones específico del taller
vehicle_management Vehículos diesel, flotas, motores

NOTA: Los schemas auth, core, inventory se heredan de erp-core.

Configuración

1. Variables de Entorno

Copiar .env.example a .env y configurar:

cp .env.example .env
# Editar valores en .env

2. Iniciar con Docker

# Solo base de datos y Redis
docker-compose up -d postgres redis

# Verificar salud
docker-compose ps

# Ver logs
docker-compose logs -f postgres

3. Ejecutar Scripts Manualmente

Si no usas Docker, ejecutar en orden:

psql -U mecanicas_user -d mecanicas_diesel -f database/init/00-extensions.sql
psql -U mecanicas_user -d mecanicas_diesel -f database/init/01-create-schemas.sql
psql -U mecanicas_user -d mecanicas_diesel -f database/init/02-rls-functions.sql
psql -U mecanicas_user -d mecanicas_diesel -f database/init/03-service-management-tables.sql
psql -U mecanicas_user -d mecanicas_diesel -f database/init/04-parts-management-tables.sql
psql -U mecanicas_user -d mecanicas_diesel -f database/init/05-vehicle-management-tables.sql
psql -U mecanicas_user -d mecanicas_diesel -f database/init/06-seed-data.sql

Arquitectura Multi-Tenant

Row-Level Security (RLS)

Todas las tablas principales implementan RLS con políticas completas:

-- Establecer tenant en sesión
SELECT set_current_tenant_id('uuid-del-tenant');

-- Las queries se filtran automáticamente
SELECT * FROM service_management.service_orders;
-- Solo retorna órdenes del tenant actual

Crear Políticas RLS

Para nuevas tablas:

-- Automático: crea políticas SELECT, INSERT, UPDATE, DELETE
SELECT create_tenant_rls_policies('schema_name', 'table_name');

Tablas Principales

service_management

  • service_orders - Órdenes de servicio
  • order_items - Líneas de trabajo/refacciones
  • work_bays - Bahías de trabajo
  • diagnostics - Diagnósticos realizados
  • diagnostic_items - Hallazgos del diagnóstico
  • quotes - Cotizaciones
  • services - Catálogo de servicios

parts_management

  • parts - Refacciones
  • part_categories - Categorías
  • suppliers - Proveedores
  • warehouse_locations - Ubicaciones
  • inventory_movements - Kardex
  • inventory_adjustments - Ajustes

vehicle_management

  • vehicles - Vehículos registrados
  • vehicle_engines - Especificaciones del motor
  • fleets - Flotas
  • engine_catalog - Catálogo de motores (global)
  • maintenance_reminders - Recordatorios

Convenciones

Nombres

  • Tablas: plural en inglés, snake_case
  • Columnas: snake_case
  • PKs: id UUID
  • FKs: entity_id UUID
  • Tenant: tenant_id UUID

Campos Estándar

id UUID PRIMARY KEY DEFAULT gen_random_uuid()
tenant_id UUID NOT NULL
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
created_by UUID

Soft Delete (opcional)

deleted_at TIMESTAMP WITH TIME ZONE
deleted_by UUID

Triggers Automáticos

  • trigger_set_updated_at() - Actualiza updated_at en cada UPDATE
  • update_fleet_vehicle_count() - Mantiene conteo de vehículos en flotas

Herramientas

Adminer (UI de BD)

docker-compose --profile tools up -d adminer
# Acceder en http://localhost:8080

Conexión Directa

docker-compose exec postgres psql -U mecanicas_user -d mecanicas_diesel

Migraciones

Para cambios futuros, usar el sistema de migraciones de tu ORM (Prisma, TypeORM, etc.).

Ejemplo con Prisma:

npx prisma migrate dev --name add_new_field

Backup

# Backup
docker-compose exec postgres pg_dump -U mecanicas_user mecanicas_diesel > backup.sql

# Restore
docker-compose exec -T postgres psql -U mecanicas_user -d mecanicas_diesel < backup.sql