platform-marketing-content/orchestration/directivas/GUIA-NOMENCLATURA-PMC.md

401 lines
9.2 KiB
Markdown

# Guia de Nomenclatura - Platform Marketing Content
**Version:** 1.0.0
**Fecha:** 2025-12-08
**Hereda de:** core/orchestration/directivas/ESTANDARES-NOMENCLATURA-BASE.md
---
## Proposito
Esta guia define las convenciones de nomenclatura especificas para el proyecto PMC, complementando los estandares base del workspace.
---
## 1. Identificadores de Modulos
### Formato
```
PMC-{NNN}-{NOMBRE}
```
### Modulos Definidos
| ID | Nombre | Descripcion |
|----|--------|-------------|
| PMC-001 | TENANTS | Multi-tenancy y planes |
| PMC-002 | CRM | Clientes, marcas, productos |
| PMC-003 | PROJECTS | Proyectos y campanas |
| PMC-004 | GENERATION | Motor de generacion IA |
| PMC-005 | AUTOMATION | Flujos automatizados |
| PMC-006 | ASSETS | DAM (Digital Asset Management) |
| PMC-007 | ADMIN | Usuarios, roles, configuracion |
| PMC-008 | ANALYTICS | Dashboards y reportes |
---
## 2. Base de Datos
### Schemas
```sql
-- Schemas del proyecto
auth -- Autenticacion y sesiones
crm -- Clientes, marcas, productos, oportunidades
projects -- Proyectos, campanas, briefs
generation -- Jobs, workflows, modelos
assets -- Assets, colecciones, versiones
automation -- Flujos, webhooks, eventos
analytics -- Metricas, reportes
config -- Settings, feature flags
```
### Tablas
```sql
-- Formato: {schema}.{entidad_plural}
crm.clients
crm.brands
crm.products
crm.contacts
crm.opportunities
projects.projects
projects.campaigns
projects.briefs
projects.campaign_assets
generation.jobs
generation.workflow_templates
generation.custom_models
generation.text_generations
assets.assets
assets.asset_versions
assets.collections
assets.collection_assets
-- Tablas de relacion: {entidad1}_{entidad2}
projects.campaign_assets
assets.collection_assets
```
### Columnas Comunes
```sql
-- Identificadores
id UUID PRIMARY KEY DEFAULT gen_random_uuid()
tenant_id UUID NOT NULL REFERENCES auth.tenants(id)
-- Timestamps
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
deleted_at TIMESTAMP WITH TIME ZONE -- Soft delete
-- Auditoria
created_by UUID REFERENCES auth.users(id)
updated_by UUID REFERENCES auth.users(id)
```
### Foreign Keys
```sql
-- Formato: fk_{tabla}_{columna}
CONSTRAINT fk_clients_tenant FOREIGN KEY (tenant_id) REFERENCES auth.tenants(id)
CONSTRAINT fk_brands_client FOREIGN KEY (client_id) REFERENCES crm.clients(id)
```
### Indices
```sql
-- Formato: idx_{tabla}_{columnas}
CREATE INDEX idx_clients_tenant ON crm.clients(tenant_id);
CREATE INDEX idx_assets_tenant_status ON assets.assets(tenant_id, status);
CREATE UNIQUE INDEX idx_brands_tenant_slug ON crm.brands(tenant_id, slug);
```
### Politicas RLS
```sql
-- Formato: rls_{tabla}_{accion}
CREATE POLICY rls_clients_tenant_isolation ON crm.clients
USING (tenant_id = current_setting('app.current_tenant')::uuid);
```
---
## 3. Backend (NestJS)
### Estructura de Modulos
```
src/modules/{nombre-modulo}/
├── {nombre-modulo}.module.ts
├── controllers/
│ └── {nombre}.controller.ts
├── services/
│ └── {nombre}.service.ts
├── entities/
│ └── {nombre}.entity.ts
├── dto/
│ ├── create-{nombre}.dto.ts
│ ├── update-{nombre}.dto.ts
│ └── {nombre}-response.dto.ts
├── guards/
│ └── {nombre}.guard.ts
├── decorators/
│ └── {nombre}.decorator.ts
└── __tests__/
└── {nombre}.service.spec.ts
```
### Naming de Archivos
```typescript
// Entities (singular, PascalCase en clase)
client.entity.ts export class Client
brand.entity.ts export class Brand
generation-job.entity.ts export class GenerationJob
// Services (singular)
client.service.ts export class ClientService
brand.service.ts export class BrandService
// Controllers (plural para REST)
clients.controller.ts export class ClientsController
brands.controller.ts export class BrandsController
// DTOs (accion-entidad)
create-client.dto.ts export class CreateClientDto
update-brand.dto.ts export class UpdateBrandDto
client-response.dto.ts export class ClientResponseDto
```
### Endpoints REST
```typescript
// Formato: /api/v1/{modulo}/{recurso}
// Usar kebab-case para rutas
// CRUD basico
GET /api/v1/crm/clients // Listar
GET /api/v1/crm/clients/:id // Obtener
POST /api/v1/crm/clients // Crear
PUT /api/v1/crm/clients/:id // Actualizar completo
PATCH /api/v1/crm/clients/:id // Actualizar parcial
DELETE /api/v1/crm/clients/:id // Eliminar
// Recursos anidados
GET /api/v1/crm/clients/:clientId/brands
POST /api/v1/crm/clients/:clientId/brands
// Acciones especiales
POST /api/v1/crm/clients/:id/activate
POST /api/v1/generation/jobs/:id/cancel
GET /api/v1/generation/jobs/:id/progress
```
---
## 4. Frontend (React)
### Estructura de Carpetas
```
src/
├── components/
│ ├── common/ # Componentes reutilizables
│ │ ├── Button/
│ │ ├── Modal/
│ │ └── Table/
│ └── {modulo}/ # Componentes por modulo
│ ├── ClientCard/
│ ├── BrandList/
│ └── CampaignForm/
├── pages/
│ ├── crm/
│ │ ├── ClientsPage.tsx
│ │ └── BrandsPage.tsx
│ └── generation/
│ └── GenerationPage.tsx
├── hooks/
│ ├── useClients.ts
│ └── useGeneration.ts
├── stores/
│ ├── useAuthStore.ts
│ └── useTenantStore.ts
├── services/
│ └── api/
│ ├── clients.api.ts
│ └── generation.api.ts
└── types/
├── client.types.ts
└── generation.types.ts
```
### Naming de Componentes
```typescript
// Componentes (PascalCase)
ClientCard.tsx export const ClientCard
BrandList.tsx export const BrandList
CampaignForm.tsx export const CampaignForm
// Pages (PascalCase + Page suffix)
ClientsPage.tsx export const ClientsPage
GenerationPage.tsx export const GenerationPage
// Hooks (camelCase con use prefix)
useClients.ts export const useClients
useGeneration.ts export const useGeneration
// Stores (camelCase con use prefix + Store suffix)
useAuthStore.ts export const useAuthStore
useTenantStore.ts export const useTenantStore
// Types (PascalCase)
client.types.ts export interface Client
generation.types.ts export interface GenerationJob
```
---
## 5. Documentacion
### Archivos de Modulos
```
PMC-{NNN}-{NOMBRE}.md # Definicion de modulo
RF-PMC-{NNN}-{NOMBRE}.md # Requerimientos funcionales
EPIC-{NNN}-{NOMBRE}.md # Epica con user stories
```
### Reportes y Trazas
```
REPORTE-{DESCRIPCION}-YYYY-MM-DD.md # Reportes con fecha
TRAZA-TAREAS-{CAPA}.md # Trazas por capa (BACKEND, FRONTEND, DATABASE)
ANALISIS-{TEMA}.md # Documentos de analisis
```
### IDs de Tareas
```
DB-{NNN} # Tareas de base de datos
BE-{NNN} # Tareas de backend
FE-{NNN} # Tareas de frontend
REQ-{NNN} # Tareas de requerimientos
```
---
## 6. Generacion de Contenido
### Workflows
```yaml
# Nombres de workflows (snake_case)
product_photo_synthetic
social_media_post
ad_variations_banner
virtual_avatar_consistent
brand_style_transfer
```
### Modelos Personalizados
```yaml
# Nombres de modelos (kebab-case)
lora-{tenant_slug}-{brand_slug}-v{N}
checkpoint-{tenant_slug}-{purpose}
embedding-{tenant_slug}-{concept}
# Ejemplos
lora-acme-corp-main-brand-v1
lora-acme-corp-product-shoes-v2
checkpoint-acme-corp-realistic
```
### Jobs de Generacion
```yaml
# Estados de jobs
queued # En cola
processing # Procesando
completed # Completado
failed # Fallido
cancelled # Cancelado
```
---
## 7. Automation (n8n)
### Nombres de Flujos
```yaml
# Formato: {trigger}_{action}_{target}
product_created_generate_kit
campaign_approved_notify_client
job_completed_update_assets
quota_exceeded_notify_admin
```
### Webhooks
```yaml
# Formato: /webhooks/{source}/{event}
/webhooks/crm/product-created
/webhooks/generation/job-completed
/webhooks/n8n/flow-callback
```
---
## 8. Assets y Storage
### Estructura S3/MinIO
```
{bucket}/
├── {tenant_slug}/
│ ├── assets/
│ │ ├── originals/
│ │ ├── thumbnails/
│ │ └── processed/
│ ├── generated/
│ │ ├── images/
│ │ └── videos/
│ ├── models/
│ │ ├── loras/
│ │ └── checkpoints/
│ └── temp/
```
### Nombres de Archivos
```yaml
# Assets subidos
{uuid}.{extension}
{uuid}_thumb.{extension}
# Assets generados
gen_{job_id}_{index}.{extension}
gen_{job_id}_{index}_thumb.{extension}
# Modelos
lora_{tenant}_{brand}_{version}.safetensors
```
---
## Referencias
- Estandares base: `core/orchestration/directivas/simco/SIMCO-CREAR.md` (seccion nomenclatura)
- Nomenclatura legacy: `core/orchestration/directivas/legacy/ESTANDARES-NOMENCLATURA-BASE.md`
---
**Generado por:** Requirements-Analyst
**Fecha:** 2025-12-08