Ir al contenido

El sistema B2B (Business-to-Business) permite a empresas comprar suscripciones de equipo con múltiples asientos (seats) y gestionar el acceso de sus empleados a los cursos de TalentBricksAI.

El sistema B2B transforma TalentBricksAI en una plataforma de aprendizaje corporativa, permitiendo a las empresas:

  • 🏢 Crear organizaciones con múltiples miembros
  • 💳 Comprar planes de equipo con X cantidad de asientos
  • 👥 Gestionar miembros con diferentes roles y permisos
  • 📚 Asignar cursos a toda la organización
  • 📊 Ver analíticas del progreso del equipo
  • 🔐 Controlar accesos según roles (OWNER, ADMIN, MEMBER)
Platform Admin (isAdmin = true en User)
└─ Acceso completo a todas las organizaciones
Organization OWNER
└─ Control total de su organización
• Gestionar facturación
• Invitar/remover miembros
• Asignar cursos
• Cambiar roles
• Eliminar organización
Organization ADMIN
└─ Gestión de equipo
• Invitar/remover miembros
• Asignar cursos
• Ver analíticas
• NO puede gestionar facturación
Organization MEMBER
└─ Acceso de usuario final
• Acceder a cursos asignados
• Ver progreso personal
• NO puede gestionar el equipo

Esta sección contiene tres guías principales:

Tiempo de lectura: 10 minutos

Aprende a usar el sistema B2B en 5 minutos. Incluye:

  • Setup inicial (3 pasos)
  • Credenciales de prueba
  • 6 flujos esenciales
  • Comandos SQL útiles
  • Troubleshooting común

Ideal para: Empezar a probar rápidamente el sistema.


Tiempo de lectura: 2+ horas

Guía exhaustiva para probar todo el sistema. Incluye:

  • 11 flujos de prueba detallados
  • Casos edge y límites
  • Verificaciones en base de datos
  • Checklist de funcionalidad completo
  • Problemas conocidos y soluciones

Ideal para: QA completo antes de producción.


Tiempo de lectura: 20 minutos

Documentación técnica del sistema. Incluye:

  • Diagramas de entidades (ERD)
  • Diagramas de flujo
  • Control de acceso
  • Integración con Stripe
  • Estructura de archivos

Ideal para: Desarrolladores que necesitan entender el código.


Password para todos: Test123!

EmailRolOrganizaciónDashboard
owner@talentbricks.testOWNERTalentBricks Corp (10 seats)/team/{organizationId}
admin@talentbricks.testADMINTalentBricks Corp/team/{organizationId}
member1@talentbricks.testMEMBERTalentBricks Corp/team/{organizationId}
member2@talentbricks.testMEMBERTalentBricks Corp/team/{organizationId}
owner@acme.testOWNERAcme Inc (25 seats)/team/{organizationId}
admin@acme.testADMINAcme Inc/team/{organizationId}
owner@startup.testOWNERStartupXYZ (5 seats)/team/{organizationId}

Ventana de terminal
cd app
wasp db seed seedOrganizationTestData

Esto crea:

  • 3 organizaciones de prueba
  • 7 usuarios con diferentes roles (ver tabla arriba)
  • Cursos pre-asignados
  • Invitaciones pendientes
Ventana de terminal
# Terminal 1: Base de datos
wasp db start
# Terminal 2: Aplicación
wasp start

Usa las credenciales de la tabla de arriba para iniciar sesión en http://localhost:3000

El sistema implementa RBAC completo con 4 niveles:

AcciónPlatform AdminOWNERADMINMEMBER
Ver todas las organizaciones
Gestionar facturación
Invitar miembros
Remover miembros
Cambiar roles
Asignar cursos
Acceder cursos

Cada organización tiene:

  • maxSeats: Número de asientos comprados
  • usedSeats: Número de asientos ocupados

El sistema previene:

  • ❌ Invitar más miembros que asientos disponibles
  • ❌ Aceptar invitaciones cuando ya no hay seats
  • ✅ Auto-decrementa seats al remover miembros

Las invitaciones tienen:

  • Token único para seguridad
  • Expiración de 7 días
  • Rol pre-asignado (OWNER, ADMIN, MEMBER)
  • Email de notificación (opcional)

Los miembros de una organización pueden acceder a cursos si:

  1. ✅ La organización tiene un OrganizationEnrollment para ese curso
  2. ✅ La organización tiene subscriptionStatus === 'active'
  3. ✅ El usuario es miembro activo de la organización

El sistema se integra completamente con Stripe:

  • Checkout de equipos con cantidad de seats
  • Webhooks para actualizar subscriptions
  • Portal de clientes para que OWNERs gestionen facturación
  • Metadata para tracking de organizaciones
model Organization {
id String
name String
domain String?
maxSeats Int
usedSeats Int
subscriptionStatus String?
subscriptionPlan String?
paymentProcessorCustomerId String?
datePaid DateTime?
members OrganizationMember[]
enrollments OrganizationEnrollment[]
invitations OrganizationInvitation[]
}
model OrganizationMember {
id String
organizationId String
userId String
role OrganizationRole // OWNER | ADMIN | MEMBER
joinedAt DateTime
@@unique([organizationId, userId])
}
model OrganizationEnrollment {
id String
organizationId String
courseId Int
assignedById String
assignedAt DateTime
@@unique([organizationId, courseId])
}
model OrganizationInvitation {
id String
organizationId String
email String
role OrganizationRole
token String @unique
invitedBy String
invitedAt DateTime
expiresAt DateTime
acceptedAt DateTime?
@@unique([organizationId, email])
}
  • app/src/organizations/operations.ts - Queries y Actions
  • app/src/organizations/permissions.ts - Helpers de permisos
  • app/src/courses/operations.ts - Modificado para acceso org (línea 958)
  • app/src/payment/stripe/webhook.ts - Webhooks de equipos
  • app/src/organizations/pages/TeamDashboardPage.tsx
  • app/src/organizations/pages/TeamMembersPage.tsx
  • app/src/organizations/pages/TeamCoursesPage.tsx
  • app/src/organizations/pages/TeamPurchasePage.tsx
  • app/src/admin/dashboards/organizations/ - Admin UI
  • app/src/server/scripts/seedOrganizations.ts - Seed de datos de prueba
  • TESTING_GUIDE.md (en root) - Guía exhaustiva de pruebas
  • /team/{organizationId} - Vista general
  • /team/{organizationId}/members - Gestión de miembros
  • /team/{organizationId}/courses - Gestión de cursos
  • /team/{organizationId}/analytics - Analíticas
  • /team/{organizationId}/billing - Facturación (OWNER only)
  • /teams/purchase - Comprar plan de equipo
  • /invitation/{token} - Aceptar invitación
  • /teams - Landing page de equipos
  • /admin/organizations - Lista de organizaciones
  • /admin/organizations/{organizationId} - Detalle de organización