Sandbox de renders en el image-worker + fixes del pipeline

Sandbox web (/sandbox) servido por el worker, reusando los mismos servicios del
pipeline, para iterar prompts/modelos con una imagen y ver variaciones+score, y
guardar la config ganadora (aplica al worker al instante, persistida en volumen):
- SettingsService: store de config (system prompts + modelos) con defaults de
  prompts/*.txt + env y override persistido en /app/data (sobrevive a redeploys).
- /sandbox (HTML), GET /sandbox/config, POST /sandbox/render, POST /sandbox/save
  (auth Bearer FUNNEL_API_KEY). DOM seguro, sin innerHTML de contenido externo.
- prompt-builder/supervisor/image-generator aceptan overrides y leen de Settings.

Fixes del pipeline de generación:
- image-generator: pide modalities ['image','text'] y extrae la imagen de
  message.images[] (forma real de OpenRouter), no solo de content.
- main.ts: sube el límite de body a 30mb (las fotos en data URI rompían el 100kb).

Deja de versionar artefactos de build (dist/ + *.tsbuildinfo); .gitignore en
image-worker y Whatsapp-bot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-06-09 16:32:11 +02:00
parent 89166857e7
commit 062a34c144
33 changed files with 614 additions and 614 deletions

View File

@@ -3,13 +3,17 @@ import { ConfigModule } from '@nestjs/config';
import { WebhookModule } from './webhook/webhook.module';
import { PipelineModule } from './pipeline/pipeline.module';
import { ReformixModule } from './reformix/reformix.module';
import { SettingsModule } from './settings/settings.module';
import { SandboxModule } from './sandbox/sandbox.module';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
SettingsModule,
WebhookModule,
PipelineModule,
ReformixModule,
SandboxModule,
],
})
export class AppModule {}