Spaces:
No application file
No application file
| -- ============================================================ | |
| -- OPTIM AI BRE ENGINE - SEED: ADMIN TENANT + USER | |
| -- Run AFTER 001_initial_schema.sql | |
| -- Password: Admin@1234 (BCrypt hash below) | |
| -- ============================================================ | |
| -- Step 1: Create the default SYSTEM tenant | |
| INSERT INTO tenants ( | |
| id, tenant_code, tenant_name, display_name, | |
| plan_type, max_rules, max_executions_per_day, | |
| is_active, settings | |
| ) VALUES ( | |
| 'a0000000-0000-0000-0000-000000000001', | |
| 'SYSTEM', | |
| 'OPTIM AI - System Tenant', | |
| 'System Admin', | |
| 'ENTERPRISE', | |
| 99999, | |
| 99999999, | |
| TRUE, | |
| '{"isSystem": true}'::jsonb | |
| ) ON CONFLICT (tenant_code) DO NOTHING; | |
| -- Step 2: Create SUPER_ADMIN role for the system tenant | |
| INSERT INTO roles ( | |
| id, tenant_id, role_code, role_name, description, | |
| is_system_role, is_active | |
| ) VALUES ( | |
| 'b0000000-0000-0000-0000-000000000001', | |
| 'a0000000-0000-0000-0000-000000000001', | |
| 'SUPER_ADMIN', | |
| 'Super Administrator', | |
| 'Full system access - all permissions', | |
| TRUE, TRUE | |
| ) ON CONFLICT DO NOTHING; | |
| -- Step 3: Grant ALL permissions to SUPER_ADMIN | |
| INSERT INTO role_permissions (role_id, permission_id) | |
| SELECT | |
| 'b0000000-0000-0000-0000-000000000001', | |
| p.id | |
| FROM permissions p | |
| ON CONFLICT DO NOTHING; | |
| -- Step 4: Create the admin user | |
| -- Email: admin@optimai.in | |
| -- Password: Admin@1234 | |
| -- BCrypt hash generated with work factor 12 | |
| INSERT INTO users ( | |
| id, tenant_id, email, username, password_hash, | |
| full_name, designation, department, | |
| is_active, is_email_verified | |
| ) VALUES ( | |
| 'c0000000-0000-0000-0000-000000000001', | |
| 'a0000000-0000-0000-0000-000000000001', | |
| 'admin@optimai.in', | |
| 'admin', | |
| '$2a$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/Lewjoc.MiG6L6bHQW', | |
| 'System Administrator', | |
| 'Platform Administrator', | |
| 'Technology', | |
| TRUE, | |
| TRUE | |
| ) ON CONFLICT (tenant_id, email) DO NOTHING; | |
| -- Step 5: Assign SUPER_ADMIN role to admin user | |
| INSERT INTO user_roles (user_id, role_id) | |
| VALUES ( | |
| 'c0000000-0000-0000-0000-000000000001', | |
| 'b0000000-0000-0000-0000-000000000001' | |
| ) ON CONFLICT DO NOTHING; | |
| -- Step 6: Create a DEMO tenant for testing multi-tenancy | |
| INSERT INTO tenants ( | |
| id, tenant_code, tenant_name, display_name, | |
| plan_type, max_rules, max_executions_per_day, is_active, settings | |
| ) VALUES ( | |
| 'a0000000-0000-0000-0000-000000000002', | |
| 'DEMO_BANK', | |
| 'Demo Bank Ltd', | |
| 'Demo Bank', | |
| 'ENTERPRISE', 500, 100000, TRUE, | |
| '{"productTypes": ["VEHICLE_LOAN","TRACTOR_LOAN","MSME"]}'::jsonb | |
| ) ON CONFLICT (tenant_code) DO NOTHING; | |
| -- Step 7: Create CREDIT_MANAGER role for Demo Bank | |
| INSERT INTO roles (id, tenant_id, role_code, role_name, is_system_role, is_active) | |
| VALUES ( | |
| 'b0000000-0000-0000-0000-000000000002', | |
| 'a0000000-0000-0000-0000-000000000002', | |
| 'CREDIT_MANAGER', 'Credit Manager', FALSE, TRUE | |
| ) ON CONFLICT DO NOTHING; | |
| -- Step 8: Grant rule permissions to CREDIT_MANAGER | |
| INSERT INTO role_permissions (role_id, permission_id) | |
| SELECT 'b0000000-0000-0000-0000-000000000002', p.id | |
| FROM permissions p | |
| WHERE p.permission_code IN ( | |
| 'RULE.VIEW','RULE.CREATE','RULE.EDIT','RULE.CLONE', | |
| 'EXECUTION.VIEW','EXECUTION.EXECUTE','EXECUTION.SANDBOX', | |
| 'REPORT.VIEW','REPORT.EXPORT','AI.GENERATE','AI.ANALYSIS', | |
| 'AUDIT.VIEW' | |
| ) ON CONFLICT DO NOTHING; | |
| -- Step 9: Create demo user for Demo Bank | |
| -- Email: demo@demobank.in | |
| -- Password: Demo@1234 | |
| INSERT INTO users ( | |
| id, tenant_id, email, username, password_hash, | |
| full_name, designation, department, is_active, is_email_verified | |
| ) VALUES ( | |
| 'c0000000-0000-0000-0000-000000000002', | |
| 'a0000000-0000-0000-0000-000000000002', | |
| 'demo@demobank.in', | |
| 'demo_credit', | |
| '$2a$12$9k.GJjJDiZqSVhWNi3W4C.F.5XknZ3Nuo8hHE1t3L3XuoUgJAOxFW', | |
| 'Demo Credit Manager', | |
| 'Credit Manager', | |
| 'Credit Department', | |
| TRUE, TRUE | |
| ) ON CONFLICT (tenant_id, email) DO NOTHING; | |
| -- Step 10: Assign CREDIT_MANAGER role to demo user | |
| INSERT INTO user_roles (user_id, role_id) | |
| VALUES ( | |
| 'c0000000-0000-0000-0000-000000000002', | |
| 'b0000000-0000-0000-0000-000000000002' | |
| ) ON CONFLICT DO NOTHING; | |
| -- Step 11: Seed rule categories for Demo Bank | |
| INSERT INTO rule_categories (id, tenant_id, category_code, category_name, icon, sort_order, is_active) | |
| VALUES | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'ELIGIBILITY', 'Eligibility Rules', 'β ', 1, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'BUREAU', 'Bureau Rules', 'π', 2, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'INCOME', 'Income Rules', 'π°', 3, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'VEHICLE', 'Vehicle Rules', 'π', 4, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'FI', 'FI Rules', 'π ', 5, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'FRAUD', 'Fraud Rules', 'π¨', 6, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'COMPLIANCE', 'Compliance Rules', 'π', 7, TRUE) | |
| ON CONFLICT DO NOTHING; | |
| -- Step 12: Seed loan stages for Demo Bank | |
| INSERT INTO loan_stages (id, tenant_id, stage_code, stage_name, stage_order, is_active) | |
| VALUES | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'LOGIN', 'Login Stage', 1, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'DEDUPE', 'De-Dupe Check', 2, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'BUREAU_PULL', 'Bureau Pull', 3, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'CREDIT_EVAL', 'Credit Evaluation', 4, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'FI', 'Field Investigation', 5, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'VALUATION', 'Vehicle Valuation', 6, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'FINAL_CREDIT', 'Final Credit Decision', 7, TRUE), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'SANCTION', 'Sanction', 8, TRUE) | |
| ON CONFLICT DO NOTHING; | |
| -- Step 13: Seed products for Demo Bank | |
| INSERT INTO products (id, tenant_id, product_code, product_name, product_type, is_active, config) | |
| VALUES | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'VL', 'Vehicle Loan', 'VEHICLE_LOAN', TRUE, '{}'::jsonb), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'TL', 'Tractor Loan', 'TRACTOR_LOAN', TRUE, '{}'::jsonb), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'AL', 'Auto Loan', 'AUTO_LOAN', TRUE, '{}'::jsonb), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'CVL', 'Commercial Vehicle Loan', 'CV_LOAN', TRUE, '{}'::jsonb), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'MSME', 'MSME Loan', 'MSME', TRUE, '{}'::jsonb), | |
| (uuid_generate_v4(), 'a0000000-0000-0000-0000-000000000002', 'PL', 'Personal Loan', 'PERSONAL_LOAN', TRUE, '{}'::jsonb) | |
| ON CONFLICT DO NOTHING; | |
| -- ============================================================ | |
| -- VERIFICATION QUERIES (run to confirm seed data) | |
| -- ============================================================ | |
| -- SELECT * FROM tenants; | |
| -- SELECT u.email, u.full_name, r.role_name FROM users u | |
| -- JOIN user_roles ur ON ur.user_id = u.id | |
| -- JOIN roles r ON r.id = ur.role_id; | |
| -- SELECT COUNT(*) FROM permissions; | |