erp-retail/orchestration/planes/fase-2-analisis-modulos/ANALISIS-RT-001-fundamentos.md

7.2 KiB

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

  • 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