teqo-backup/tests/helpers
Francisco Solla cc4b344a3b feat(C242/C243): abre a busca por selfie a qualquer visitante (escopo B) + seção na homepage
O escopo A/C do gate (PR #1370) é superado por decisão do dono (2026-10-01, aval jurídico declarado): o índice vira anônimo (archivePhotoFace, foto + descritor 128-d, sem nome/vínculo), o enrollment por pessoa morre (faceSubject/faces:enroll removidos) e qualquer visitante encontra as próprias fotos aprovadas.

- faces:index persiste os descritores por foto (transação substitui as linhas + marker = modelo); desaprovar/remover/deletar foto apaga os descritores (hooks + FK cascade)
- POST /api/fotos/selfie casa o vetor da consulta contra o índice em memória (TTL 60 s) e devolve só a interseção com o read aprovado do C233, sem score/nome de terceiro; leave-index apaga os descritores que casarem
- Consentimentos seguem fail-closed: busca-selfie-fotos (consulta) e busca-selfie-indice (aviso público do índice), textos versionados em scripts/lib/faceConsentTexts.mjs e provisionados por pnpm seed:face-consents
- pnpm archive:publish aprova o acervo em lote (draft -> approved; removed nunca) com guardas e recibo
- C243: seção condicional SelfieSearchHomeSection (port do design hi-fi, cenas 390/1280) entre a Central e a newsletter; sem engine/captura na home e sem CTA morto quando fechada
- docs: planos C242/C243, AGENTS-public, runbook §C242, changelog

Provas: gate:fast 457 arquivos/5.055 testes; int full 109/1.075; e2e frontendFotosSelfie 9/9; knip verde.
2026-10-01 12:29:04 -03:00
..
adminApi.ts fix(e2e): serializa o beforeEach UI login do admin com o advisory lock 727001 (Closes #805) 2026-08-23 19:10:21 -03:00
advisoryLock.ts test(int): C149 — isola o advisory lock do harness e2e (vitest fora do processo Playwright) 2026-09-12 19:49:24 -03:00
archivePhotoFixture.ts feat(C231): ingerir o acervo de fotos do Flickr no storage privado 2026-09-26 05:40:22 -03:00
assertTestDatabase.ts chore(OPS125): conta de teste dos agentes no staging (Closes #1126) 2026-09-17 02:08:57 -03:00
camaraVodStub.ts fix(C182): acervo mostra o frame do meio de cada fala, não a capa da sessão (Closes #1104) 2026-09-16 21:42:36 -03:00
campaignFixtures.ts refactor(OPS46): simplify pós-revisão — release do claim ao fim do cleanup (janela purge segura), gate da hook exige o par de flags, Set→boolean, guard setval/nextval\s*\( e spec de steal invariante-primeiro 2026-08-23 14:24:33 -03:00
campaignMunicipalityAllocator.ts ops(OPS46): e2e local coleta via hook ESM (next/cache + server-only) e allocator de município com registry anti-wrap (Closes #733) 2026-08-23 14:02:19 -03:00
campaignResidue.ts fix(OPS45): tirar export desnecessário de RelationshipValue (knip CI) 2026-08-13 14:44:48 -03:00
distinctWordStartQuery.ts fix(test): queries distintas em specs de portfolio de município 2026-07-30 22:29:20 -03:00
e2eEsmLoader.mjs ops(OPS46): e2e local coleta via hook ESM (next/cache + server-only) e allocator de município com registry anti-wrap (Closes #733) 2026-08-23 14:02:19 -03:00
e2eEsmResolve.mjs fix(campaign): C140 — manual dispatch in 18 forms prevents React 19 form reset on error 2026-08-23 17:54:19 -03:00
faceIntFixtures.ts feat(C242/C243): abre a busca por selfie a qualquer visitante (escopo B) + seção na homepage 2026-10-01 12:29:04 -03:00
featureBounds.ts feat(S39): seção da Central de Conteúdos na home (Closes #1305) 2026-09-24 14:53:36 -03:00
googleCalendarSyncLock.ts test(int): C149 — isola o advisory lock do harness e2e (vitest fora do processo Playwright) 2026-09-12 19:49:24 -03:00
googleCalendarTestKey.ts fix(campaign): C114-LOCK — hooks do sync do Google Calendar seguram row lock por I/O de rede (Closes #870) 2026-08-24 22:25:23 -03:00
login.ts fix(e2e): serializa o beforeEach UI login do admin com o advisory lock 727001 (Closes #805) 2026-08-23 19:10:21 -03:00
matchMedia.ts B75: wizard mobile header chrome on Mandate Red bar. 2026-07-30 03:26:54 -03:00
metaContent.ts refactor(S27-FOLLOWUP-DRY): dono único do OG image de fallback do frontend público (Closes #1276) 2026-09-23 14:30:40 -03:00
seedUser.ts test(e2e): unificar logins do usuário de teste no helper adminHeaders com advisory lock (Closes #767) 2026-08-24 18:42:03 -03:00
serverOnly.ts Ship /campanha nuclei MVP with RBAC, invites, and vote estimates. 2026-07-18 15:01:56 -03:00
socialStub.ts feat(S3): seção de conteúdos da home de campanha inclui os posts do Instagram 2026-08-18 20:29:50 -03:00
speechBundleFixture.ts feat(C154): vertical de comunicação — papel communicator e acervo pesquisável 2026-09-13 13:46:58 -03:00
stub.ts Add the tooling gate: knip, CI, zero-warning lint, as-never ban 2026-07-23 23:06:12 -03:00
testDatabaseLease.ts feat(C234): busca por selfie no álbum público — índice A/C consentido, selfie on-device 2026-09-27 20:04:41 -03:00
tseFixtures.ts Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
webSpeechMediaFixture.ts feat(C217): cortes e links compartilhaveis na fonte "Falas na internet" (Closes #1293) 2026-09-24 20:17:54 -03:00