platform-marketing-content/docs/03-requerimientos/RF-PMC-006-ASSETS.md
rckrdmrd 74b5ed7f38 feat: Complete documentation update and orchestration configuration
- Update vision, architecture and technical documentation
- Update module definitions (PMC-001 to PMC-008)
- Update requirements documentation
- Add CONTEXT-MAP.yml and ENVIRONMENT-INVENTORY.yml
- Add orchestration guidelines and references

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:38:31 -06:00

526 lines
11 KiB
Markdown

---
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