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
// 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
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
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
-- 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
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
-- 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
7.2 No Funcionales
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