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

@ -132,8 +132,8 @@ Conectar una cuenta (OAuth con `state` de un solo uso y PKCE donde la red lo adm
| Red | Conectar | Publicar | Notas |
|---|---|---|---|
| Mastodon | Sí | Texto | Sin claves de servidor; cada cuenta registra la app en su instancia. |
| Telegram | Sí | Texto | Token del bot de BotFather. |
| Mastodon | Sí | Texto e imágenes (con texto alternativo) | Sin claves de servidor; cada cuenta registra la app en su instancia. |
| Telegram | Sí | Texto e imágenes | Token del bot de BotFather. |
| Instagram | Sí, con `INSTAGRAM_CLIENT_ID/SECRET` | No todavía | Meta descarga la imagen de una URL pública y los medios están cifrados: falta un endpoint temporal. Ver [docs/oauth-connect.md](docs/oauth-connect.md). |
| PeerTube | No | Directo sí | Falta el puente OAuth en tube.occupymedia.cc. |
| X | No | No | Sin conector. API de pago por uso. |

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