Dashboard de fichas partners marca blanca.
Subir origen Externalia · seleccionar partner · aportar kit de marca · generar y aprobar el output adaptado. Lo que requiere Cloudflare R2/KV/Workers/Anthropic queda stubeado con UX explícita; el resto funciona sobre localStorage mientras se aprovisiona el backend.
Vista por partner
Catálogo navegable · partners × fichas.
Cada fila es un partner; cada columna, una de las 10 fichas del catálogo origen Externalia. Pulsa una celda para abrir el documento (origen → PDF; partner → preview HTML servido). El catálogo refleja en tiempo real los estados que viven en localStorage bajo la clave extera_fichas_state_v1.
D1.1 · Ingesta unificada vía LLM mapper
Subir un PDF de catálogo o un MD libre.
Arrastra el PDF actual de eGestiona/eBackup/etc. o pega un MD escrito en lenguaje natural. El sistema lo procesa con Claude (Sonnet 4.6 default · Opus 4.7 si pasa de 50 págs) contra el schema canónico v1 y te muestra el JSON propuesto para que confirmes o edites antes de guardar.
https://extera-fichas-extractor.pablo-ledo.workers.dev/extract · devuelve JSON v1 + prompt Gemini en 5–15 s. Si quieres calidad superior con Claude, el switch es cargar ANTHROPIC_API_KEY y poner LLM_PROVIDER=anthropic en el Worker.
Imagen generada con este prompt
Una vez generes la imagen con Gemini (u otro modelo · Flux schnell de Workers AI también vale), súbela aquí. Se asocia al origen y se reutiliza como hero al generar la ficha para cada partner. Si no la subes aquí, las fichas adaptadas saldrán sin imagen hasta que la añadas.
Schema canónico (estilo editorial Bloomberg/Reuters/HBR/Atlantic, paleta apagada, accents brand HEX ≤ 8 %, anti-patrones explícitos): data/imagen-prompts.md. Cada origen guardado almacena su prompt como parte del JSON (campo image_prompt) y la imagen como image_data_url base64, ambos se reutilizan al generar la imagen para cualquier partner.
D1.2 + D1.3 · Registro de partners y kit de marca
Identidad por partner · tokens, logo, endorso.
Por cada partner: nombre comercial, color primario/secundario, tipografías (display + body), SVG del logo y manual de marca opcional. Si el partner tiene parent brand (by Applus+, etc.), activa modo endorso en cabecera/pie. Cualquier cambio aquí versiona el kit y dispara outdated en las fichas existentes (decisión #5).
D1.5 · Aprobación triple asíncrona
Cadena de validación · Julen → Alejandro → Partner.
Cada ficha generada recorre tres validaciones antes de publicarse: Julen García la crea y dispara la cadena → Alejandro Pizarro (alejandro.pizarro@externalia.com, validación comercial Externalia) → partner (email registrado en el bloque como approver, validación final). Cada paso recibe email con magic-link firmado HMAC — sin Zero Trust extra.
▸ Etapa 2 · pendiente Alejandro
▸ Etapa 3 · pendiente partner
Demo · disparar cadena de validación
Selecciona una ficha en estado placeholder y dispara la cadena. La ficha entra en la cola de Alejandro; al aprobar, pasa a la del partner; al aprobar el partner, queda validada.
Documentación viva del proyecto
Decisiones cerradas · pendientes · hitos.
5 puntos confirmados · 2026-05-05
- Repo y ruta — vive aquí, en
extera-websitebajo/internal/fichas/. Carpeta separada del sitio comercial. No se enlaza desde la home pública. - Acceso —
extera-websiteestá protegido por Cloudflare Zero Trust a nivel de plataforma. Toda esta ruta queda accesible solo a usuarios autorizados. - Flujo — PDF original → JSON estructurado → plantilla maestra HTML/CSS → PDF nuevo con Browser Rendering API. El MD se genera en paralelo como artefacto de revisión humana.
- Marca del output — Externalia Solutions como matriz junto al logo del partner. Iconos Phosphor Bold. Nombres legacy nunca aparecen: esos espacios los ocupa el nombre del producto del partner.
- Almacenamiento — PDF original, JSON, MD y PDF generado en R2 persistente. Cada generación asociada a partner y timestamp.
Decisiones cerradas en esta sesión · 2026-05-06
- Color hex matriz Externalia Solutions · ya no es bloqueante. La adaptación al partner usa tokens Applus+ en cabecera;
#0077C8queda registrado en data file para usos institucionales pero no entra en la ficha del partner. - Mapeo nombre comercial Appolo CAE · 8 productos · ejecutado. Patrón
Appolo {dominio}aplicado en fichas 01-10 + dashboard. Sercae One conserva marca histórica. - Dossier eSignID · porte completo en multipágina con rediseño Applus+, plantilla dedicada en Hito 6.
- Ingesta vía LLM (Opción B) · Worker Anthropic con prompt caching. Sonnet 4.6 default, Opus 4.7 para dossiers.
- Aprobación triple asíncrona · cadena canónica Julen García (creador) → Alejandro Pizarro
alejandro.pizarro@externalia.com(validación comercial Externalia) → partner approver (validación final). Cada paso recibe magic-link HMAC sin Zero Trust extra. - Sin histórico · al actualizar una ficha la anterior se sobrescribe en R2.
- HTML servido + PDF on-demand · URL pública
/p/{slug}/{ficha}/connoindex,nofollow; PDF se regenera al pulsar descargar. - Prompt Gemini por origen · cada origen subido genera un prompt en paralelo al JSON, siguiendo el schema canónico (Bloomberg/Reuters/HBR/Atlantic, paleta apagada, accents brand HEX ≤ 8 %, anti-patrones explícitos). Vive como campo
image_promptdentro del JSON y se reutiliza al generar la imagen para cualquier partner. 10 prompts ya canónicos endata/imagen-prompts.md. - Migración de plantilla por partner · cada partner decide cuándo migrar; las fichas se marcan
outdatedautomáticamente cuando cambiatemplate_versionobrand_kit_version.
Inputs aún pendientes
- Datos de contacto Appolo CAE · email comercial, teléfono, email sistemas. Aparecen al pie de cada ficha generada (hoy mostrados como
placeholder). Único bloqueante para retirar las etiquetas amarillas en las 10 fichas vivas.
Hitos planificados
- Hito 1 · Infra: R2 + KV + healthcheck Function leyendo Zero Trust.
- Hito 2 · Worker
extera-fichas-extractorcon Anthropic API + prompt caching. - Hito 3 · Plantilla maestra parametrizable (
template/master.html) factorizada de la actual. - Hito 4 · Generación end-to-end: UI completa + Browser Rendering + R2 + KV + email approver.
- Hito 5 · Catálogo navegable real, selector de partner contra
data/clientes-marca-blanca.mdproductivo, README interno. - Hito 6 · Migración por partner del catálogo plantilla a plantilla, cada uno revisado con Pablo Ledo.
Linear · INN-516 ↗ · backup del spec antes del rediseño operativo: index.spec-archive.html.bak