Crear tienda
Un merchant puede crear múltiples tiendas desde el hub. Cada tienda nueva crea un tenant + una membresía owner bajo la identidad actual.
Formulario
Ruta: GET /admin/workspaces/new
| Campo | Tipo | Descripción |
|---|---|---|
| Nombre de la tienda | text | Nombre visible del tenant |
| Dirección | text | Subdominio (slug.omnibuy.net) |
| País | select | PE (default), CO, CL, US… — moneda derivada automáticamente |
El slug se genera desde el nombre y se valida como subdominio único.
Creación
Ruta: POST /admin/workspaces/new
El handler CreateNew ejecuta una transacción:
tenantsSvc.CreateTenant— crea el tenant con slug, nombre, país, moneda derivada- Inserta membresía owner:
INSERT INTO merchant_users (identity_id, tenant_id, role='owner') - Dual-write: también inserta email/name en merchant_users para compat
Después de crear
Crear tienda → /admin/workspaces/plan/:tenant_id (selector de plan)
El merchant debe elegir un plan antes de acceder al admin de la tienda.
Errores
| Error | Causa |
|---|---|
| "El subdominio ya está en uso" | Slug duplicado |
| 422 con HTMX | Validación de formulario |