S2-FOLLOWUP — validate do itemId (excludedItems do YouTube) é código morto; produção sem validação de ID de vídeo #40
Labels
No labels
blocked
done
in-prod
in-progress
kind:chore
prio:P1
prio:P2
ready
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
Reference: fsolla/teqo#40
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Follow-up da entrega S2 (Issue #18, seção de conteúdos com YouTube na home de campanha).
Problema
O
validatedo campoitemIdemsrc/globals/SocialFeedSettings.ts(excludedItems) é código morto: ele lêdata.platform, mas em ambos os caminhos odatapassado ao validate é o documento inteiro, não a linha do array — server-side embeforeChange(siblingData: row,data: deepMerge(doc, data)— payload/dist/fields/hooks/beforeChange/promise.js:209) e no admin emuseField(data: documentForm.getData(),siblingData: getSiblingData(path)). Logodata.platformé sempreundefinede o guard nunca dispara — produção não tem validação nenhuma de ID de vídeo do YouTube.O e2e do S2 (
tests/e2e/youtube-stub.mjs+frontend.e2e.spec.ts) depende dessa mortandade: os ids do stub têm 20 chars (e2e-video-destaque-1etc.), fora do padrão[A-Za-z0-9_-]{11}que o validate declara — um "conserto" isolado do validate quebra os testesrenders the YouTube feed with exclusions…ekeeps the last snapshot…(400 no write de exclusão).Correção em dupla (obrigatória)
siblingData.platform(ou remover o validate e deixar o campo livre);e2evidest1) e atualizar osexcludedItemsno spec;Fora do escopo: mexer no S2 entregue em produção.
S3 (2026-08-18) — impacto estendido: a entrega S3 (Issue #20) adiciona
platform: 'instagram'ao mesmoexcludedItemse o picker de exclusão no admin (InstagramPostExclusionPicker) escreve os IDs viauseField— a mortandade do validate continua (o picker não passa por validate, e os ids do stub IGe2e-ig-muro-1etc. também estão fora de qualquer padrão). Mitigação prática: o picker só grava IDs vindos do snapshot (IDs reais da API), então o impacto em produção para IG é baixo; para YouTube segue como registrado. A correção em dupla desta issue deve cobrir os dois stubs (YT 11 chars + IG) se o validate passar a valer porsiblingData.platform.Tracker migrado para o GitHub — continue em #gh775 (github.com/fsolla/teqo/issues/775). Esta Issue Forgejo está fechada.