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

287 lines
7.2 KiB
Markdown

# 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