Lleva las preferencias del cliente (estilo, color, material) al render

Hasta ahora el render solo se condicionaba con tipo/m²/calidad + notas de texto
libre por zona; lo que el cliente decía hablando con Luisa o en la llamada
(estilo, colores, materiales) se guardaba en estilo/tasteText pero NO viajaba al
generador de imagen, así que el render no lo representaba.

- b2c (perfil.ts): el payload de PERFIL_WEBHOOK_URL incluye ahora
  preferencias:{estilo, gustos} (gustos = tasteText). Claves vacías se omiten.
- worker (webhook.dto): nuevo PreferenciasDto opcional.
- worker (prompt-builder): construirUserContent (función pura) inyecta el estilo
  y los gustos del cliente como bloque dedicado y omite el "modern" por defecto
  cuando hay preferencias; el system prompt prioriza colores/materiales del
  cliente sobre un estilo genérico.
- worker (pipeline): enhebra preferencias hasta generarPrompt.
- worker (sandbox): acepta estilo/gustos para poder probarlos.
- docs/arquitectura-integracion: documenta el campo preferencias.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-06-10 18:17:45 +02:00
parent f6e0347143
commit ad87e45892
7 changed files with 88 additions and 15 deletions

View File

@@ -43,6 +43,16 @@ class ReformaDto {
presupuestoTarget?: number;
}
class PreferenciasDto {
@IsOptional()
@IsString()
estilo?: string;
@IsOptional()
@IsString()
gustos?: string;
}
class EmpresaDto {
@IsUUID()
tenantId: string;
@@ -86,6 +96,11 @@ export class PerfilCompletoDto {
@Type(() => ReformaDto)
reforma: ReformaDto;
@IsOptional()
@ValidateNested()
@Type(() => PreferenciasDto)
preferencias?: PreferenciasDto;
@ValidateNested()
@Type(() => EmpresaDto)
empresa: EmpresaDto;