docs: media publishing and producer checks in README and validation guide

This commit is contained in:
hacklab 2026-10-15 15:09:07 +02:00
parent 1b58768738
commit b4557ae23a
2 changed files with 45 additions and 2 deletions

View file

@ -137,6 +137,49 @@ Verificación
GET /media/<id> con sesión del colectivo B -> 404.
3b. PUBLICAR CON IMÁGENES (scheduler)
-------------------------------------
Problema
Desde 71db0a0/a6843e9 un borrador aprobado puede llevar mediaAssetIds y
altTexts, pero el registro del scheduler
(packages/connector-runtime/src/registry.ts) creaba los conectores sin
loadAsset/openAsset: Mastodon y Telegram devolvían rejected_permanent
INVALID_POST y el post no salía. Los altTexts no llegaban al conector.
Qué cambia
- packages/connector-runtime/src/media.ts: loadAsset lee media_assets
dentro del colectivo de la ejecución (app.workspace_id, RLS forzado);
openAsset descarga el objeto, abre el marco SPENC1 con S3_KEK y
comprueba el hash del contenido. Solo lectura. Los bytes van
worker -> red; nunca pasan por la API.
- preparePostForDispatch convierte altTexts[i] en
providerMetadata.altText[mediaAssetIds[i]] (lo que lee Mastodon).
- Instagram registrado también en el scheduler: rechaza con error
explícito en vez de "proveedor desconocido". Sigue sin publicar fotos
(necesita URL pública; decisión pendiente).
Tests
cd packages/connector-runtime && npx vitest run esperado: 33 pass
cd apps/scheduler && npx vitest run esperado: 96 pass
Prueba manual (entorno de pruebas)
1. Compose: post con 2 imágenes y texto alternativo a Mastodon.
2. Aprobar y programar a 1 minuto.
3. El post sale con las 2 imágenes y su descripción en la instancia.
4. Con una imagen de otro colectivo forzada en mediaAssetIds -> falla
(MEDIA_ASSET_NOT_FOUND), no se publica nada.
3c. PRODUCTOR DE VÍDEO
----------------------
- Quitado MEDIA_DEBUG_STDERR=1 del compose de producción (escribía la
salida de ffmpeg sin censurar en /tmp).
- El logo superpuesto solo acepta imágenes del propio colectivo
(adjuntos, recursos de grupo o la marca). Antes bastaba una clave con
formato válido.
cd apps/api && npx vitest run src/video esperado: 38 pass
4. ESTILO Y LOGO
----------------
- apps/web/src/app/globals.css: paleta de acampada26s.net. Fondo