Tiendas demo internas
Las identidades del dominio @omnibuy.net son marcas como internas. Crean tiendas con suscripciones compensadas (sin cobro real) para el showcase de rubros y themes.
Cómo se identifican
-- Migración 000211
ALTER TABLE merchant_identities ADD COLUMN is_internal BOOLEAN DEFAULT false;
UPDATE merchant_identities
SET is_internal = true
WHERE lower(email) LIKE '%@omnibuy.net';
Se establece por dominio, no por flag manual.
Comportamiento especial
| Aspecto | Tienda normal | Tienda demo |
|---|---|---|
| Suscripción | Trial 14d → cobro | active, sin trial |
current_period_end | NOW() + 14 días | NOW() + 100 años |
tenants.is_demo | false | true |
| Pasarela Culqi | Página de activación | Nunca se muestra |
RequirePlanActive | Bloquea si vencido | Siempre permite (active) |
| Cobro real | Sí (futuro) | Nunca — solo stub |
Flujo
Identidad @omnibuy.net crea tienda
→ /admin/workspaces/plan/:tenant_id
→ Elige plan (Starter/Growth/Pro)
→ Suscripción nace: status='active', current_period_end=NOW()+100años
→ tenant.is_demo = true
→ Entra directo al admin (sin paywall)
Showcase futuro
Las tiendas demo (tenants.is_demo = true) se podrán filtrar para armar una galería pública de tiendas demo por rubro y theme. Esto es un follow-up no implementado.
Nota UX
El selector de planes todavía muestra "14 días gratis" a identidades internas aunque reciben comped. Un follow-up opcional puede mostrar "Cortesía interna" cuando is_internal = true.