Database de erp-mecanicas-diesel - Workspace V2
Propagated from erp-core v1.5.0 Use: Cobro de servicios, venta refacciones mostrador Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| init | ||
| schemas | ||
| .gitignore | ||
| HERENCIA-ERP-CORE.md | ||
| README.md | ||
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 servicioorder_items- Líneas de trabajo/refaccioneswork_bays- Bahías de trabajodiagnostics- Diagnósticos realizadosdiagnostic_items- Hallazgos del diagnósticoquotes- Cotizacionesservices- Catálogo de servicios
parts_management
parts- Refaccionespart_categories- Categoríassuppliers- Proveedoreswarehouse_locations- Ubicacionesinventory_movements- Kardexinventory_adjustments- Ajustes
vehicle_management
vehicles- Vehículos registradosvehicle_engines- Especificaciones del motorfleets- Flotasengine_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()- Actualizaupdated_aten cada UPDATEupdate_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