# Blueprint — Sistema de Administración, Seguimiento y Control (Ecosistema BewPro + Compañía Digital)

> Documento vivo. Mapea **todo** el sistema de admin/tracking/control: lo construido (✅), lo parcial (🟡) y los gaps (🔴), para que sea identificable **qué falta para la madurez total**.
> Principio rector: **BewPro DB = fuente de verdad del estado/tracking**; el código/JSON = fuente de la definición (cores, demos). Airtable → legacy.
> Vivo desde 2026-06-06.

## 1. Dos dominios

**A. Operativo (clientes / dinero)** — SoT: BewPro DB ✅
- `tenant_projects`: user_id, parent_reseller_id, closer_user_id, **product_name**, pipeline_status, delivery_status, **billing** (billing_model/cycle/status/currency/amount_usd/amount_ars/payment_method/next_billing_date).
- `users` (roles Spatie) · `commissions` · `missile_drafts`.

**B. Catálogo (producto)** — SoT: mixto/fragmentado ⚠️
- Cores (26 JSON `database/seeders/products/core/*.json`) · Shop Products (254, tabla `products`, `core_slug`) · `product_concepts` (pipeline dev, DB ✅) · Módulos (código+Airtable+`alias-matrix.json`, 🔴 sin DB) · Demos (21 blades+schemas, readiness 🔴 no persistido) · `closure_requests` (pedidos comerciales, DB ✅).

**Relación canónica:** `tenant_project.product_name → products.core_slug → core JSON (demo + modules) → demo blade/schema`.

## 2. Lentes → preguntas → fuente → estado

| Lente | Pregunta | Fuente | Estado |
|---|---|---|---|
| Proyectos | activos / user / sub+tipo / producto·módulos·demo | tenant_projects + billing + product_name→core | ✅ vista unificada en `/admin/tenants` (demo+módulos, billing/sub, filtro CD/BP) |
| Productos | core vs variante / publicado / en cola / solicitado | products.core_slug, is_active+stripe, product_concepts.lifecycle_stage, closure_requests | ✅ (Factory) |
| Módulos | activos / en qué cores / en dev / solicitados / **última act.** / **qué hacen** | tabla `modules` (sync desde core JSON + config + alias-matrix) | ✅ DB SoT + dashboard (`bewpro:modules:sync`) |
| Demos | validados/ready / **qué falta** / solicitados | tabla `demo_readiness` (persiste demosAudit) | ✅ DB SoT + dashboard (`bewpro:demos:audit`) |
| Clientes/Subs | cuántos / qué tienen / subs activas anual·mensual | users + tenant_projects.billing | ✅ |
| **Dinero / CD vs BP** | MRR por motor (legacy/CD vs stripe/BP) | billing_model | 🟡 corte explícito en curso |
| **Cobranzas** | a quién cobrar / qué vence | next_billing_date | 🟡 vista en curso |
| **Churn** | bajas / vencidos sin renovar | billing_status | 🟡 |
| **Red** | resellers/closers: cierres, comisiones, conversión | users.closes_count + commissions | ✅ leaderboard `/admin/network` (NetworkLeaderboardService) |
| Embudo | lead→lanzado→contactado→pagando | MissileFunnelMetrics | ✅ (Comando) |
| Estabilidad | cron root / cache | crontab root (línea sync) | ✅ resuelto — línea root eliminada (la corre el scheduler como bewpro22) |

## 3. IA de dashboards (por lente)

| Dashboard | Lente | Reusa | Acceso |
|---|---|---|---|
| Centro de Comando | Negocio: embudo+MRR+atención+cobranzas | MissileFunnelMetrics, billing | Admin |
| Proyectos & Clientes | Proyectos+Clientes+Subs | tenant_projects+billing, /admin/tenants | Admin/Reseller |
| Factory | Productos: cores/variantes/pipeline/health | ProductFactoryService, ProductHealthService | Admin/Reseller |
| Demos & Readiness | Demos: ready/qué falta | ProductHealthService (persistir) | Admin |
| Módulos | Módulos: desc/status/updated/dónde | tabla `modules` nueva + alias-matrix | Admin |
| Pedidos comerciales | Solicitados | closure_requests + demand | Admin/Reseller |

## 4. Navegación (sidebar, `config/demo1/menu.php`) — por lente, lo estratégico arriba

```
🎯 COMANDO       · Centro de Comando · Panel
💰 COMERCIAL     · Misiles (bandeja·tablero·comando) · Pedidos asesores · Nuevo Proyecto
👥 CLIENTES      · Proyectos-Cliente · Mis Clientes · En Vivo (gracia·cobranzas)
🏭 CATÁLOGO      · Pipeline & Productos · Módulos · Demos & Readiness · Salud de productos
```

## 5. Roadmap a madurez total

- **Fase 0 — Estabilidad:** ✅ resuelto (2026-06-06). La línea de root que corría `bewpro:sync-tenant-projects` como root (cache poisoning) era **redundante** —el scheduler de Laravel (`Kernel.php:77`) ya lo corre cada 10 min vía el cron de bewpro22 (`schedule:run`)—. Se **eliminó** la línea de root (backup en `/root/crontab-backup-*.txt`) + chown del log a bewpro22. Cero pérdida de funcionalidad.
- **Fase 1 — Acomodar + Dinero:** sidebar reorg · Comando con corte CD/BP + cobranzas + churn · vista unificada Proyectos&Clientes.
- **Fase 2 — Catálogo:** ✅ módulos→DB (`modules` + `bewpro:modules:sync` + dashboard) · ✅ demos readiness persistido (`demo_readiness` + `bewpro:demos:audit` + dashboard) · pulir Factory.
- **Fase 3 — Red:** ✅ leaderboard `/admin/network` (NetworkLeaderboardService: MRR traído, closes, SET, comisiones pending/paid). Comisiones desde conversión ya cableadas (TenantProjectObserver + AffiliateAttributionService + ResellerTierUpgradeService).
- **Fase 4 — Integridad/SoT:** 🟡 `bewpro:integrity:audit` (read-only) ✅ · `bewpro:integrity:fix-product-names` (23 normalizados local) ✅ · `AIRTABLE_SUBSCRIPTIONS_TABLE` **NO tocar** (es la tabla Projects/pipeline, no misconfig — ver memoria) · pendiente: limpiar orphans/dedup en prod, apagar deps Airtable.

**Madurez total =** cada lente responde desde una query única (SoT en DB), navegable desde el sidebar reorganizado, con lo relevante resaltado, y los 3 gaps (módulos, demos readiness, red) cerrados.

## Servicios/archivos clave
- `app/Services/MissileFunnelMetrics.php` (embudo + dinero + cobranzas) · `app/Services/ProductHealthService.php` (6 ejes catálogo) · `app/Services/ProductFactoryService.php` (factory) · `app/Models/{TenantProject,MissileDraft,ProductConcept,Commission,ClosureRequest}.php` · `config/billing.php` (cotización ARS→USD).
