El anexo técnico · matriz 1 de octubre de 2026 d95487779 · accesos 23 de septiembre de 2026 4c6808ac5 · rama pablo-estrada/pantallas-fieles-al-producto

El anexo técnico

Lo que sostiene la revisión y en las consolas estorbaría: quién es quién, la matriz completa, lo por venir, los desvíos, lo público sin sesión y la leyenda del checklist.

Quién es quién · fuente: PDF 22-sep §2

Los cuatro roles del producto

El rol sale del cargo de TNI, no del perfil. Las cuatro fichas repiten, palabra por palabra, la tabla de reglas que Pablo fijó el 22-sep. Las cuentas son las del clon local: sin medir (falta salida/cuentas-por-rol.json).

  1. Admin TNItni_admin cuentas: sin medir
    quién lo tiene
    Cargo 1 de TNI (14 activos), o lo ponemos a mano (p. ej. J. Lutz, id 37).
    qué oficinas ve
    Toda la red, mirando por país u oficina (lente).
    qué puede hacer
    Todo. Es el único que configura la prospección (pesos), de arriba hacia abajo.
    qué ve de dinero
    Toda la red.
    en la matriz
    74 pantallas declaradas · hoy abre 71 (A + B)
  2. Dueñofranchise_owner cuentas: sin medir
    quién lo tiene
    Cargo 2 de TNI, sin cuentas de administración ni genéricas.
    qué oficinas ve
    Todas las oficinas que cuentan de su división. Colombia: los dos hermanos ven las 7.
    qué puede hacer
    Todo dentro de su división. Único que nombra gerentes. Asigna los negocios, pero no queda como vendedor de uno que viaja a TNI: los franquiciados no tienen oficina en el sistema de TNI. En producción.
    qué ve de dinero
    El dinero de sus oficinas. Reparte presupuesto entre los vendedores, carga saldo y fija el tope.
    en la matriz
    81 pantallas declaradas · hoy abre 68 (A + B)
  3. Gerentefranchise_admin cuentas: sin medir
    quién lo tiene
    Lo nombra el dueño en el panel (queda en role_override). Sugerencia: el gerente general que TNI tiene en IdGerenteGeneral; si no hay, entra como empleado y el dueño decide.
    qué oficinas ve
    Sólo su oficina. Respuesta de TNI del 22-sep: ListaOficinas no cuenta para el alcance.
    qué puede hacer
    Lo mismo que el dueño, dinero y tope de gasto incluidos. No nombra gerentes. Este es el «permiso completo» que el dueño le puede dar a un vendedor: no hay un quinto rol.
    qué ve de dinero
    El dinero de su oficina. Reparte presupuesto, carga saldo y ve el consumo de cada vendedor.
    en la matriz
    82 pantallas declaradas · hoy abre 70 (A + B)
  4. Empleadofranchise_user cuentas: sin medir
    quién lo tiene
    Cargos 3 a 8 (incluidos quienes tienen permiso de franquiciado sin el cargo).
    qué oficinas ve
    Sólo su oficina (IdOficina).
    qué puede hacer
    Todas las funciones: prospectar, Rocket completo (repartir negocios y pausar la cadencia), campañas, enriquecer, IA y Truly Coach, además de pipeline, conversaciones, agenda y clientes. El único límite es su presupuesto.
    qué ve de dinero
    Sólo lo suyo: su consumo y su presupuesto, no el de los demás ni el de la oficina. Sin saldo: una pantalla se lo dice y puede solicitarlo al gerente o al dueño.
    en la matriz
    37 pantallas declaradas · hoy abre 32 (A + B)

Sin acceso. Cargos 9 (técnico) y 10 (otro), aunque tengan perfil de acceso en TNI: sin acceso.

Heredados en el código: 2 roles que no son del producto

El tipo Role todavía declara 6 roles; el producto usa cuatro. Los otros siguen en la matriz y por eso se cuentan aparte:

  • auditor · Auditor · sombra de sólo lectura del Admin TNI: ve lo mismo y no escribe nada · 51 pantallas en la matriz · cuentas: sin medir
  • country_admin · Director de país · director de país; nadie lo tiene y su retiro final es CAT-5165 · 54 pantallas en la matriz · cuentas: sin medir

El «gerente» de antes ya no existe en el tipo Role: hoy Gerente es franchise_admin, y los documentos que digan otra cosa están viejos.

La matriz · SCREEN_ACCESS × RUTA_SCREEN

41 pantallas de la matriz, por rol

Una pantalla (Screen) es la unidad a la que la matriz le da o le niega el paso; una pantalla agrupa una o varias rutas. ✓ = declarada para el rol; — = no. Es lo que el código DECLARA, no lo que contesta: eso se mide abajo, rol por rol.

pantallarutasAdmin TNIDueñoGerenteEmpleado
admin_ai_quality1✓———
admin_audit2✓———
admin_cs_pipeline1✓———
admin_data1✓———
admin_enriquecimiento1✓———
admin_feature_flags1✓———
admin_finops1✓———
admin_franchises6✓———
admin_network1✓———
admin_observability1✓———
admin_policies1✓———
admin_prospeccion1✓———
admin_quotas1✓—✓—
admin_report_delivery2✓———
admin_subprocessors1✓———
admin_tablero1✓———
admin_users2✓✓✓—
admin_whatsapp_signup1✓———
billing4✓✓✓✓
campaigns3—✓✓✓
clients2—✓✓✓
cross_sell2✓✓✓✓
inbox2—✓✓✓
legal3✓✓✓✓
onboarding6✓✓✓—
pipeline6—✓✓✓
prospecting8—✓✓✓
reports18✓✓✓—
reports_dinero1✓✓✓—
reports_gasto1✓———
reports_motor1✓———
reports_precalculo1✓———
reports_red3✓———
reports_redVista1✓✓✓—
rocket2—✓✓✓
settings_agenda3—✓✓✓
settings_modelos_ia1✓———
settings_oficina16—✓✓—
settings_personal8✓✓✓✓
team1—✓✓—
today2✓✓✓✓
pantallas declaradas12174818237
Pantallas por venir · fuente: planes.json

