--- id: "MODELO-DOMINIO" title: "Modelo de Dominio - Platform Marketing Content" type: "Model" status: "Draft" project: "platform_marketing_content" version: "1.0.0" created_date: "2026-01-04" updated_date: "2026-01-04" --- # Modelo de Dominio - Platform Marketing Content **Versión:** 1.0.0 **Fecha:** 2025-12-08 --- ## Diagrama de Entidades ``` ┌─────────────────────────────────────────────────────────────────────────────┐ │ CORE ENTITIES │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Tenant │◄────────│ Plan │ │ User │ │ │ └────┬─────┘ └──────────┘ └────┬─────┘ │ │ │ │ │ │ │ 1:N │ N:1 │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ Client │ │ Role │ │ │ └────┬─────┘ └──────────┘ │ │ │ │ │ │ 1:N │ │ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ Contact │ │ Brand │◄────────┐ │ │ └──────────┘ └────┬─────┘ │ │ │ │ │ N:N │ │ │ 1:N │ │ │ ▼ │ │ │ ┌──────────┐ ┌────┴─────┐ │ │ │ Product │ │CustomModel│ │ │ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ PROJECT ENTITIES │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ │ │ │ Project │◄──────────────────┐ │ │ └────┬─────┘ │ │ │ │ │ N:1 (Client) │ │ │ 1:N │ │ │ ▼ │ │ │ ┌──────────┐ ┌─────────┴┐ ┌──────────┐ │ │ │ Campaign │─────────│Opportunity│ │ BriefTpl │ │ │ └────┬─────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ 1:N │ │ ▼ │ │ ┌──────────────┐ │ │ │CampaignAsset │──────────┐ │ │ └──────────────┘ │ N:1 │ │ ▼ │ │ ┌──────────┐ │ │ │ Asset │ │ │ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ GENERATION ENTITIES │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────────┐ ┌────────────────┐ │ │ │GenerationJob │───────────────────│WorkflowTemplate│ │ │ └───────┬────────┘ └────────────────┘ │ │ │ │ │ │ 1:N │ │ ▼ │ │ ┌────────────────┐ ┌────────────────┐ │ │ │ Asset │ │ TextGeneration │ │ │ └───────┬────────┘ └────────────────┘ │ │ │ │ │ │ 1:N │ │ ▼ │ │ ┌────────────────┐ ┌────────────────┐ │ │ │ AssetVersion │ │ AssetComment │ │ │ └────────────────┘ └────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ AUTOMATION ENTITIES │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────────┐ ┌────────────────┐ │ │ │AutomationFlow │───────────────────│ AutomationRun │ │ │ └───────┬────────┘ └────────────────┘ │ │ │ │ │ │ N:1 │ │ ▼ │ │ ┌────────────────┐ │ │ │WebhookEndpoint │ │ │ └────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────────┐ │ SUPPORT ENTITIES │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │Collection│ │Invitation│ │ AuditLog │ │ Setting │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Download │ │ Metric │ │ Report │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` --- ## Entidades por Módulo ### PMC-001: Tenants | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **Tenant** | Organización que usa la plataforma | 1:N User, Client, Project, Asset | | **Plan** | Plan de suscripción con límites | 1:N Tenant | ### PMC-002: CRM | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **Client** | Empresa cliente de la agencia | N:1 Tenant, 1:N Contact, Brand, Project | | **Contact** | Persona de contacto | N:1 Client | | **Brand** | Marca con identidad visual | N:1 Client, 1:N Product, Campaign | | **Product** | Producto o servicio | N:1 Brand | | **Opportunity** | Oportunidad comercial | N:1 Client, Contact | ### PMC-003: Projects | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **Project** | Contenedor de campañas | N:1 Client, Tenant, 1:N Campaign | | **Campaign** | Campaña de marketing con brief | N:1 Project, Brand, 1:N CampaignAsset | | **CampaignAsset** | Relación campaña-asset con estado | N:1 Campaign, Asset | ### PMC-004: Generation | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **GenerationJob** | Tarea de generación | N:1 Tenant, Campaign, WorkflowTemplate | | **WorkflowTemplate** | Plantilla de workflow ComfyUI | 1:N GenerationJob | | **CustomModel** | LoRA/Checkpoint personalizado | N:1 Tenant, Brand | | **TextGeneration** | Generación de texto/copy | N:1 Tenant, GenerationJob | ### PMC-005: Automation | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **AutomationFlow** | Definición de flujo automatizado | N:1 Tenant, 1:N AutomationRun | | **AutomationRun** | Ejecución de un flujo | N:1 AutomationFlow | | **WebhookEndpoint** | Endpoint para webhooks externos | N:1 Tenant, AutomationFlow | ### PMC-006: Assets | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **Asset** | Recurso digital (imagen, video, etc.) | N:1 Tenant, GenerationJob | | **AssetVersion** | Versión histórica de asset | N:1 Asset | | **Collection** | Agrupación de assets | N:1 Tenant, N:N Asset | | **AssetComment** | Comentario sobre asset | N:1 Asset, User | | **Download** | Registro de descarga | N:1 Asset, User | ### PMC-007: Admin | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **User** | Usuario del sistema | N:1 Tenant, Role | | **Role** | Rol con permisos | 1:N User | | **Invitation** | Invitación pendiente | N:1 Tenant, Role | | **AuditLog** | Registro de auditoría | N:1 Tenant, User | | **Setting** | Configuración del sistema | N:1 Tenant (opcional) | ### PMC-008: Analytics | Entidad | Descripción | Relaciones Principales | |---------|-------------|------------------------| | **Metric** | Dato métrico agregado | N:1 Tenant | | **Report** | Reporte generado | N:1 Tenant, User | | **SavedView** | Vista personalizada guardada | N:1 Tenant, User | --- ## Matriz de Relaciones ``` │Ten│Pln│Usr│Rol│Cli│Con│Bra│Pro│Opp│Prj│Cam│CAs│Job│Wfl│Mod│Txt│Flo│Run│Whk│Ast│Ver│Col│Com│Dwn│Inv│Aud│Set│Met│Rep│Viw│ ─────────────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ Tenant │ │N:1│1:N│ │1:N│ │ │ │ │1:N│ │ │1:N│ │1:N│ │1:N│ │1:N│1:N│ │1:N│ │ │1:N│1:N│1:N│1:N│1:N│1:N│ Plan │1:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ User │N:1│ │ │N:1│ │ │ │ │ │1:N│ │ │1:N│ │ │ │ │ │ │1:N│ │ │1:N│1:N│ │1:N│ │ │1:N│1:N│ Role │ │ │1:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │1:N│ │ │ │ │ │ Client │N:1│ │ │ │ │1:N│1:N│ │1:N│1:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Contact │ │ │ │ │N:1│ │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Brand │ │ │ │ │N:1│ │ │1:N│ │ │1:N│ │ │ │N:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Product │ │ │ │ │ │ │N:1│ │ │ │ │ │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Opportunity │ │ │ │ │N:1│N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Project │N:1│ │N:1│ │N:1│ │ │ │ │ │1:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Campaign │ │ │ │ │ │ │N:1│ │ │N:1│ │1:N│N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ CampaignAsset│ │ │ │ │ │ │ │ │ │ │N:1│ │ │ │ │ │ │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ GenJob │N:1│ │N:1│ │ │ │ │N:1│ │ │N:1│ │ │N:1│ │1:N│ │ │ │1:N│ │ │ │ │ │ │ │ │ │ │ Workflow │ │ │ │ │ │ │ │ │ │ │ │ │1:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ CustomModel │N:1│ │ │ │ │ │N:N│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ TextGen │N:1│ │ │ │ │ │ │ │ │ │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ AutoFlow │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │1:N│1:N│ │ │ │ │ │ │ │ │ │ │ │ AutoRun │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ Webhook │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ Asset │N:1│ │N:1│ │ │ │ │ │ │ │ │N:1│N:1│ │ │ │ │ │ │ │1:N│N:N│1:N│1:N│ │ │ │ │ │ │ AssetVer │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ Collection │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │N:N│ │ │ │ │ │ │ │ │ │ │ AssetComment │ │ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │N:1│ │ │1:N│ │ │ │ │ │ │ │ Download │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │N:1│ │N:1│ │ │ │ │ │ │ │ │ Invitation │N:1│ │N:1│N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ AuditLog │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Setting │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Metric │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Report │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ SavedView │N:1│ │N:1│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ``` --- ## Agregados (DDD) ### Aggregate: Tenant - **Root:** Tenant - **Entities:** Plan (referencia) - **Value Objects:** Settings, Branding, Limits ### Aggregate: Client - **Root:** Client - **Entities:** Contact, Brand, Product - **Value Objects:** Identity (en Brand) ### Aggregate: Project - **Root:** Project - **Entities:** Campaign, CampaignAsset - **Value Objects:** Brief (en Campaign) ### Aggregate: Asset - **Root:** Asset - **Entities:** AssetVersion, AssetComment - **Value Objects:** Metadata, Dimensions ### Aggregate: GenerationJob - **Root:** GenerationJob - **Entities:** (outputs referenciados) - **Value Objects:** InputParams, Progress ### Aggregate: User - **Root:** User - **Entities:** (Role como referencia) - **Value Objects:** Preferences --- ## Referencias - [ARQUITECTURA-TECNICA.md](../00-vision-general/ARQUITECTURA-TECNICA.md) - [Definición de Módulos](../02-definicion-modulos/_INDEX.md) --- **Documento generado por:** Requirements-Analyst **Fecha:** 2025-12-08