platform-marketing-content/docs/03-requerimientos/RF-PMC-004-GENERATION.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

656 lines
14 KiB
Markdown

---
id: "RF-PMC-004"
title: "Generation Module"
type: "Requirement"
status: "Done"
priority: "Alta"
module: "generation"
project: "platform_marketing_content"
version: "1.0"
rf_count: 18
created_date: "2025-12-08"
updated_date: "2026-01-04"
---
# Requerimientos Funcionales - PMC-004 Generation
**Módulo:** Generation (Motor IA)
**Versión:** 1.0.0
**Fecha:** 2025-12-08
---
## Generación de Imágenes
### RF-PMC-004-001: Generar Imagen Text-to-Image
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-001 |
| **Nombre** | Generar Imagen Text-to-Image |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de entrada:**
- prompt: string (requerido)
- negative_prompt: string (opcional)
- width: number (default: 1024)
- height: number (default: 1024)
- seed: number (opcional, aleatorio si no se especifica)
- steps: number (default: 30)
- cfg_scale: number (default: 7.5)
- lora_id: UUID (opcional)
- brand_id: UUID (opcional, para cargar LoRA automáticamente)
**Criterios de aceptación:**
- [ ] Imagen se genera correctamente
- [ ] Parámetros se aplican
- [ ] LoRA se carga si especificado
- [ ] Asset se crea automáticamente
---
### RF-PMC-004-002: Generar Imagen Image-to-Image
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-002 |
| **Nombre** | Generar Imagen Image-to-Image |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de entrada:**
- input_image: file/URL (requerido)
- prompt: string (requerido)
- strength: number (0.0-1.0, default: 0.75)
- Otros parámetros de T2I
**Criterios de aceptación:**
- [ ] Imagen input se procesa correctamente
- [ ] Strength afecta resultado
- [ ] Formatos soportados: PNG, JPG, WebP
---
### RF-PMC-004-003: Aplicar Inpainting
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-003 |
| **Nombre** | Aplicar Inpainting |
| **Prioridad** | P2 |
| **Actor** | Creative |
**Datos de entrada:**
- input_image: file/URL (requerido)
- mask_image: file (requerido)
- prompt: string (requerido)
- Otros parámetros de generación
**Descripción:**
Regenerar solo la parte enmascarada de una imagen.
**Criterios de aceptación:**
- [ ] Máscara define área a regenerar
- [ ] Resto de imagen preservado
- [ ] Editor de máscara en UI
---
### RF-PMC-004-004: Aplicar Upscaling
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-004 |
| **Nombre** | Aplicar Upscaling |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de entrada:**
- input_image: file/URL (requerido)
- scale: number (2 o 4)
- model: string (default: "RealESRGAN")
**Criterios de aceptación:**
- [ ] Imagen se escala correctamente
- [ ] Calidad mejorada, no solo interpolación
- [ ] Formatos de salida preservados
---
### RF-PMC-004-005: Generar Batch de Imágenes
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-005 |
| **Nombre** | Generar Batch de Imágenes |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de entrada:**
- base_params: object (parámetros comunes)
- count: number (cantidad a generar)
- variation_type: string (seed, prompt_variation)
**Criterios de aceptación:**
- [ ] N imágenes generadas
- [ ] Seeds diferentes por imagen
- [ ] Todas vinculadas al mismo job
---
### RF-PMC-004-006: Remover Fondo
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-006 |
| **Nombre** | Remover Fondo |
| **Prioridad** | P2 |
| **Actor** | Creative |
**Datos de entrada:**
- input_image: file/URL (requerido)
**Criterios de aceptación:**
- [ ] Fondo removido correctamente
- [ ] Salida PNG con transparencia
- [ ] Bordes suaves en objetos
---
## Generación de Texto
### RF-PMC-004-007: Generar Copy Publicitario
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-007 |
| **Nombre** | Generar Copy Publicitario |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de entrada:**
- context: object
- product_name: string
- product_description: string
- brand_tone: string
- target_audience: string
- objective: string
- type: enum (title, description, cta, full_post)
- max_length: number (opcional)
- variations: number (default: 3)
**Criterios de aceptación:**
- [ ] Texto generado coherente
- [ ] Tono respeta brand guidelines
- [ ] Múltiples variaciones disponibles
---
### RF-PMC-004-008: Generar Hashtags
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-008 |
| **Nombre** | Generar Hashtags |
| **Prioridad** | P2 |
| **Actor** | Creative |
**Datos de entrada:**
- context: string (descripción del contenido)
- count: number (default: 10)
- platform: string (instagram, twitter, linkedin)
**Criterios de aceptación:**
- [ ] Hashtags relevantes generados
- [ ] Formato correcto (#hashtag)
- [ ] Sin espacios ni caracteres inválidos
---
### RF-PMC-004-009: Adaptar Tono de Texto
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-009 |
| **Nombre** | Adaptar Tono de Texto |
| **Prioridad** | P2 |
| **Actor** | Creative |
**Datos de entrada:**
- input_text: string (requerido)
- target_tone: string (formal, casual, playful, professional)
**Criterios de aceptación:**
- [ ] Mensaje preservado, tono cambiado
- [ ] Opciones de tono claras
---
## Workflows
### RF-PMC-004-010: Listar Workflow Templates
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-010 |
| **Nombre** | Listar Workflow Templates |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de salida:**
- Lista de workflows disponibles
- Por cada uno: nombre, descripción, tipo, inputs requeridos
**Criterios de aceptación:**
- [ ] Workflows de sistema incluidos
- [ ] Workflows custom del tenant incluidos
- [ ] Filtro por tipo/categoría
---
### RF-PMC-004-011: Ver Detalle de Workflow
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-011 |
| **Nombre** | Ver Detalle de Workflow |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de salida:**
- Descripción completa
- Inputs requeridos y opcionales
- Outputs esperados
- Ejemplos de resultado
- Tiempo estimado
**Criterios de aceptación:**
- [ ] Schema de inputs documentado
- [ ] Ejemplos visuales disponibles
---
### RF-PMC-004-012: Ejecutar Workflow
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-012 |
| **Nombre** | Ejecutar Workflow |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de entrada:**
- workflow_id: UUID (requerido)
- inputs: object (según schema del workflow)
- campaign_id: UUID (opcional)
- brand_id: UUID (opcional)
**Flujo:**
1. Sistema valida inputs contra schema
2. Sistema verifica cuotas del tenant
3. Sistema crea GenerationJob
4. Sistema encola job
5. Sistema retorna job_id
**Criterios de aceptación:**
- [ ] Validación de inputs funciona
- [ ] Job se crea correctamente
- [ ] ID retornado para tracking
---
### RF-PMC-004-013: Crear Workflow Template (Admin)
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-013 |
| **Nombre** | Crear Workflow Template |
| **Prioridad** | P3 |
| **Actor** | Tenant Admin |
**Datos de entrada:**
- name: string
- description: text
- type: enum
- comfyui_workflow: JSON
- input_schema: JSON
- output_config: object
**Criterios de aceptación:**
- [ ] Workflow se almacena correctamente
- [ ] Schema de inputs validado
- [ ] Disponible para usuarios del tenant
---
## Modelos Personalizados
### RF-PMC-004-014: Listar Modelos Custom
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-014 |
| **Nombre** | Listar Modelos Custom |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de salida:**
- Lista de LoRAs, checkpoints disponibles
- Status de cada uno
- Brand asociada (si aplica)
**Criterios de aceptación:**
- [ ] Solo modelos del tenant
- [ ] Filtro por tipo y brand
- [ ] Preview images mostradas
---
### RF-PMC-004-015: Registrar Modelo Custom
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-015 |
| **Nombre** | Registrar Modelo Custom |
| **Prioridad** | P1 |
| **Actor** | Tenant Admin |
**Datos de entrada:**
- name: string (requerido)
- type: enum (lora, checkpoint, embedding)
- file: upload (requerido)
- purpose: string
- trigger_word: string (para LoRAs)
- brand_id: UUID (opcional)
- preview_images: array[file]
**Criterios de aceptación:**
- [ ] Archivo subido a storage
- [ ] Registro en BD
- [ ] Disponible para generación
---
### RF-PMC-004-016: Eliminar Modelo Custom
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-016 |
| **Nombre** | Eliminar Modelo Custom |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |
**Criterios de aceptación:**
- [ ] Confirmación requerida
- [ ] Archivo eliminado de storage
- [ ] Registro eliminado de BD
---
### RF-PMC-004-017: Iniciar Entrenamiento de LoRA
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-017 |
| **Nombre** | Iniciar Entrenamiento de LoRA |
| **Prioridad** | P2 |
| **Actor** | Tenant Admin |
**Datos de entrada:**
- name: string
- training_images: array[file] (mínimo 10)
- base_model: string
- steps: number (default: 1000)
- learning_rate: number (default: 0.0001)
- trigger_word: string (requerido)
**Criterios de aceptación:**
- [ ] Mínimo 10 imágenes validado
- [ ] Job de entrenamiento creado
- [ ] Status actualizado durante entrenamiento
- [ ] Modelo disponible al completar
---
## Cola de Tareas
### RF-PMC-004-018: Ver Estado de Cola
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-018 |
| **Nombre** | Ver Estado de Cola |
| **Prioridad** | P1 |
| **Actor** | Creative, Tenant Admin |
**Datos de salida:**
- Jobs en cola (pending)
- Jobs procesando
- Jobs completados (recientes)
- Jobs fallidos (recientes)
**Criterios de aceptación:**
- [ ] Actualización en tiempo real
- [ ] Filtro por usuario/campaña
- [ ] Progreso visible para jobs activos
---
### RF-PMC-004-019: Ver Detalle de Job
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-019 |
| **Nombre** | Ver Detalle de Job |
| **Prioridad** | P1 |
| **Actor** | Creative |
**Datos de salida:**
- Parámetros de entrada
- Status y progreso
- Timestamps
- Outputs generados
- Error (si falló)
**Criterios de aceptación:**
- [ ] Toda la información visible
- [ ] Links a assets generados
---
### RF-PMC-004-020: Cancelar Job
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-020 |
| **Nombre** | Cancelar Job |
| **Prioridad** | P2 |
| **Actor** | Creative |
**Precondiciones:**
- Job en status "queued"
**Criterios de aceptación:**
- [ ] Job cambia a "cancelled"
- [ ] No se ejecuta
- [ ] Cuota no consumida
---
### RF-PMC-004-021: Reintentar Job Fallido
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-021 |
| **Nombre** | Reintentar Job Fallido |
| **Prioridad** | P2 |
| **Actor** | Creative |
**Precondiciones:**
- Job en status "failed"
**Criterios de aceptación:**
- [ ] Nuevo job creado con mismos parámetros
- [ ] Original marcado como "retried"
- [ ] Hasta 3 reintentos permitidos
---
### RF-PMC-004-022: Cambiar Prioridad de Job (Admin)
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-022 |
| **Nombre** | Cambiar Prioridad de Job |
| **Prioridad** | P3 |
| **Actor** | Tenant Admin |
**Precondiciones:**
- Job en status "queued"
**Criterios de aceptación:**
- [ ] Prioridad actualizada
- [ ] Posición en cola recalculada
---
## Integración ComfyUI
### RF-PMC-004-023: Enviar Workflow a ComfyUI
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-023 |
| **Nombre** | Enviar Workflow a ComfyUI |
| **Prioridad** | P1 |
| **Actor** | Sistema |
**Descripción:**
El sistema debe enviar workflows a ComfyUI para ejecución.
**Criterios de aceptación:**
- [ ] Payload correcto enviado
- [ ] Respuesta de ComfyUI procesada
- [ ] Errores manejados correctamente
---
### RF-PMC-004-024: Recibir Resultados de ComfyUI
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-024 |
| **Nombre** | Recibir Resultados de ComfyUI |
| **Prioridad** | P1 |
| **Actor** | Sistema |
**Descripción:**
El sistema debe procesar callbacks/webhooks de ComfyUI con resultados.
**Criterios de aceptación:**
- [ ] Imágenes descargadas y almacenadas
- [ ] Assets creados automáticamente
- [ ] Job actualizado a "completed"
---
### RF-PMC-004-025: Monitorear Progreso en ComfyUI
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-025 |
| **Nombre** | Monitorear Progreso en ComfyUI |
| **Prioridad** | P2 |
| **Actor** | Sistema |
**Descripción:**
Tracking de progreso durante ejecución del workflow.
**Criterios de aceptación:**
- [ ] Websocket conectado a ComfyUI
- [ ] Progreso actualizado en tiempo real
- [ ] Propagado a frontend
---
## Validaciones
### RF-PMC-004-026: Validar Cuota Antes de Generación
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-026 |
| **Nombre** | Validar Cuota Antes de Generación |
| **Prioridad** | P1 |
| **Actor** | Sistema |
**Descripción:**
Verificar límites del tenant antes de aceptar job.
**Criterios de aceptación:**
- [ ] Generaciones mensuales verificadas
- [ ] Storage verificado para outputs
- [ ] Error claro si excede límite
---
### RF-PMC-004-027: Agregar Negative Prompts Automáticos
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-027 |
| **Nombre** | Agregar Negative Prompts Automáticos |
| **Prioridad** | P2 |
| **Actor** | Sistema |
**Descripción:**
Añadir negative prompts de calidad estándar.
**Negative prompts por defecto:**
- "blurry, low quality, watermark, signature, bad anatomy, deformed..."
**Criterios de aceptación:**
- [ ] Negativos agregados automáticamente
- [ ] Usuario puede sobreescribir
- [ ] Configurables por tenant
---
### RF-PMC-004-028: Cargar Identidad de Marca Automáticamente
| Campo | Valor |
|-------|-------|
| **ID** | RF-PMC-004-028 |
| **Nombre** | Cargar Identidad de Marca Automáticamente |
| **Prioridad** | P1 |
| **Actor** | Sistema |
**Descripción:**
Al generar para una campaña/marca, cargar automáticamente:
- LoRAs asociados
- Colores de marca (para prompts)
- Forbidden words (para negative prompts)
- Tono de voz (para texto)
**Criterios de aceptación:**
- [ ] LoRA se inyecta en workflow
- [ ] Colores incluidos en prompt si aplica
- [ ] Forbidden words en negative prompt
---
## Resumen
| Prioridad | Cantidad |
|-----------|----------|
| P1 | 17 |
| P2 | 9 |
| P3 | 2 |
| **Total** | **28** |
---
**Documento generado por:** Requirements-Analyst
**Fecha:** 2025-12-08