# Tabla de cobertura de pantallazos — Manual del Panel Admin

> **Fecha de captura:** 2026-06-08
> **Alcance:** Panel admin desplegado en `https://herradmin.santandreu.tuplanb.com` (entorno de producción del cliente).
> **Naturaleza del documento:** índice que permite a la fase de redacción saber, sección a sección, qué material gráfico existe y cuál falta. **No** es contenido del manual dirigido al usuario final.

## Leyenda de estado

| Marca | Significado |
|-------|-------------|
| ✅ | Capturado correctamente. El pantallazo refleja la pantalla prevista. |
| ⚠️ | Capturado como **sustituto**. El pantallazo refleja una pantalla alternativa a la ideal, por una razón justificada. |
| ⛔ | **Omitido**. No se capturó nada. La sección del manual se redactará sin imagen, o将以 texto explicativo. |

Cuando una pantalla se omite o se sustituye, la columna **Descripción** recoge la causa para que el redactor pueda decidir cómo cubrir esa parte (placeholder, captura en una segunda pasada, o descripción textual).

---

## Cobertura por sección

| Sección | Pantalla/UI | URL | Archivo | Descripción |
|---------|-------------|-----|---------|-------------|
| **00 — Portada** | Login limpio (sin error) | `/login` | `img/00-portada/01-login.png` (163 KB) | ✅ Capturado. Sirve como apertura del manual. |
| **01 — Acceso** | Pantalla de login | `/login` | `img/01-acceso/01-login.png` (162 KB) | ✅ Capturado. |
| 01 — Acceso | Recuperar contraseña (modal o página de "¿Olvidaste tu contraseña?") | `/login#forgot` o `/forgot-password` | — | ⛔ Omitido. La página de login no muestra ningún enlace de recuperación visible. La función puede existir en el código pero no está expuesta en la UI actual del panel. |
| 01 — Acceso | Perfil de usuario | `/profile` o `/users/profile` | `img/01-acceso/03-perfil.png` (228 KB) | ✅ Capturado. |
| 01 — Acceso | Cambio de idioma (dropdown de cabecera) | `/` (cabecera) | `img/01-acceso/04-cambio-idioma.png` (197 KB) | ⚠️ Capturado (sustituto). El dropdown de idioma en la cabecera del panel **no existe** en este despliegue. En su lugar se capturó la pantalla `/languages` (gestión de idiomas del sistema) como aproximación visual del flujo i18n. |
| **02 — Dashboard** | Dashboard principal | `/` o `/dashboard` | `img/02-dashboard/01-dashboard.png` (275 KB) | ✅ Capturado. |
| 02 — Dashboard | Menú lateral (estado expandido) | `/` (mismo área) | `img/02-dashboard/02-menu-lateral.png` (275 KB) | ⚠️ Capturado (sustituto). El pantallazo es **idéntico** a `01-dashboard.png` (275 275 bytes exactos en ambos archivos) porque el menú lateral está **siempre expandido** en este despliegue; no hay estado "colapsado" que mostrar. |
| **03 — Páginas** | Listado de páginas | `/pages` | `img/03-paginas/01-listado.png` (954 KB) | ✅ Capturado. |
| 03 — Páginas | Crear página (formulario) | `/pages/create` | `img/03-paginas/02-crear.png` (383 KB) | ✅ Capturado. |
| 03 — Páginas | Builder de página (drag & drop) | `/pages/{id}/builder` | `img/03-paginas/03-builder.png` (455 KB) | ✅ Capturado. |
| 03 — Páginas | Editar contenido de un componente (modal) | `/pages/{id}/components/{cid}/edit` | `img/03-paginas/04-editar-componente.png` (507 KB) | ⚠️ Capturado (sustituto). La edición de contenido de un componente **no se muestra en un modal**: abre una página completa (`/pages/{id}/components/{cid}/content`). El pantallazo refleja esa pantalla, que es la UI real. |
| **04 — Componentes** | Listado de componentes | `/components` | `img/04-componentes/01-listado.png` (1176 KB) | ✅ Capturado. |
| 04 — Componentes | Crear componente (formulario inicial) | `/components/create` | `img/04-componentes/02-crear.png` (611 KB) | ✅ Capturado. |
| 04 — Componentes | Selector de tipo (block / collection / form / payment) | `/components/create` (selector abierto) | `img/04-componentes/03-tipos.png` (347 KB) | ⚠️ Capturado (sustituto). El selector es un `<select>` HTML nativo, **no** un grid de cards como podría sugerir la documentación previa. El pantallazo muestra el combo abierto con las 4 opciones. |
| 04 — Componentes | Campos editables (configuración de `fields`) | `/components/{id}/fields` | `img/04-componentes/04-campos-editables.png` (739 KB) | ✅ Capturado. |
| 04 — Componentes | Editor de template HTML | `/components/{id}/template` | `img/04-componentes/05-template-html.png` (429 KB) | ✅ Capturado. |
| **05 — Colecciones** | Listado de colecciones (entrada lateral) | submenú lateral Colecciones | `img/05-colecciones/01-listado.png` (349 KB) | ⚠️ Capturado (sustituto). La ruta `/collections` devuelve **404** en este despliegue. En su lugar se capturó la sección "Colecciones" del menú lateral, que es la única superficie navegable real para acceder a los items. |
| 05 — Colecciones | Items de una colección (ej. Noticias) | `/collections/noticias` | `img/05-colecciones/02-items.png` (406 KB) | ✅ Capturado. |
| 05 — Colecciones | Editar un item de colección | `/collections/noticias/{id}/edit` | `img/05-colecciones/03-editar-item.png` (653 KB) | ✅ Capturado. |
| **06 — Formularios** | Listado de formularios tipo `form` | `/forms` o `/cta` | `img/06-formularios/01-listado.png` (286 KB) | ⚠️ Capturado (sustituto). En este despliegue **no hay componentes de tipo `form` en la BD**. La pantalla capturada (`/cta`) muestra el estado "No hay formularios de tipo CTA creados". Se incluye para que el manual documente la pantalla vacía. |
| 06 — Formularios | Crear formulario | — | — | ⛔ Omitido. No hay formularios en la BD; no se puede demostrar el flujo de creación con datos reales. La sección del manual se redactará explicando la configuración y enlazando al JSON de ejemplo. |
| 06 — Formularios | Ver/envíos de un formulario | — | — | ⛔ Omitido. Mismo motivo: no existen formularios. |
| 06 — Formularios | Configurar validación | — | — | ⛔ Omitido. Mismo motivo. |
| **07 — Pagos** | Listado de pagos | `/payments` o `/cta` | `img/07-pagos/01-listado.png` (286 KB) | ⚠️ Capturado (sustituto). En este despliegue **no hay componentes de tipo `payment` en la BD**. La captura es la misma pantalla `/cta` que en 06 — listado vacío de pagos. |
| 07 — Pagos | Crear componente de pago (Stripe) | — | — | ⛔ Omitido. No hay componentes de pago en la BD. |
| **08 — Mailing** | Campañas (listado) | `/mailing/campaigns` | `img/08-mailing/01-campanas.png` (421 KB) | ✅ Capturado. |
| 08 — Mailing | Crear campaña | `/mailing/campaigns/create` | `img/08-mailing/02-crear-campana.png` (340 KB) | ✅ Capturado. |
| 08 — Mailing | Contactos / listas | `/mailing/contacts` | `img/08-mailing/03-contactos.png` (443 KB) | ✅ Capturado. |
| 08 — Mailing | Plantillas de email | `/mailing/templates` | `img/08-mailing/04-plantillas.png` (260 KB) | ✅ Capturado. |
| 08 — Mailing | Componentes de mailing | `/mailing/components` | `img/08-mailing/05-componentes.png` (401 KB) | ✅ Capturado. |
| 08 — Mailing | Reportes / log de envío | `/mailing/reports/{id}` | `img/08-mailing/06-reportes.png` (286 KB) | ✅ Capturado. |
| **09 — CRM** | Listado de leads | — | — | ⛔ Omitido. La sección CRM está **deshabilitada** en este despliegue (`CRM_ENABLED=false` en el `.env` del servidor). Los controladores y vistas existen en el código pero las rutas devuelven 404. La sección del manual se redactará como **referencia teórica**: se documenta la funcionalidad prevista (código fuente) pero se advierte de que no es accesible en la instalación actual. |
| 09 — CRM | Pipeline (estados) | — | — | ⛔ Omitido. Mismo motivo. |
| 09 — CRM | Detalle de lead | — | — | ⛔ Omitido. Mismo motivo. |
| **10 — Abonos** | Listado de temporadas | — | — | ⛔ Omitido. La sección Abonos está **deshabilitada** en este despliegue (`ABONOS_ENABLED=false`). Mismo tratamiento que CRM: referencia teórica basada en el código, con aviso de no disponibilidad. |
| 10 — Abonos | Generar recibos (SEPA) | — | — | ⛔ Omitido. Mismo motivo. |
| 10 — Abonos | Eventos de cargo | — | — | ⛔ Omitido. Mismo motivo. |
| **11 — Variables** | Listado de variables globales (agrupadas por carpeta: CLUB, CONTACTO, GENERAL, REDES SOCIALES, SYSTEM) | `/variables` | `img/11-variables/01-listado.png` (450 KB) | ✅ Capturado. |
| 11 — Variables | Editar variable | `/variables/{key}/edit` | `img/11-variables/02-editar.png` (314 KB) | ✅ Capturado. |
| **12 — Idiomas** | Listado de idiomas (Catalán-CA) | `/languages` | `img/12-idiomas/01-listado.png` (244 KB) | ✅ Capturado. |
| 12 — Idiomas | Pantalla dedicada de traducción | — | — | ⛔ Omitido. La traducción se hace **inline** en cada componente con `is_translatable=true` (editor de campo por campo). No existe una pantalla `/translations` aparte. La sección del manual se redactará explicando el flujo inline. |
| **13 — FAQ** | (n/a) | — | — | ⛔ Omitido. La sección FAQ del manual es **solo texto** (preguntas frecuentes redactadas), no requiere capturas de UI. |