Lo que todavía no está en el árbol, o acaba de entrar

planes: pendiente de medir.

Desvíos · 12 rutas que sólo mandan a otro lado

Desvíos: de dónde a dónde

Rutas que existen en el árbol para redirigir. «Declarado» es lo que dice su page.tsx; «medido» es a dónde mandó de verdad a cada rol.

origendeclaradoAdmin TNIDueñoGerenteEmpleadosin sesión
/ → /login 307 → /login307 → /login307 → /login307 → /login 307 → /login?next=…
/admin/network → /reports/network 307 → /reports/network307 → /reports/network307 → /reports/network307 → /reports/network 307 → /login?next=…
/admin/reports → /reports 307 → /reports307 → /reports307 → /reports307 → /reports 307 → /login?next=…
/ai-sales → /sales/discover 307 → /sales/discover307 → /sales/discover307 → /sales/discover307 → /sales/discover 307 → /login?next=…
/leads → /pipeline 307 → /pipeline307 → /pipeline307 → /pipeline307 → /pipeline 307 → /login?next=…
/sales → /sales/discover 307 → /sales/discover307 → /sales/discover307 → /sales/discover307 → /sales/discover 307 → /login?next=…
/sales/board → /sales-board 307 → /sales-board307 → /sales-board307 → /sales-board307 → /sales-board 307 → /login?next=…
/sales/search → /sales/discover/sector 307 → /sales/discover/sector307 → /sales/discover/sector307 → /sales/discover/sector307 → /sales/discover/sector 307 → /login?next=…
/settings/billing → /billing 307 → /settings307 → /billing307 → /billing307 → /settings 307 → /login?next=…
/settings/franchise/agenda → /settings/franchise/equipo 307 → /settings307 → /settings/franchise/equipo307 → /settings/franchise/equipo307 → /settings/franchise/equipo 307 → /login?next=…
/settings/reportes → /reports/semanal 307 → /reports/semanal307 → /reports/semanal307 → /reports/semanal307 → /reports/semanal 307 → /login?next=…
/today → /dashboard 200 ↪ /dashboard200 ↪ /dashboard200 ↪ /dashboard200 ↪ /dashboard 307 → /login?next=…
Sin sesión · 12 rutas públicas · medición anonimo

Lo que se ve sin entrar

Lo que contestó el producto a una petición sin cookie, y qué hace con quien ya entró.

rutanombresin sesiónAdmin TNIDueñoGerenteEmpleado
/acceso-denegado sin rótulo 200 200200200200
/agendar/[oficina]abre con /agendar/679 sin rótulo 200 200200200200
/agendar/gestionar Cronostítulo de la página; sin entrada de menú 200 200200200200
/dev/cronos sin rótulo 307 → /login?next=… 200200200200
/invitacion/[token] Activar tu cuenta · Truly Globaltítulo de la página; sin entrada de menú sin medir sin medirsin medirsin medirsin medir
/login Iniciar sesióntítulo de la página; sin entrada de menú 200 307 → /dashboard307 → /dashboard307 → /dashboard307 → /dashboard
/login/en Sign intítulo de la página; sin entrada de menú 200 307 → /dashboard307 → /dashboard307 → /dashboard307 → /dashboard
/login/mfa Verificación en dos pasos · Truly Globaltítulo de la página; sin entrada de menú 307 → /login?next=… 307 → /login?next=…307 → /login?next=…307 → /login?next=…307 → /login?next=…
/login/mfa/setup Activar 2FA · Truly Globaltítulo de la página; sin entrada de menú 307 → /login?next=… 200200200200
/login/restablecer Contraseña · Truly Globaltítulo de la página; sin entrada de menú 200 200200200200
/roadmap sin rótulo 200 200200200200
/session-expired Sesión expiradatítulo de la página; sin entrada de menú 200 200200200200
El checklist · 10 puntos por pantalla y por rol

Cómo se marca, y cómo se guarda

Cada número cicla pendiente → ok → defecto. El punto 1 arranca en defecto cuando la medición ya dijo que la pantalla no abre, y el 8 cuando la consola gritó en la foto. Lo que marcás queda en este navegador (las marcas se comparten entre todas las páginas del sitio); Exportar revisión en la portada baja un revision-pantallas.json que se guarda en el repo y el sitio lo vuelve a leer la próxima vez que se genere.

  1. 1 abre para el rol y recorta a su alcance
  2. 2 vosea y habla el idioma del usuario
  3. 3 cada cifra con su definición y formato global
  4. 4 estados: carga / vacío / error / sin permiso
  5. 5 1440 sin desbordes
  6. 6 390 sin desbordes
  7. 7 los botones responden
  8. 8 consola limpia
  9. 9 Amanecer (tipografía, color, densidad)
  10. 10 refleja el cambio planeado (si hay tarea)

Última revisión guardada en el repo: ninguna todavía.

abrir aparte
Foto de la pantalla a tamaño completo