Seeds include: - 01-core-catalogs.sql: Units, currencies, taxes, banks, states (~100 records) - 02-users-profiles.sql: 12 roles, 50+ permissions, 12 demo users - 03-empresa-tenant.sql: Demo company with 2 branches, 4 warehouses - 04-proyectos-obras.sql: 3 projects, stages, lots, apartments - 05-presupuestos.sql: CMIC-based concepts, 5 budgets - 06-estimaciones.sql: Contracts, estimates, advances - 07-avances-calidad.sql: Progress, logbook, quality checklists - 08-hse.sql: PPE catalog, training, incidents - 09-finanzas.sql: Chart of accounts, CxP, CxC, balanced entries - 10-activos-documentos.sql: Assets, maintenance, documents Total: ~940 records for complete demo coverage Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
399 lines
23 KiB
PL/PgSQL
399 lines
23 KiB
PL/PgSQL
-- ═══════════════════════════════════════════════════════════════════════════════
|
|
-- SEED 02: USUARIOS Y PERFILES
|
|
-- ═══════════════════════════════════════════════════════════════════════════════
|
|
-- Proyecto: ERP Construcción
|
|
-- Autor: Claude Opus 4.5
|
|
-- Fecha: 2026-02-03
|
|
-- Descripción: Roles, permisos y usuarios demo del sistema
|
|
-- Dependencias: 01-core-catalogs.sql
|
|
-- ═══════════════════════════════════════════════════════════════════════════════
|
|
|
|
-- UUIDs determinísticos:
|
|
-- Prefijo: 00000000-0000-0000-0002-XXXXXXXXXXXX para usuarios/roles
|
|
|
|
BEGIN;
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- 1. ROLES DEL SISTEMA
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
INSERT INTO auth.roles (id, code, name, description, is_system, is_active, created_at) VALUES
|
|
('00000000-0000-0000-0002-000000000001', 'super_admin', 'Super Administrador', 'Acceso total al sistema, gestión de tenants', true, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000002', 'director', 'Director General', 'Acceso ejecutivo, reportes gerenciales, aprobaciones finales', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000003', 'gerente_obra', 'Gerente de Obra', 'Gestión completa de proyectos asignados', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000004', 'residente', 'Residente de Obra', 'Supervisión diaria, captura de avances, estimaciones', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000005', 'supervisor', 'Supervisor de Campo', 'Control de obra, bitácora, avances', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000006', 'almacenista', 'Almacenista', 'Control de inventario, entradas/salidas', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000007', 'contabilidad', 'Contador', 'Gestión financiera, pólizas, CxP, CxC', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000008', 'rrhh', 'Recursos Humanos', 'Gestión de personal, nómina, capacitación', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000009', 'hse', 'Seguridad e Higiene', 'Gestión HSE, inspecciones, incidentes', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000010', 'calidad', 'Control de Calidad', 'Inspecciones, checklists, no conformidades', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000011', 'comprador', 'Comprador', 'Requisiciones, órdenes de compra, proveedores', false, true, NOW()),
|
|
('00000000-0000-0000-0002-000000000012', 'cliente_visor', 'Cliente (Solo Lectura)', 'Visualización de avances de su propiedad', false, true, NOW())
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- 2. PERMISOS DEL SISTEMA
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
INSERT INTO auth.permissions (id, code, name, module, action, description, is_active, created_at) VALUES
|
|
-- Módulo: Proyectos (construction)
|
|
('00000000-0000-0000-0002-000000001001', 'construction.view', 'Ver Proyectos', 'construction', 'view', 'Ver proyectos y fraccionamientos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001002', 'construction.create', 'Crear Proyectos', 'construction', 'create', 'Crear nuevos proyectos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001003', 'construction.edit', 'Editar Proyectos', 'construction', 'edit', 'Modificar proyectos existentes', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001004', 'construction.delete', 'Eliminar Proyectos', 'construction', 'delete', 'Eliminar proyectos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001005', 'construction.approve', 'Aprobar Proyectos', 'construction', 'approve', 'Aprobar cambios en proyectos', true, NOW()),
|
|
|
|
-- Módulo: Presupuestos (budgets)
|
|
('00000000-0000-0000-0002-000000001010', 'budgets.view', 'Ver Presupuestos', 'budgets', 'view', 'Ver presupuestos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001011', 'budgets.create', 'Crear Presupuestos', 'budgets', 'create', 'Crear presupuestos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001012', 'budgets.edit', 'Editar Presupuestos', 'budgets', 'edit', 'Modificar presupuestos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001013', 'budgets.approve', 'Aprobar Presupuestos', 'budgets', 'approve', 'Aprobar presupuestos', true, NOW()),
|
|
|
|
-- Módulo: Avances (progress)
|
|
('00000000-0000-0000-0002-000000001020', 'progress.view', 'Ver Avances', 'progress', 'view', 'Ver avances de obra', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001021', 'progress.capture', 'Capturar Avances', 'progress', 'create', 'Capturar avances', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001022', 'progress.review', 'Revisar Avances', 'progress', 'review', 'Revisar avances capturados', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001023', 'progress.approve', 'Aprobar Avances', 'progress', 'approve', 'Aprobar avances', true, NOW()),
|
|
|
|
-- Módulo: Estimaciones (estimates)
|
|
('00000000-0000-0000-0002-000000001030', 'estimates.view', 'Ver Estimaciones', 'estimates', 'view', 'Ver estimaciones', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001031', 'estimates.create', 'Crear Estimaciones', 'estimates', 'create', 'Crear estimaciones', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001032', 'estimates.edit', 'Editar Estimaciones', 'estimates', 'edit', 'Modificar estimaciones', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001033', 'estimates.submit', 'Enviar Estimaciones', 'estimates', 'submit', 'Enviar a revisión', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001034', 'estimates.approve', 'Aprobar Estimaciones', 'estimates', 'approve', 'Aprobar estimaciones', true, NOW()),
|
|
|
|
-- Módulo: Contratos (contracts)
|
|
('00000000-0000-0000-0002-000000001040', 'contracts.view', 'Ver Contratos', 'contracts', 'view', 'Ver contratos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001041', 'contracts.create', 'Crear Contratos', 'contracts', 'create', 'Crear contratos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001042', 'contracts.edit', 'Editar Contratos', 'contracts', 'edit', 'Modificar contratos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001043', 'contracts.approve', 'Aprobar Contratos', 'contracts', 'approve', 'Aprobar contratos', true, NOW()),
|
|
|
|
-- Módulo: Calidad (quality)
|
|
('00000000-0000-0000-0002-000000001050', 'quality.view', 'Ver Calidad', 'quality', 'view', 'Ver inspecciones y NC', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001051', 'quality.inspect', 'Realizar Inspecciones', 'quality', 'create', 'Ejecutar inspecciones', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001052', 'quality.approve', 'Aprobar Inspecciones', 'quality', 'approve', 'Aprobar inspecciones', true, NOW()),
|
|
|
|
-- Módulo: HSE (hse)
|
|
('00000000-0000-0000-0002-000000001060', 'hse.view', 'Ver HSE', 'hse', 'view', 'Ver módulo HSE', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001061', 'hse.incidents', 'Gestionar Incidentes', 'hse', 'create', 'Registrar incidentes', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001062', 'hse.training', 'Gestionar Capacitación', 'hse', 'create', 'Gestionar capacitaciones', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001063', 'hse.permits', 'Permisos de Trabajo', 'hse', 'create', 'Gestionar permisos', true, NOW()),
|
|
|
|
-- Módulo: RRHH (hr)
|
|
('00000000-0000-0000-0002-000000001070', 'hr.view', 'Ver RRHH', 'hr', 'view', 'Ver empleados', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001071', 'hr.manage', 'Gestionar RRHH', 'hr', 'manage', 'Gestionar empleados', true, NOW()),
|
|
|
|
-- Módulo: Finanzas (finance)
|
|
('00000000-0000-0000-0002-000000001080', 'finance.view', 'Ver Finanzas', 'finance', 'view', 'Ver módulo financiero', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001081', 'finance.entries', 'Pólizas Contables', 'finance', 'create', 'Crear pólizas', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001082', 'finance.payments', 'Pagos', 'finance', 'create', 'Registrar pagos', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001083', 'finance.reconcile', 'Conciliaciones', 'finance', 'create', 'Realizar conciliaciones', true, NOW()),
|
|
|
|
-- Módulo: Inventario (inventory)
|
|
('00000000-0000-0000-0002-000000001090', 'inventory.view', 'Ver Inventario', 'inventory', 'view', 'Ver almacén', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001091', 'inventory.manage', 'Gestionar Inventario', 'inventory', 'manage', 'Movimientos de almacén', true, NOW()),
|
|
|
|
-- Módulo: Compras (purchase)
|
|
('00000000-0000-0000-0002-000000001100', 'purchase.view', 'Ver Compras', 'purchase', 'view', 'Ver requisiciones y OC', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001101', 'purchase.requisitions', 'Requisiciones', 'purchase', 'create', 'Crear requisiciones', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001102', 'purchase.orders', 'Órdenes de Compra', 'purchase', 'create', 'Crear OC', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001103', 'purchase.approve', 'Aprobar Compras', 'purchase', 'approve', 'Aprobar requisiciones/OC', true, NOW()),
|
|
|
|
-- Módulo: Activos (assets)
|
|
('00000000-0000-0000-0002-000000001110', 'assets.view', 'Ver Activos', 'assets', 'view', 'Ver equipos y maquinaria', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001111', 'assets.manage', 'Gestionar Activos', 'assets', 'manage', 'Gestionar activos', true, NOW()),
|
|
|
|
-- Módulo: Documentos (documents)
|
|
('00000000-0000-0000-0002-000000001120', 'documents.view', 'Ver Documentos', 'documents', 'view', 'Ver repositorio', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001121', 'documents.manage', 'Gestionar Documentos', 'documents', 'manage', 'Subir y gestionar docs', true, NOW()),
|
|
|
|
-- Módulo: Reportes (reports)
|
|
('00000000-0000-0000-0002-000000001130', 'reports.view', 'Ver Reportes', 'reports', 'view', 'Ver reportes', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001131', 'reports.export', 'Exportar Reportes', 'reports', 'export', 'Exportar a PDF/Excel', true, NOW()),
|
|
|
|
-- Módulo: Administración (admin)
|
|
('00000000-0000-0000-0002-000000001140', 'admin.users', 'Gestionar Usuarios', 'admin', 'manage', 'Gestionar usuarios', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001141', 'admin.roles', 'Gestionar Roles', 'admin', 'manage', 'Gestionar roles', true, NOW()),
|
|
('00000000-0000-0000-0002-000000001142', 'admin.settings', 'Configuración', 'admin', 'manage', 'Configuración del sistema', true, NOW())
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- 3. ASIGNACIÓN ROL-PERMISOS (Matriz de permisos por rol)
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
-- Super Admin: Todos los permisos
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000001',
|
|
id
|
|
FROM auth.permissions
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Director: Vista general + aprobaciones
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000002',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code LIKE '%.view'
|
|
OR code LIKE '%.approve'
|
|
OR code IN ('reports.export', 'documents.view')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Gerente de Obra: Gestión de proyectos completa
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000003',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE module IN ('construction', 'budgets', 'progress', 'estimates', 'contracts', 'quality', 'hse', 'reports', 'documents')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Residente: Operación diaria
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000004',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'construction.view', 'budgets.view',
|
|
'progress.view', 'progress.capture', 'progress.review',
|
|
'estimates.view', 'estimates.create', 'estimates.edit', 'estimates.submit',
|
|
'quality.view', 'quality.inspect',
|
|
'hse.view', 'hse.incidents',
|
|
'documents.view', 'documents.manage',
|
|
'reports.view'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Supervisor: Campo
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000005',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'construction.view', 'progress.view', 'progress.capture',
|
|
'quality.view', 'quality.inspect',
|
|
'hse.view', 'hse.incidents',
|
|
'inventory.view',
|
|
'reports.view'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Almacenista
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000006',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'inventory.view', 'inventory.manage',
|
|
'purchase.view',
|
|
'assets.view',
|
|
'reports.view'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Contador
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000007',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'finance.view', 'finance.entries', 'finance.payments', 'finance.reconcile',
|
|
'estimates.view',
|
|
'contracts.view',
|
|
'purchase.view',
|
|
'reports.view', 'reports.export'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- RRHH
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000008',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'hr.view', 'hr.manage',
|
|
'hse.view', 'hse.training',
|
|
'reports.view'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- HSE
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000009',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'hse.view', 'hse.incidents', 'hse.training', 'hse.permits',
|
|
'hr.view',
|
|
'construction.view',
|
|
'reports.view', 'reports.export'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Calidad
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000010',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'quality.view', 'quality.inspect', 'quality.approve',
|
|
'construction.view',
|
|
'documents.view', 'documents.manage',
|
|
'reports.view'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Comprador
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000011',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN (
|
|
'purchase.view', 'purchase.requisitions', 'purchase.orders',
|
|
'inventory.view',
|
|
'contracts.view',
|
|
'reports.view'
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- Cliente Visor (solo lectura limitada)
|
|
INSERT INTO auth.role_permissions (role_id, permission_id)
|
|
SELECT
|
|
'00000000-0000-0000-0002-000000000012',
|
|
id
|
|
FROM auth.permissions
|
|
WHERE code IN ('construction.view', 'progress.view', 'documents.view')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- 4. USUARIOS DEMO
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- Password: Demo2026! (hash bcrypt con salt 10)
|
|
-- Hash generado: $2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB
|
|
|
|
INSERT INTO auth.users (
|
|
id, email, password_hash, first_name, last_name,
|
|
is_active, is_verified, is_system, created_at
|
|
) VALUES
|
|
-- Super Admin
|
|
('00000000-0000-0000-0002-000000000101', 'admin@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Admin', 'Sistema', true, true, true, NOW()),
|
|
|
|
-- Director
|
|
('00000000-0000-0000-0002-000000000102', 'director@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Juan Carlos', 'Director Méndez', true, true, false, NOW()),
|
|
|
|
-- Gerente de Obra
|
|
('00000000-0000-0000-0002-000000000103', 'gerente1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'María Elena', 'Gerente Torres', true, true, false, NOW()),
|
|
|
|
-- Residente
|
|
('00000000-0000-0000-0002-000000000104', 'residente1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Carlos Alberto', 'Residente López', true, true, false, NOW()),
|
|
|
|
-- Supervisor
|
|
('00000000-0000-0000-0002-000000000105', 'supervisor1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Ana María', 'Supervisora García', true, true, false, NOW()),
|
|
|
|
-- Almacenista
|
|
('00000000-0000-0000-0002-000000000106', 'almacen1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Luis Fernando', 'Almacén Ruiz', true, true, false, NOW()),
|
|
|
|
-- Contador
|
|
('00000000-0000-0000-0002-000000000107', 'contador1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Rosa María', 'Contadora Hernández', true, true, false, NOW()),
|
|
|
|
-- RRHH
|
|
('00000000-0000-0000-0002-000000000108', 'rrhh1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Pedro Pablo', 'Recursos Martínez', true, true, false, NOW()),
|
|
|
|
-- HSE
|
|
('00000000-0000-0000-0002-000000000109', 'hse1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Elena Patricia', 'Seguridad Sánchez', true, true, false, NOW()),
|
|
|
|
-- Calidad
|
|
('00000000-0000-0000-0002-000000000110', 'calidad1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Diego Armando', 'Calidad Rodríguez', true, true, false, NOW()),
|
|
|
|
-- Comprador
|
|
('00000000-0000-0000-0002-000000000111', 'comprador1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Laura Patricia', 'Compras Jiménez', true, true, false, NOW()),
|
|
|
|
-- Cliente Visor
|
|
('00000000-0000-0000-0002-000000000112', 'visor1@demo.com',
|
|
'$2a$10$rQnP.xNj7Y8hVJYw5v5qYeKKq5PmBnvTYmNZz6KXy5vJYmH5XYZAB',
|
|
'Cliente', 'Demo Comprador', true, true, false, NOW())
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- 5. ASIGNACIÓN USUARIO-ROL
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
INSERT INTO auth.user_roles (user_id, role_id, is_primary, created_at) VALUES
|
|
('00000000-0000-0000-0002-000000000101', '00000000-0000-0000-0002-000000000001', true, NOW()), -- admin -> super_admin
|
|
('00000000-0000-0000-0002-000000000102', '00000000-0000-0000-0002-000000000002', true, NOW()), -- director -> director
|
|
('00000000-0000-0000-0002-000000000103', '00000000-0000-0000-0002-000000000003', true, NOW()), -- gerente1 -> gerente_obra
|
|
('00000000-0000-0000-0002-000000000104', '00000000-0000-0000-0002-000000000004', true, NOW()), -- residente1 -> residente
|
|
('00000000-0000-0000-0002-000000000105', '00000000-0000-0000-0002-000000000005', true, NOW()), -- supervisor1 -> supervisor
|
|
('00000000-0000-0000-0002-000000000106', '00000000-0000-0000-0002-000000000006', true, NOW()), -- almacen1 -> almacenista
|
|
('00000000-0000-0000-0002-000000000107', '00000000-0000-0000-0002-000000000007', true, NOW()), -- contador1 -> contabilidad
|
|
('00000000-0000-0000-0002-000000000108', '00000000-0000-0000-0002-000000000008', true, NOW()), -- rrhh1 -> rrhh
|
|
('00000000-0000-0000-0002-000000000109', '00000000-0000-0000-0002-000000000009', true, NOW()), -- hse1 -> hse
|
|
('00000000-0000-0000-0002-000000000110', '00000000-0000-0000-0002-000000000010', true, NOW()), -- calidad1 -> calidad
|
|
('00000000-0000-0000-0002-000000000111', '00000000-0000-0000-0002-000000000011', true, NOW()), -- comprador1 -> comprador
|
|
('00000000-0000-0000-0002-000000000112', '00000000-0000-0000-0002-000000000012', true, NOW()) -- visor1 -> cliente_visor
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
-- VERIFICACIÓN
|
|
-- ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
DO $$
|
|
DECLARE
|
|
v_roles INTEGER;
|
|
v_permissions INTEGER;
|
|
v_users INTEGER;
|
|
v_role_perms INTEGER;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO v_roles FROM auth.roles;
|
|
SELECT COUNT(*) INTO v_permissions FROM auth.permissions;
|
|
SELECT COUNT(*) INTO v_users FROM auth.users;
|
|
SELECT COUNT(*) INTO v_role_perms FROM auth.role_permissions;
|
|
|
|
RAISE NOTICE '══════════════════════════════════════════════════════════════';
|
|
RAISE NOTICE 'SEED 02 - USUARIOS Y PERFILES - COMPLETADO';
|
|
RAISE NOTICE '══════════════════════════════════════════════════════════════';
|
|
RAISE NOTICE 'Roles: %', v_roles;
|
|
RAISE NOTICE 'Permisos: %', v_permissions;
|
|
RAISE NOTICE 'Usuarios: %', v_users;
|
|
RAISE NOTICE 'Asignaciones rol-permiso: %', v_role_perms;
|
|
RAISE NOTICE '══════════════════════════════════════════════════════════════';
|
|
END $$;
|
|
|
|
COMMIT;
|
|
|
|
-- ═══════════════════════════════════════════════════════════════════════════════
|
|
-- FIN SEED 02
|
|
-- ═══════════════════════════════════════════════════════════════════════════════
|