Flujo: Revisión de Imágenes (Cliente)
¿Quién lo usa?
| Rol | Permiso requerido |
|---|---|
BRAND_ADMIN | REVIEWER |
COMPANY_ADMIN | REVIEWER |
VIEWER | Solo lectura (no puede aprobar ni rechazar) |
¿Por qué importa?
La revisión es el paso donde el cliente valida la calidad de las imágenes generadas. Una imagen aprobada avanza al estado de descarga; una rechazada vuelve al equipo Rial para corrección. El flujo puede iniciarse desde la Biblioteca (vista cruzada de todos los proyectos) o desde la vista de un proyecto específico.
Entradas en la plataforma
| URL | Descripción |
|---|---|
/library | Biblioteca: vista cruzada de todos los SKUs del cliente |
/projects | Lista de proyectos (folders) del cliente |
/projects/[projectId] | Vista de SKUs de un proyecto específico |
Paso 1 — Ver imágenes pendientes de aprobación
El cliente abre la Biblioteca y ve la grilla de SKUs en el tab “Pendientes de aprobación”. Por defecto la plataforma abre el tab con más imágenes pendientes.
Datos visibles en cada tarjeta:
- Imagen generada (thumbnail)
- SKU, Marca, Folder del proyecto
- Fecha de creación
- Badge de cantidad de imágenes (para Faceswap con múltiples vistas)
Filtros disponibles:
| Filtro | Campo |
|---|---|
| Búsqueda por texto | Busca por nombre de proyecto o SKU |
| Búsqueda masiva | Pega hasta 100 SKUs separados por coma, espacio o punto y coma |
| Proyecto | Filtra por nombre del folder |
| Marca | Filtra por marca |
| Tipo de proyecto | FACESWAP, BATCH, PRODUCT |
| Fecha de creación | Rango desde/hasta |
Endpoint:
POST /project-images?statuses=PENDING_APPROVAL&limit=20&cursor=<cursor>
Body: { skus?: string[] } ← solo en búsqueda masiva
— Paginación infinita de SKUs por estado
— Devuelve: { projectImages, nextCursor, bulk? }Paso 2 — Búsqueda masiva de SKUs
Para revisar un listado específico de SKUs (por ejemplo, los de una sesión de fotografía), el cliente puede usar la Búsqueda masiva y pegar hasta 100 SKUs de una vez.
Comportamiento:
- Los SKUs se parsean separados por salto de línea, coma, espacio o punto y coma
- Se deduplican automáticamente
- Máximo 100 SKUs únicos
- El resultado muestra un banner con cuántos SKUs se encontraron vs cuántos se ingresaron
Paso 3 — Detalle de imagen
Al hacer clic en un SKU, se abre el modal de revisión. Muestra:
- Izquierda: Imagen original del modelo
- Derecha: Imagen generada (con la prenda del SKU)
- Header: SKU, contador de restantes, tipo de proyecto, estado actual del SKU
- Carrusel inferior: Todas las vistas disponibles del SKU (para proyectos Faceswap con múltiples vistas)
- Flechas: Navegar al SKU Anterior / Siguiente sin cerrar el modal
Indicadores en el carrusel de vistas (Faceswap):
| Ícono | Significado |
|---|---|
| ✗ rojo | Vista rechazada |
| ✓ verde | Vista aprobada |
| Sin ícono | Vista pendiente de aprobación |
Barra inferior:
- Anterior / Siguiente — navegar entre SKUs del mismo tab
- Aprobar — aprueba todos las vistas del SKU
- Rechazar — abre el diálogo de selección y motivo
Paso 4a — Aprobar imagen
Al hacer clic en Aprobar, el SKU completo avanza a PENDING_DOWNLOAD.
Endpoint:
PUT /project-images/change-status/{projectImageId}
Body: { status: "PENDING_DOWNLOAD" }
Efectos en cascada (backend):
— ProjectImage.clientStatus → PENDING_DOWNLOAD
— Si todos los SKUs del proyecto están aprobados:
Project.clientStatus → PENDING_DOWNLOAD
ProjectFolder.clientStatus → PENDING_DOWNLOAD
ProjectFolder.adminStatus → COMPLETED
— Se envía notificación COMPANY_PROJECT_READY_FOR_DOWNLOAD
cuando la carpeta completa queda lista para descargarUndo (“Revertir revisión”): Tras aprobar, aparece un toast de deshacer. Si el cliente no lo usa, la opción permanece disponible en la misma sesión al volver a abrir ese SKU.
Paso 4b — Rechazar imagen
Al hacer clic en Rechazar, se abre el diálogo de rechazo donde el cliente:
- Selecciona las imágenes (vistas) que quiere rechazar
- Elige entre Comentario general o Comentario por vista
- Selecciona el motivo de rechazo predefinido y/o agrega un comentario libre
Motivos de rechazo predefinidos:
- El fit de la prenda no corresponde
- No se logra el diseño de la prenda
- Edad del modelo no corresponde
- Cuerpo desproporcionado
- Problemas en dedos / dientes / ojos / manos
- Baja calidad de la imagen (borrosa o pixelada)
- Otra razón
Endpoint:
PUT /project-images/change-status/{projectImageId}
Body: {
status: "IN_REVIEW",
imagesToReview: [
{ id: string, reason: string, comment?: string }
]
}
Efectos:
— ProjectImage.clientStatus → IN_REVIEW
— ProjectImage.adminStatus → REJECTED
— Notificación ADMIN_NEW_REJECTIONS al equipo RialPaso 5 — Ver SKUs rechazados (tab Rechazadas)
Los SKUs rechazados aparecen en el tab Rechazadas de la Biblioteca.
Al abrir un SKU rechazado, el modal muestra el motivo de rechazo directamente sobre la imagen rechazada, y el badge del header indica “En revisión”.
El carrusel de vistas muestra el estado de cada imagen con íconos ✗/✓/pendiente. El equipo Rial recibirá el rechazo y corregirá las imágenes, volviendo a publicarlas para que el cliente pueda aprobarlas.
Paso 6 — Ver y descargar imágenes aprobadas (tab Aprobadas)
Las imágenes aprobadas aparecen en el tab Aprobadas de la Biblioteca. El cliente puede:
- Descargar reporte — descarga un Excel con el detalle de los SKUs
- Descargar todo — descarga todas las imágenes en ZIP
- Seleccionar — modo de selección para descargar un subconjunto
- No descargadas — filtro para ver solo las que aún no se han descargado
Endpoints de descarga:
POST /excel/project-images/report?...
Body: { ids?: string[] }
— Devuelve archivo .xlsx con detalle de SKUs y estados
GET /downloads/images?status=COMPLETED&ids=...
— Genera y descarga un ZIP con las imágenes seleccionadasPaso 7 — Revisión desde la vista de Proyectos
El cliente también puede revisar imágenes directamente desde la vista de un proyecto específico en /projects.
Tabs en la vista de proyectos:
| Tab | Estado del folder | Descripción |
|---|---|---|
| En progreso | IN_PROGRESS | Proyectos con imágenes siendo generadas |
| Pendientes de aprobación | PENDING_APPROVAL | Listos para revisar |
| En revisión | IN_REVIEW | Con correcciones solicitadas |
| Por descargar | PENDING_DOWNLOAD | Aprobados, disponibles para descarga |
| Completados | COMPLETED | Descargados |
Al hacer clic en un proyecto, se accede a la grilla de SKUs de ese proyecto específico con las mismas funciones de revisión (Aprobar / Rechazar).
Máquina de estados del SKU (clientStatus)
Resumen de endpoints
| Método | Endpoint | Descripción |
|---|---|---|
POST | /project-images?statuses=...&cursor=...&limit=... | Listado paginado de SKUs |
PUT | /project-images/change-status/{id} | Aprobar / Rechazar / Revertir |
GET | /project-folders | Lista de carpetas (para filtros) |
POST | /excel/project-images/report | Descargar reporte Excel |
Notas importantes
- El cliente puede aprobar SKUs de forma individual sin esperar a revisar todos. Los SKUs aprobados quedan disponibles para descarga de inmediato.
- Si el cliente rechaza solo algunos SKUs, el folder permanece en
IN_REVIEWhasta que todas las correcciones sean aprobadas. - El permiso
VIEWERpermite ver el detalle de los SKUs pero no puede aprobar ni rechazar. - La opción Revertir revisión está disponible durante la misma sesión del navegador (basado en session storage). Una vez el cliente cierra la sesión, la revisión queda confirmada.
- El cliente recibe una notificación
COMPANY_PROJECT_READY_FOR_DOWNLOADcuando el folder completo queda listo para descargar.