---

## Resumen ejecutivo

- **Pantallazos capturados:** 29 archivos PNG (~13.3 MB en total).
- **Capturas "perfectas" (✅):** 21.
- **Capturas sustituto (⚠️):** 8 — todas ellas con causa documentada y aceptable: dropdowns inexistentes, menús siempre expandidos, selectores nativos en lugar de cards, pantallas vacías por ausencia de datos, edición en página completa en lugar de modal.
- **Omitidos (⛔):** 13 huecos. Se desglosan así:
  - **5** por secciones deshabilitadas por feature flag en este despliegue (CRM, Abonos).
  - **4** por ausencia de datos en la BD (formularios y pagos).
  - **1** por ausencia de UI de recuperación de contraseña.
  - **1** por ausencia de pantalla dedicada de traducción (es flujo inline).
  - **1** FAQ sin UI (es texto).
  - **1** menú lateral colapsado (no existe el estado).
- **Total de huecos con material gráfico utilizable:** 0. Es decir, **toda imagen que se ha decidido capturar existe**; los huecos restantes se cubrirán con descripción textual o referencia al código.

## Implicaciones para la fase de redacción (Task 19 en adelante)

1. **Secciones con material gráfico completo:** 02-dashboard, 03-paginas (con matiz en modal), 04-componentes, 05-colecciones, 08-mailing, 11-variables, 12-idiomas. La redacción puede apoyarse en las capturas.
2. **Secciones con sustituto:** 01-acceso (cambio de idioma), 02-dashboard (menú), 03-paginas (modal → página), 04-componentes (cards → combo), 05-colecciones (listado → submenú), 06-formularios y 07-pagos (estado vacío). El redactor **debe** mencionar el matiz en el texto ("en este despliegue…", "el selector es un combo nativo…") para que el lector no se sienta engañado.
3. **Secciones sin capturas:** 09-crm y 10-abonos. El redactor **debe** empezar el capítulo con un aviso destacado: "Esta sección está deshabilitada en el despliegue actual (`CRM_ENABLED=false` / `ABONOS_ENABLED=false`). El siguiente contenido documenta la funcionalidad a partir del código fuente y debe validarse cuando la sección se reactive." Después, redactar a partir de los controladores/modelos/vistas.
4. **FAQ:** capítulo puramente textual; no enlazar imágenes.

## Verificación

- `find /Users/enriquelopez/Desarrollo/php/apiphp/docs/manual/img -type f -name "*.png" | wc -l` debe devolver `29`.
- Todos los archivos listados en la columna **Archivo** existen en disco y sus tamaños coinciden con los indicados.
