# ANALISIS MODULO RT-001: FUNDAMENTOS **Fecha:** 2025-12-18 **Fase:** 2 - Analisis por Modulo **Modulo:** RT-001 Fundamentos **Herencia:** 100% **Story Points:** 0 (heredado) **Prioridad:** P0 --- ## 1. DESCRIPCION GENERAL ### 1.1 Proposito Modulo base que proporciona autenticacion, gestion de usuarios, roles y multi-tenancy para toda la vertical retail. Hereda el 100% del ERP-Core sin modificaciones. ### 1.2 Funcionalidades | Funcionalidad | Descripcion | |---------------|-------------| | Autenticacion | Login/logout con JWT | | Usuarios | CRUD de usuarios por sucursal | | Roles | Cajero, Supervisor, Gerente, Admin | | Multi-tenancy | Aislamiento por tenant | | Sesiones | Gestion de sesiones activas | --- ## 2. HERENCIA DEL CORE ### 2.1 Modulos Core Heredados | Modulo Core | Codigo | % Herencia | Tipo | |-------------|--------|------------|------| | Auth | MGN-001 | 100% | Import directo | | Users | MGN-002 | 100% | Import directo | | Roles | MGN-003 | 100% | Import directo | | Tenants | MGN-004 | 100% | Import directo | ### 2.2 Servicios Heredados ```typescript // Imports directos desde @erp-core import { AuthService } from '@erp-core/auth'; import { UsersService } from '@erp-core/users'; import { RolesService } from '@erp-core/roles'; import { TenantsService } from '@erp-core/tenants'; ``` ### 2.3 Tablas Heredadas (26 tablas schema auth) | Tabla | Proposito | |-------|-----------| | auth.users | Usuarios del sistema | | auth.tenants | Tenants (empresas) | | auth.companies | Companias por tenant | | auth.roles | Roles del sistema | | auth.permissions | Permisos granulares | | auth.user_roles | Asignacion usuario-rol | | auth.role_permissions | Asignacion rol-permiso | | auth.sessions | Sesiones activas | | auth.user_companies | Usuario-compania | | auth.password_resets | Tokens reset password | | auth.oauth_user_links | OAuth providers | | auth.trusted_devices | Dispositivos confiables | | auth.verification_codes | Codigos verificacion | | auth.mfa_audit_log | Log de MFA | | ... | (12 tablas adicionales) | --- ## 3. EXTENSIONES REQUERIDAS ### 3.1 Roles Especificos Retail ```yaml roles_retail: - codigo: CAJERO descripcion: Operador de caja permisos: - pos.sales.create - pos.sales.read - cash.movements.read - inventory.stock.read - codigo: SUPERVISOR descripcion: Supervisor de sucursal permisos: - pos.sales.* - cash.* - inventory.stock.* - reports.sales.read - promotions.apply - codigo: GERENTE descripcion: Gerente de sucursal permisos: - pos.* - cash.* - inventory.* - reports.* - users.sucursal.* - codigo: ADMIN_RETAIL descripcion: Administrador retail permisos: - "*" # Todos los permisos ``` ### 3.2 Configuracion por Sucursal ```typescript interface RetailUserConfig { userId: string; branchId: string; // Sucursal asignada canAccessAllBranches: boolean; defaultCashRegisterId?: string; maxDiscountPercent: number; // Limite descuento } ``` --- ## 4. COMPONENTES A IMPLEMENTAR ### 4.1 Backend | Componente | Tipo | Accion | |------------|------|--------| | AuthModule | Module | HEREDAR de @erp-core | | UsersModule | Module | HEREDAR de @erp-core | | RolesModule | Module | HEREDAR de @erp-core | | TenantsModule | Module | HEREDAR de @erp-core | | RetailRolesSeeder | Seeder | CREAR - Roles retail | | RetailPermissionsSeeder | Seeder | CREAR - Permisos retail | ### 4.2 Frontend | Componente | Tipo | Accion | |------------|------|--------| | LoginPage | Page | HEREDAR de @erp-core | | UserProfile | Component | HEREDAR de @erp-core | | RoleSelector | Component | HEREDAR de @erp-core | ### 4.3 Database | Tabla | Accion | |-------|--------| | auth.* (todas) | HEREDAR - Sin cambios | ### 4.4 Seeds Retail ```sql -- Roles especificos retail INSERT INTO auth.roles (id, tenant_id, name, code, description) VALUES (uuid_generate_v4(), :tenant_id, 'Cajero', 'CAJERO', 'Operador de caja'), (uuid_generate_v4(), :tenant_id, 'Supervisor', 'SUPERVISOR', 'Supervisor sucursal'), (uuid_generate_v4(), :tenant_id, 'Gerente', 'GERENTE', 'Gerente sucursal'), (uuid_generate_v4(), :tenant_id, 'Admin Retail', 'ADMIN_RETAIL', 'Administrador'); -- Permisos especificos retail INSERT INTO auth.permissions (id, code, name, module) VALUES (uuid_generate_v4(), 'pos.sales.create', 'Crear ventas POS', 'pos'), (uuid_generate_v4(), 'pos.sales.read', 'Ver ventas POS', 'pos'), (uuid_generate_v4(), 'pos.sales.void', 'Anular ventas', 'pos'), (uuid_generate_v4(), 'cash.open', 'Abrir caja', 'cash'), (uuid_generate_v4(), 'cash.close', 'Cerrar caja', 'cash'), (uuid_generate_v4(), 'cash.movements.create', 'Crear movimientos', 'cash'), -- ... mas permisos ``` --- ## 5. DEPENDENCIAS ### 5.1 Dependencias de Core | Modulo | Estado | Bloqueante | |--------|--------|------------| | MGN-001 Auth | 40% | SI | | MGN-002 Users | 30% | SI | | MGN-003 Roles | 0% | SI | | MGN-004 Tenants | 0% | SI | ### 5.2 Dependencias de Retail | Modulo | Tipo | |--------|------| | RT-002 POS | Depende de RT-001 | | RT-003 Inventario | Depende de RT-001 | | RT-004 Compras | Depende de RT-001 | | RT-005 Clientes | Depende de RT-001 | | RT-006 Precios | Depende de RT-001 | | RT-007 Caja | Depende de RT-001 | | RT-008 Reportes | Depende de RT-001 | | RT-009 E-commerce | Depende de RT-001 | | RT-010 Facturacion | Depende de RT-001 | --- ## 6. ESPECIFICACIONES TECNICAS ### 6.1 Autenticacion ```yaml auth_config: jwt: access_token_expiry: "15m" refresh_token_expiry: "7d" password: hash_algorithm: "bcrypt" rounds: 10 min_length: 8 rate_limiting: login_attempts: 5 lockout_duration: "15m" session: max_concurrent: 3 idle_timeout: "30m" ``` ### 6.2 RLS Policies ```sql -- Ya implementadas en core, se heredan CREATE POLICY tenant_isolation ON auth.users FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID); ``` --- ## 7. CRITERIOS DE ACEPTACION ### 7.1 Funcionales - [ ] Login con usuario y password funciona - [ ] JWT se genera correctamente - [ ] Refresh token funciona - [ ] Roles se cargan con el usuario - [ ] Permisos se validan en endpoints - [ ] Multi-tenancy aisla datos ### 7.2 No Funcionales - [ ] Login < 500ms - [ ] Token validation < 50ms - [ ] Session management sin memory leaks --- ## 8. RIESGOS | Riesgo | Probabilidad | Impacto | Mitigacion | |--------|--------------|---------|------------| | Core auth incompleto | Alta | Critico | Completar core primero | | Integracion fallida | Media | Alto | Tests de integracion | --- ## 9. ESTIMACION | Tarea | SP | |-------|---:| | Configurar herencia modulos | 0 | | Crear seeds roles retail | 0 | | Crear seeds permisos retail | 0 | | Tests de integracion | 0 | | **TOTAL** | **0** | *Nota: SP = 0 porque es 100% herencia del core* --- ## 10. REFERENCIAS | Documento | Ubicacion | |-----------|-----------| | Modulo Auth Core | erp-core/docs/01-fase-foundation/MGN-001-auth/ | | Modulo Users Core | erp-core/docs/01-fase-foundation/MGN-002-users/ | | Modulo Roles Core | erp-core/docs/01-fase-foundation/MGN-003-roles/ | | DDL Auth | erp-core/database/ddl/01-auth.sql | --- **Estado:** ANALISIS COMPLETO **Siguiente:** Esperar completitud de core auth