feat(OPS52-media): recupera os objetos de media de produção (pnpm media:recover) #38
Loading…
Reference in a new issue
No description provided.
Delete branch "OPS52-media-ops52-media-recuperar-os-arquivos-de-media-de-pr"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
OPS52-media — Recuperar os arquivos de media de produção
Closes #10
O que entrega
Ferramenta commitada para restaurar os objetos de media de produção (as ~40 capas dos posts) do WordPress de origem para o bucket S3 (Garage) — sem tocar no banco (rows e URLs relativas
/api/media/file/<filename>intocadas; o staticHandler do Payload passa a servir).pnpm media:recover(scripts/recover-media.mjs) — 3 modos:reconcile(padrão): plano → baixa a capa do WP →PutObjectcom key =filenameda row (idempotente por overwrite); DB apenas lido--dry-run: plano +headObjectpor key (pre-flight; exit 1 se qualquer checagem falhar)--verify: HEAD da URL pública por filename — o aceite da Issue, sem credencial de bucketscripts/lib/wpArticles.mjs— fetch ao vivo do WordPress extraído do seed (sem twin; o seed importa de lá com comportamento idêntico) + helpers puros unit-testados (resolveCoverSource,resolveMediaCoverSources,resolveCoverDownloadUrl,slugFromFilename);processContentagora usa a resolução compartilhadaALLOW_REMOTE_DB=trueexplícito + echo do alvo (DB/bucket/endpoint/origin), timeouts curtos (SDK 5s/15s, fetches 30s/60s) — endpoint inalcançável falha em segundos; covers constrangidas a http(s) no host do WP com sóimage/*armazenadodocs/plans/ops52-media-recuperar-arquivos-impl.md), nota no AGENTS.md, changelog OPS44Evidências coletadas no planejamento (probes read-only)
featuredmedia— a maioria das capas vem do fallback de 1ª imagem inline; todas as 42 capas resolvidas estão no hostjorgesolla.com.brDívida registrada
Verificação
pnpm gate:fast,pnpm format:check,pnpm check:cycles,pnpm test(2312 unit + 791 int),pnpm build,pnpm push(gate:ci completo incl. e2e) — tudo verde (knip: erro conhecido P3 de payload.config, exit 0)