# Matriz de Control & Supervisión — ¿tenemos la vista/filtro para cada revisión?

> Doc vivo desde 2026-06-07. Mapea, por dominio, **qué revisiones de control/supervisión corresponden** (best practices) → **la vista/filtro que la habilita** → **cobertura** (✅ tenemos · 🟡 parcial · 🔴 gap).
> Objetivo: que cada tipo de control se pueda ejecutar **desde el panel**, no a ciegas ni solo por CLI/Slack.

## A. Financiero / Contable / Billing 💰

| Revisión / control | Vista/filtro | Cobertura |
|---|---|---|
| MRR total + corte **CD vs BP** | Centro de Comando (Dinero) | ✅ |
| **Ingreso no trackeado** (activos sin billing) | `/admin/tenants` filtro **Sin billing** + badge | ✅ (nuevo) |
| Quién paga / free / trial / churn | Comando + filtros `paying/free/trial/churn` | ✅ |
| **Cobranzas / renovaciones** (vencidas/semana/próximas) | Comando → Cobranzas (por `next_billing_date`) | ✅ con data (backfill desde Airtable + webhook la mantiene) |
| Gracia por vencer / trials terminando | Comando → Atención (`grace_expiring`, `trials_ending`) | ✅ |
| **Mora / pagos fallidos (dunning / AR aging)** | `/admin/tenants` filtro **Mora** + badge por fila + card · Comando (mora + MRR en riesgo) | ✅ `billing_status='past_due'` + `failed_payment_count`; webhook lo mantiene |
| Ingresos por producto/core | Comando → byProduct | ✅ parcial |
| Comisiones a pagar (red) | `/admin/network` | ✅ |
| **Conciliación Stripe ↔ DB ↔ Airtable** | comandos CLI (`reconcile-stripe`) | 🟡 sin vista |

**Gap prioritario del dominio:** ✅ mora/pagos-fallidos cerrado (estado `past_due` + vista). Queda cobranzas con `next_billing_date` cargado (🟡 — el webhook ya lo setea en cada pago OK; los legacy necesitan carga manual) y conciliación (🟡).

## B. Tenants / Proyectos (operativo) 👥

| Revisión / control | Vista/filtro | Cobertura |
|---|---|---|
| Estado del ciclo (active/paused/failed/required) | `/admin/tenants` stats + tabs | ✅ |
| Producto → demo → módulos por proyecto | `/admin/tenants` (resolveProductMeta) | ✅ |
| Sub/billing por proyecto | `/admin/tenants` columna Plan | ✅ |
| Provisioning fallido / colgado | tabs failed/required | ✅ |
| **Huérfanos** (sin cliente) | `/admin/tenants` chip Integridad `orphan` | ✅ |
| **Sin reseller** | `/admin/tenants` chip `no_reseller` | ✅ |
| **product_name inválido / vacío** | `/admin/tenants` chips `invalid_product` / `no_product` | ✅ |
| **Sync health / stale** (no sincronizado hace X, links rotos) | — | 🟡 sin vista |

**Gap del dominio (cerrado parcial):** los controles de integridad ahora son **chips clickeables en la grilla** (lente `integrity`) → visibles y accionables desde el panel. Queda sync health/stale.

## C. Catálogo / Factory 🏭

| Revisión / control | Vista/filtro | Cobertura |
|---|---|---|
| Productos: core/variante/publicado/cola | Factory (Pipeline & Productos) | ✅ |
| Salud de productos (6 ejes, 20 checks) | Salud de Productos | ✅ |
| Módulos: estado/desc/dónde/última act. | Dashboard Módulos (tabla `modules`) | ✅ |
| Demos readiness / qué falta | Demos & Readiness (tabla `demo_readiness`) | ✅ |
| Pedidos comerciales (solicitados) | closure-requests | ✅ |

**Dominio bien cubierto.** ✅

## D. Red / Comercial (conversión) 🚀

| Revisión / control | Vista/filtro | Cobertura |
|---|---|---|
| Embudo lead→lanzado→contactado→pagando | Centro de Comando | ✅ |
| Leaderboard resellers/closers | `/admin/network` | ✅ |
| Misiles (pipeline de venta) | Misiles (bandeja/tablero/comando) | ✅ |
| Comisiones (pending/paid) | `/admin/network` | ✅ |

**Dominio bien cubierto.** ✅

## E. Integridad / Datos (transversal) 🧹

| Revisión / control | Vista/filtro | Cobertura |
|---|---|---|
| Orphans / product_name / dups / coherencia billing | `bewpro:integrity:audit` (read-only) | 🟡 CLI, no panel |
| Normalización product_name | `bewpro:integrity:fix-product-names` | ✅ CLI |
| Estabilidad del sync | `bewpro:sync-tenant-projects` (endurecido) | ✅ |

## Roadmap de cierre de gaps (orden recomendado)

1. ✅ **Integridad → grilla** (hecho): chips `huérfano` / `sin reseller` / `sin producto` / `producto inválido` en `/admin/tenants` (lente `integrity`).
2. ✅ **Mora / pagos fallidos** (hecho): `past_due` + `failed_payment_count`, webhook lo mantiene, filtro+badge+card en `/admin/tenants` + línea en Comando (MRR en riesgo).
3. **Cobranzas** (data): cargar `next_billing_date` → la sección del Comando cobra vida.
4. **Conciliación / sync health** (🟡): pequeña vista de "stale / no conciliado" o badges en la grilla.

**Principio:** cada control de la matriz debe poder ejecutarse **desde el panel** (visible + accionable), no por CLI/Slack a ciegas. Relacionado con `docs/bewpro2.0/sistema-admin-control-blueprint.md`.
