--- id: "RF-PMC-006" title: "Assets Module (DAM)" type: "Requirement" status: "Done" priority: "Alta" module: "assets" project: "platform_marketing_content" version: "1.0" rf_count: 12 created_date: "2025-12-08" updated_date: "2026-01-04" --- # Requerimientos Funcionales - PMC-006 Assets **Módulo:** Assets (DAM) **Versión:** 1.0.0 **Fecha:** 2025-12-08 --- ## Gestión de Assets ### RF-PMC-006-001: Subir Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-001 | | **Nombre** | Subir Asset | | **Prioridad** | P1 | | **Actor** | Creative | **Datos de entrada:** - file(s): array[file] (requerido) - name: string (opcional, usa filename si vacío) - description: text (opcional) - tags: array[string] (opcional) - campaign_id: UUID (opcional) **Criterios de aceptación:** - [ ] Upload múltiple funciona - [ ] Drag & drop soportado - [ ] Thumbnails generados automáticamente - [ ] Progreso visible durante upload --- ### RF-PMC-006-002: Ver Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-002 | | **Nombre** | Ver Asset | | **Prioridad** | P1 | | **Actor** | Todos los roles | **Datos de salida:** - Preview/visualización del asset - Metadata completa - Historial de versiones - Comentarios - Estado de aprobación **Criterios de aceptación:** - [ ] Lightbox para imágenes - [ ] Player para videos - [ ] Viewer para documentos - [ ] Zoom disponible --- ### RF-PMC-006-003: Editar Metadata de Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-003 | | **Nombre** | Editar Metadata de Asset | | **Prioridad** | P1 | | **Actor** | Creative | **Datos editables:** - name - description - tags - visibility **Criterios de aceptación:** - [ ] Cambios guardados correctamente - [ ] Historial de cambios registrado --- ### RF-PMC-006-004: Eliminar Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-004 | | **Nombre** | Eliminar Asset | | **Prioridad** | P1 | | **Actor** | Creative, Tenant Admin | **Restricciones:** - Assets aprobados no pueden eliminarse (solo admin) - Soft delete con retención 30 días **Criterios de aceptación:** - [ ] Soft delete funciona - [ ] Asset va a papelera - [ ] Confirmación requerida --- ### RF-PMC-006-005: Restaurar Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-005 | | **Nombre** | Restaurar Asset | | **Prioridad** | P2 | | **Actor** | Creative, Tenant Admin | **Descripción:** Recuperar asset de la papelera. **Criterios de aceptación:** - [ ] Asset restaurado a su estado anterior - [ ] deleted_at se limpia - [ ] Disponible dentro de 30 días --- ### RF-PMC-006-006: Listar Assets | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-006 | | **Nombre** | Listar Assets | | **Prioridad** | P1 | | **Actor** | Todos los roles | **Vistas:** - Grid (thumbnails) - Lista (tabla con metadata) **Filtros:** - type (image, video, document, copy, model) - status (draft, pending_review, approved, rejected) - campaign_id - collection_id - tags - date_range - source (generated, uploaded) **Criterios de aceptación:** - [ ] Ambas vistas funcionan - [ ] Filtros combinables - [ ] Paginación con scroll infinito o páginas - [ ] Ordenamiento múltiple --- ### RF-PMC-006-007: Búsqueda de Assets | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-007 | | **Nombre** | Búsqueda de Assets | | **Prioridad** | P1 | | **Actor** | Todos los roles | **Campos buscables:** - name - description - tags - prompt (para generados) **Criterios de aceptación:** - [ ] Búsqueda de texto funciona - [ ] Resultados relevantes primero - [ ] Highlighting de matches --- ## Colecciones ### RF-PMC-006-008: Crear Colección | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-008 | | **Nombre** | Crear Colección | | **Prioridad** | P1 | | **Actor** | Creative | **Datos de entrada:** - name: string (requerido) - description: text (opcional) - type: enum (manual, smart) - smart_filters: object (si type=smart) **Criterios de aceptación:** - [ ] Colección creada correctamente - [ ] Smart collection ejecuta filtros --- ### RF-PMC-006-009: Editar Colección | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-009 | | **Nombre** | Editar Colección | | **Prioridad** | P2 | | **Actor** | Creative | **Criterios de aceptación:** - [ ] Nombre y descripción editables - [ ] Filtros de smart collection editables - [ ] Cover image seleccionable --- ### RF-PMC-006-010: Agregar Assets a Colección | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-010 | | **Nombre** | Agregar Assets a Colección | | **Prioridad** | P1 | | **Actor** | Creative | **Métodos:** - Desde asset detail → "Add to collection" - Desde colección → "Add assets" - Bulk selection → "Add to collection" **Criterios de aceptación:** - [ ] Múltiples métodos funcionan - [ ] Asset puede estar en múltiples colecciones - [ ] No duplicados en misma colección --- ### RF-PMC-006-011: Quitar Assets de Colección | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-011 | | **Nombre** | Quitar Assets de Colección | | **Prioridad** | P2 | | **Actor** | Creative | **Criterios de aceptación:** - [ ] Asset se desvincula de colección - [ ] Asset NO se elimina - [ ] Bulk removal soportado --- ### RF-PMC-006-012: Eliminar Colección | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-012 | | **Nombre** | Eliminar Colección | | **Prioridad** | P2 | | **Actor** | Creative | **Criterios de aceptación:** - [ ] Colección eliminada - [ ] Assets NO se eliminan - [ ] Confirmación requerida --- ## Versiones ### RF-PMC-006-013: Subir Nueva Versión de Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-013 | | **Nombre** | Subir Nueva Versión de Asset | | **Prioridad** | P2 | | **Actor** | Creative | **Datos de entrada:** - asset_id: UUID - new_file: file - changes_description: text (opcional) **Criterios de aceptación:** - [ ] Nueva versión almacenada - [ ] Version number incrementado - [ ] Versión anterior preservada --- ### RF-PMC-006-014: Ver Historial de Versiones | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-014 | | **Nombre** | Ver Historial de Versiones | | **Prioridad** | P2 | | **Actor** | Creative | **Datos de salida:** - Lista de versiones con: - Número de versión - Fecha - Usuario - Descripción de cambios - Preview **Criterios de aceptación:** - [ ] Historial completo visible - [ ] Click para ver versión específica - [ ] Opción de restaurar versión anterior --- ### RF-PMC-006-015: Restaurar Versión Anterior | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-015 | | **Nombre** | Restaurar Versión Anterior | | **Prioridad** | P3 | | **Actor** | Creative | **Descripción:** Hacer que una versión anterior sea la actual. **Criterios de aceptación:** - [ ] Versión seleccionada se convierte en actual - [ ] Nueva versión creada (copia) - [ ] Historial preservado --- ## Aprobación ### RF-PMC-006-016: Aprobar Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-016 | | **Nombre** | Aprobar Asset | | **Prioridad** | P1 | | **Actor** | Creative, Tenant Admin | **Criterios de aceptación:** - [ ] Status cambia a "approved" - [ ] approved_by y approved_at registrados - [ ] Asset no editable después (excepto metadata) --- ### RF-PMC-006-017: Rechazar Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-017 | | **Nombre** | Rechazar Asset | | **Prioridad** | P1 | | **Actor** | Creative, Tenant Admin | **Datos de entrada:** - feedback: text (requerido) **Criterios de aceptación:** - [ ] Status cambia a "rejected" - [ ] Feedback almacenado - [ ] Asset puede regenerarse/versionarse --- ## Comentarios ### RF-PMC-006-018: Agregar Comentario a Asset | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-018 | | **Nombre** | Agregar Comentario a Asset | | **Prioridad** | P1 | | **Actor** | Creative, Tenant Admin | **Datos de entrada:** - content: text (requerido) - position: object (x, y) - opcional, para comentarios en imagen **Criterios de aceptación:** - [ ] Comentario se crea - [ ] Posición en imagen soportada - [ ] Notificación a equipo --- ### RF-PMC-006-019: Responder Comentario | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-019 | | **Nombre** | Responder Comentario | | **Prioridad** | P2 | | **Actor** | Creative, Tenant Admin | **Criterios de aceptación:** - [ ] Respuesta vinculada al comentario padre - [ ] Thread visible - [ ] Notificación a participantes --- ### RF-PMC-006-020: Resolver Comentario | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-020 | | **Nombre** | Resolver Comentario | | **Prioridad** | P2 | | **Actor** | Creative | **Criterios de aceptación:** - [ ] is_resolved cambia a true - [ ] Comentario colapsado visualmente - [ ] Puede des-resolverse --- ## Descargas ### RF-PMC-006-021: Descargar Asset Individual | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-021 | | **Nombre** | Descargar Asset Individual | | **Prioridad** | P1 | | **Actor** | Creative, Tenant Admin | **Opciones:** - Original - Convertido (formato diferente) - Tamaño reducido **Criterios de aceptación:** - [ ] Descarga inicia correctamente - [ ] Registro de descarga creado - [ ] Conversión on-the-fly funciona --- ### RF-PMC-006-022: Descargar Múltiples Assets (ZIP) | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-022 | | **Nombre** | Descargar Múltiples Assets (ZIP) | | **Prioridad** | P1 | | **Actor** | Creative, Tenant Admin | **Datos de entrada:** - asset_ids: array[UUID] - include_metadata: boolean (opcional) **Criterios de aceptación:** - [ ] ZIP generado con estructura organizada - [ ] Progreso visible para ZIPs grandes - [ ] Metadata en JSON opcional --- ### RF-PMC-006-023: Generar Enlace Temporal | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-023 | | **Nombre** | Generar Enlace Temporal | | **Prioridad** | P2 | | **Actor** | Creative, Tenant Admin | **Datos de entrada:** - asset_id: UUID - expiry_days: number (default: 7, max: 30) **Criterios de aceptación:** - [ ] URL única generada - [ ] Expira después del tiempo configurado - [ ] No requiere autenticación para descargar --- ### RF-PMC-006-024: Descargar Colección Completa | Campo | Valor | |-------|-------| | **ID** | RF-PMC-006-024 | | **Nombre** | Descargar Colección Completa | | **Prioridad** | P2 | | **Actor** | Creative, Tenant Admin | **Criterios de aceptación:** - [ ] Todos los assets de colección en ZIP - [ ] Estructura de carpetas preservada - [ ] Opción de incluir solo aprobados --- ## Resumen | Prioridad | Cantidad | |-----------|----------| | P1 | 13 | | P2 | 9 | | P3 | 2 | | **Total** | **24** | --- **Documento generado por:** Requirements-Analyst **Fecha:** 2025-12-08