erp-core/docs/01-fase-foundation/MGN-004-tenants/historias-usuario/US-MGN004-001.md

4.7 KiB

US-MGN004-001: Gestion de Tenants

Identificacion

Campo Valor
ID US-MGN004-001
Modulo MGN-004 Tenants
RF Relacionado RF-TENANT-001
Prioridad P0 - Critica
Story Points 13
Sprint TBD

Historia de Usuario

Como Platform Admin Quiero gestionar los tenants de la plataforma (crear, ver, editar, suspender, eliminar) Para administrar las organizaciones que usan el sistema ERP


Criterios de Aceptacion

AC-001: Listar tenants

Given soy Platform Admin autenticado
When accedo a GET /api/v1/platform/tenants
Then veo lista paginada de tenants
  And cada tenant muestra: nombre, slug, estado, fecha creacion
  And puedo filtrar por estado (created, trial, active, suspended)
  And puedo buscar por nombre o slug

AC-002: Crear nuevo tenant

Given soy Platform Admin autenticado
When envio POST /api/v1/platform/tenants con:
  | name | slug | subdomain |
  | Empresa XYZ | empresa-xyz | xyz |
Then se crea el tenant con estado "created"
  And se crean los settings por defecto
  And se genera registro de auditoria

AC-003: Validacion de slug unico

Given existe tenant con slug "empresa-abc"
When intento crear tenant con slug "empresa-abc"
Then el sistema responde con status 409
  And el mensaje indica que el slug ya existe

AC-004: Ver detalle de tenant

Given soy Platform Admin autenticado
  And existe tenant "tenant-123"
When accedo a GET /api/v1/platform/tenants/tenant-123
Then veo toda la informacion del tenant
  And incluye: nombre, slug, subdominio, estado, fechas
  And incluye: subscripcion actual, uso de recursos

AC-005: Actualizar tenant

Given soy Platform Admin autenticado
  And existe tenant "tenant-123" con nombre "Empresa Original"
When envio PATCH /api/v1/platform/tenants/tenant-123 con:
  | name | subdominio |
  | Empresa Nueva | nuevo |
Then el nombre cambia a "Empresa Nueva"
  And el subdominio cambia a "nuevo"
  And se actualiza updated_at y updated_by

AC-006: Suspender tenant

Given soy Platform Admin autenticado
  And tenant "tenant-123" esta activo
When cambio estado a "suspended" con razon "Falta de pago"
Then el estado cambia a "suspended"
  And se registra suspended_at y suspension_reason
  And usuarios del tenant no pueden acceder

AC-007: Reactivar tenant suspendido

Given soy Platform Admin autenticado
  And tenant "tenant-123" esta suspendido
When cambio estado a "active"
Then el estado cambia a "active"
  And se limpian campos de suspension
  And usuarios pueden acceder nuevamente

AC-008: Programar eliminacion

Given soy Platform Admin autenticado
  And tenant "tenant-123" existe
When envio DELETE /api/v1/platform/tenants/tenant-123
Then el estado cambia a "pending_deletion"
  And se programa eliminacion en 30 dias
  And se notifica al owner del tenant

AC-009: Restaurar tenant pendiente de eliminacion

Given soy Platform Admin autenticado
  And tenant "tenant-123" esta en "pending_deletion"
When envio POST /api/v1/platform/tenants/tenant-123/restore
Then el estado cambia a "active"
  And se cancela la eliminacion programada

AC-010: Cambiar contexto a tenant (switch)

Given soy Platform Admin autenticado
When envio POST /api/v1/platform/switch-tenant/tenant-123
Then mi contexto cambia a tenant "tenant-123"
  And puedo ver datos de ese tenant
  And la accion queda auditada

Tareas Tecnicas

ID Tarea Estimacion
T-001 Crear entidad Tenant con TypeORM 1 SP
T-002 Implementar TenantsService CRUD 3 SP
T-003 Implementar PlatformTenantsController 2 SP
T-004 Crear DTOs con validaciones 1 SP
T-005 Implementar transicion de estados 2 SP
T-006 Implementar switch tenant 2 SP
T-007 Tests unitarios 2 SP
Total 13 SP

Notas de Implementacion

  • Estados validos: created -> trial -> active -> suspended -> pending_deletion -> deleted
  • Solo Platform Admin puede gestionar tenants
  • Switch tenant debe quedar en logs de auditoria
  • Eliminacion real solo despues de 30 dias de grace period

Mockup de Referencia

Ver RF-TENANT-001.md seccion Mockup.


Dependencias

Tipo Descripcion
Backend Schema core_tenants creado
Auth JWT con claims de platform_admin
Audit Sistema de auditoria funcionando

Definition of Done

  • Endpoints implementados y documentados en Swagger
  • Validaciones de DTOs completas
  • Transiciones de estado implementadas
  • Tests unitarios con >80% coverage
  • Code review aprobado
  • Logs de auditoria funcionando