- 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>
518 lines
11 KiB
Markdown
518 lines
11 KiB
Markdown
---
|
|
id: "RF-PMC-003"
|
|
title: "Projects Module"
|
|
type: "Requirement"
|
|
status: "Done"
|
|
priority: "Alta"
|
|
module: "projects"
|
|
project: "platform_marketing_content"
|
|
version: "1.0"
|
|
rf_count: 15
|
|
created_date: "2025-12-08"
|
|
updated_date: "2026-01-04"
|
|
---
|
|
|
|
# Requerimientos Funcionales - PMC-003 Projects
|
|
|
|
**Módulo:** Projects
|
|
**Versión:** 1.0.0
|
|
**Fecha:** 2025-12-08
|
|
|
|
---
|
|
|
|
## Gestión de Proyectos
|
|
|
|
### RF-PMC-003-001: Crear Proyecto
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-001 |
|
|
| **Nombre** | Crear Proyecto |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative, Tenant Admin |
|
|
|
|
**Datos de entrada:**
|
|
- client_id: UUID (requerido)
|
|
- name: string (requerido)
|
|
- description: text (opcional)
|
|
- start_date: date (opcional)
|
|
- end_date: date (opcional)
|
|
- budget: decimal (opcional)
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Proyecto se crea con status "draft"
|
|
- [ ] Código autogenerado (PRJ-YYYY-XXX)
|
|
- [ ] Owner asignado al creador
|
|
|
|
---
|
|
|
|
### RF-PMC-003-002: Editar Proyecto
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-002 |
|
|
| **Nombre** | Editar Proyecto |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Project Owner, Tenant Admin |
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Campos básicos editables
|
|
- [ ] Cambio de cliente requiere confirmación
|
|
- [ ] Historial de cambios registrado
|
|
|
|
---
|
|
|
|
### RF-PMC-003-003: Cambiar Estado de Proyecto
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-003 |
|
|
| **Nombre** | Cambiar Estado de Proyecto |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Project Owner, Tenant Admin |
|
|
|
|
**Estados válidos:**
|
|
- draft → active
|
|
- active → on_hold, completed
|
|
- on_hold → active
|
|
- cualquiera → cancelled
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Transiciones válidas se permiten
|
|
- [ ] Transiciones inválidas se bloquean
|
|
- [ ] Notificación al equipo en cambio de estado
|
|
|
|
---
|
|
|
|
### RF-PMC-003-004: Asignar Equipo a Proyecto
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-004 |
|
|
| **Nombre** | Asignar Equipo a Proyecto |
|
|
| **Prioridad** | P2 |
|
|
| **Actor** | Project Owner, Tenant Admin |
|
|
|
|
**Descripción:**
|
|
Agregar o quitar miembros del equipo de un proyecto.
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Usuarios del tenant pueden asignarse
|
|
- [ ] Owner siempre está en el equipo
|
|
- [ ] Notificación al agregar miembro
|
|
|
|
---
|
|
|
|
### RF-PMC-003-005: Listar Proyectos
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-005 |
|
|
| **Nombre** | Listar Proyectos |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Todos los roles |
|
|
|
|
**Filtros:**
|
|
- client_id
|
|
- status
|
|
- owner_id
|
|
- date_range
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Paginación funciona
|
|
- [ ] Filtros combinables
|
|
- [ ] Vista lista y tarjetas
|
|
|
|
---
|
|
|
|
### RF-PMC-003-006: Ver Dashboard de Proyecto
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-006 |
|
|
| **Nombre** | Ver Dashboard de Proyecto |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Miembros del proyecto |
|
|
|
|
**Información mostrada:**
|
|
- Resumen del proyecto
|
|
- Campañas con estado
|
|
- Assets recientes
|
|
- Actividad del equipo
|
|
- Métricas de progreso
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Dashboard carga correctamente
|
|
- [ ] Métricas calculadas en tiempo real
|
|
- [ ] Acciones rápidas disponibles
|
|
|
|
---
|
|
|
|
## Gestión de Campañas
|
|
|
|
### RF-PMC-003-007: Crear Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-007 |
|
|
| **Nombre** | Crear Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative |
|
|
|
|
**Datos de entrada:**
|
|
- project_id: UUID (requerido)
|
|
- brand_id: UUID (requerido)
|
|
- name: string (requerido)
|
|
- type: enum (requerido)
|
|
- channels: array[string]
|
|
- start_date: date (opcional)
|
|
- end_date: date (opcional)
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Campaña se crea con status "draft"
|
|
- [ ] Brand se vincula correctamente
|
|
- [ ] Brief vacío se inicializa
|
|
|
|
---
|
|
|
|
### RF-PMC-003-008: Editar Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-008 |
|
|
| **Nombre** | Editar Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative |
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Campos básicos editables en cualquier estado
|
|
- [ ] Brief editable hasta "in_production"
|
|
|
|
---
|
|
|
|
### RF-PMC-003-009: Completar Brief de Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-009 |
|
|
| **Nombre** | Completar Brief de Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative |
|
|
|
|
**Secciones del Brief:**
|
|
- Objetivo: descripción, KPIs
|
|
- Audiencia: demographics, psychographics, pain_points
|
|
- Mensajes: main_message, tone, CTA, hashtags
|
|
- Visual: style, mood, color_palette, references
|
|
- Restricciones: forbidden_words, disclaimers
|
|
- Entregables: formatos, cantidades
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Formulario con secciones colapsables
|
|
- [ ] Validación de campos mínimos
|
|
- [ ] Guardado automático (draft)
|
|
- [ ] Al completar: estado → "briefing"
|
|
|
|
---
|
|
|
|
### RF-PMC-003-010: Usar Plantilla de Brief
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-010 |
|
|
| **Nombre** | Usar Plantilla de Brief |
|
|
| **Prioridad** | P2 |
|
|
| **Actor** | Creative |
|
|
|
|
**Descripción:**
|
|
Cargar brief desde una plantilla predefinida.
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Listado de plantillas disponibles
|
|
- [ ] Preview de plantilla antes de aplicar
|
|
- [ ] Campos se pre-llenan pero son editables
|
|
|
|
---
|
|
|
|
### RF-PMC-003-011: Cambiar Estado de Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-011 |
|
|
| **Nombre** | Cambiar Estado de Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative, Tenant Admin |
|
|
|
|
**Estados y transiciones:**
|
|
```
|
|
draft → briefing → in_production → review → approved → published
|
|
↑_______________|
|
|
(revision_requested)
|
|
```
|
|
|
|
**Validaciones:**
|
|
- briefing → in_production: brief mínimo completado
|
|
- review → approved: al menos 1 asset aprobado
|
|
- approved → published: confirmación requerida
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Transiciones válidas funcionan
|
|
- [ ] Validaciones se aplican
|
|
- [ ] Notificaciones en cada cambio
|
|
|
|
---
|
|
|
|
### RF-PMC-003-012: Listar Campañas
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-012 |
|
|
| **Nombre** | Listar Campañas |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Todos los roles |
|
|
|
|
**Vistas:**
|
|
- Lista con filtros
|
|
- Kanban por estado
|
|
- Calendario por fechas
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Filtro por proyecto, brand, status, type
|
|
- [ ] Vista Kanban con drag & drop
|
|
- [ ] Búsqueda por nombre
|
|
|
|
---
|
|
|
|
### RF-PMC-003-013: Ver Detalle de Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-013 |
|
|
| **Nombre** | Ver Detalle de Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Miembros del proyecto |
|
|
|
|
**Información mostrada:**
|
|
- Datos de campaña
|
|
- Brief completo
|
|
- Assets generados con estados
|
|
- Historial de actividad
|
|
- Jobs de generación
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Todas las secciones visibles
|
|
- [ ] Assets organizados por estado
|
|
- [ ] Acciones contextuales disponibles
|
|
|
|
---
|
|
|
|
## Generación de Contenido
|
|
|
|
### RF-PMC-003-014: Lanzar Generación desde Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-014 |
|
|
| **Nombre** | Lanzar Generación desde Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative |
|
|
|
|
**Flujo:**
|
|
1. Usuario abre campaña en status "briefing" o superior
|
|
2. Selecciona "Generar contenido"
|
|
3. Elige workflows según deliverables del brief
|
|
4. Configura opciones adicionales
|
|
5. Sistema crea jobs de generación
|
|
6. Sistema cambia status a "in_production" si no lo está
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Brief se usa para configurar generación
|
|
- [ ] Múltiples workflows ejecutables
|
|
- [ ] Progreso visible en tiempo real
|
|
|
|
---
|
|
|
|
### RF-PMC-003-015: Seleccionar Workflows de Generación
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-015 |
|
|
| **Nombre** | Seleccionar Workflows de Generación |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative |
|
|
|
|
**Descripción:**
|
|
Elegir qué workflows ejecutar basado en deliverables del brief.
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Workflows sugeridos según tipo de campaña
|
|
- [ ] Preview de cada workflow
|
|
- [ ] Configuración de cantidad por workflow
|
|
|
|
---
|
|
|
|
### RF-PMC-003-016: Monitorear Progreso de Generación
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-016 |
|
|
| **Nombre** | Monitorear Progreso de Generación |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative |
|
|
|
|
**Información mostrada:**
|
|
- Jobs en cola
|
|
- Jobs procesando (con %)
|
|
- Jobs completados
|
|
- Jobs fallidos
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Actualización en tiempo real (websocket)
|
|
- [ ] Posibilidad de cancelar jobs pendientes
|
|
- [ ] Reintentar jobs fallidos
|
|
|
|
---
|
|
|
|
## Flujo de Aprobación
|
|
|
|
### RF-PMC-003-017: Aprobar Asset de Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-017 |
|
|
| **Nombre** | Aprobar Asset de Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative, Tenant Admin |
|
|
|
|
**Flujo:**
|
|
1. Usuario revisa asset en vista de revisión
|
|
2. Selecciona "Aprobar"
|
|
3. Sistema marca asset como aprobado
|
|
4. Sistema registra aprobador y timestamp
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Asset cambia a status "approved"
|
|
- [ ] Metadata de aprobación registrada
|
|
- [ ] No editable después de aprobar
|
|
|
|
---
|
|
|
|
### RF-PMC-003-018: Rechazar Asset de Campaña
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-018 |
|
|
| **Nombre** | Rechazar Asset de Campaña |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative, Tenant Admin |
|
|
|
|
**Flujo:**
|
|
1. Usuario revisa asset
|
|
2. Selecciona "Rechazar"
|
|
3. Sistema solicita feedback obligatorio
|
|
4. Sistema marca asset como rechazado
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Feedback es requerido
|
|
- [ ] Asset puede regenerarse
|
|
- [ ] Historial de rechazos visible
|
|
|
|
---
|
|
|
|
### RF-PMC-003-019: Solicitar Revisión de Asset
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-019 |
|
|
| **Nombre** | Solicitar Revisión de Asset |
|
|
| **Prioridad** | P2 |
|
|
| **Actor** | Creative |
|
|
|
|
**Descripción:**
|
|
Pedir cambios específicos en un asset antes de decidir.
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Comentario con posición en imagen
|
|
- [ ] Asset queda en "revision_requested"
|
|
- [ ] Notificación a equipo
|
|
|
|
---
|
|
|
|
### RF-PMC-003-020: Aprobar Todos los Assets
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-020 |
|
|
| **Nombre** | Aprobar Todos los Assets |
|
|
| **Prioridad** | P2 |
|
|
| **Actor** | Tenant Admin |
|
|
|
|
**Descripción:**
|
|
Acción bulk para aprobar todos los assets pendientes.
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Confirmación requerida
|
|
- [ ] Solo assets en "pending_review"
|
|
- [ ] Registro individual por asset
|
|
|
|
---
|
|
|
|
### RF-PMC-003-021: Regenerar Asset
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-021 |
|
|
| **Nombre** | Regenerar Asset |
|
|
| **Prioridad** | P2 |
|
|
| **Actor** | Creative |
|
|
|
|
**Descripción:**
|
|
Crear nueva versión de un asset rechazado o en revisión.
|
|
|
|
**Flujo:**
|
|
1. Usuario selecciona asset rechazado
|
|
2. Selecciona "Regenerar"
|
|
3. Opcionalmente ajusta parámetros
|
|
4. Sistema crea nuevo job
|
|
5. Nuevo asset se vincula como versión
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] Parámetros originales pre-cargados
|
|
- [ ] Historial de versiones mantenido
|
|
- [ ] Original no se elimina
|
|
|
|
---
|
|
|
|
### RF-PMC-003-022: Descargar Assets Aprobados
|
|
|
|
| Campo | Valor |
|
|
|-------|-------|
|
|
| **ID** | RF-PMC-003-022 |
|
|
| **Nombre** | Descargar Assets Aprobados |
|
|
| **Prioridad** | P1 |
|
|
| **Actor** | Creative, Tenant Admin |
|
|
|
|
**Descripción:**
|
|
Descargar pack de todos los assets aprobados de la campaña.
|
|
|
|
**Criterios de aceptación:**
|
|
- [ ] ZIP generado con estructura organizada
|
|
- [ ] Solo assets aprobados incluidos
|
|
- [ ] Copys incluidos como .txt
|
|
- [ ] Opción de selección manual
|
|
|
|
---
|
|
|
|
## Resumen
|
|
|
|
| Prioridad | Cantidad |
|
|
|-----------|----------|
|
|
| P1 | 15 |
|
|
| P2 | 7 |
|
|
| **Total** | **22** |
|
|
|
|
---
|
|
|
|
**Documento generado por:** Requirements-Analyst
|
|
**Fecha:** 2025-12-08
|