teqo-backup/src/collections
Francisco Solla e71b062650 feat(C139): schemas e actions de contato — criação staff e edição por célula
Fase 3 (server) do plano aprovado:
- schemas/contact.ts: contactCreateSchema (nome único via invariante, state
  obrigatório, phones opcionais C112); contactFieldUpdateSchema ganha variantes
  city e postalCode ('' → clear); mensagens das actions client-safe aqui.
- schemas/personGenders.ts: enum de gênero em módulo folha (ciclo de imports
  contact ↔ leadership detectado e quebrado).
- actions/contact.ts: createContact (gate staff + bypass justificado, lock
  contact-name:{normalized}) e updateContactField (escopo 'edita o que vê'
  via re-check user-threaded para advisor; reorder de telefone primário).
  Apagar reusa as actions C100 existentes.
- collections Contact e Supporter: label de gênero 'Outro' → 'Não binário'
  (sem migration; nenhum teste pina a label).
- 11 testes unit novos; lint, tsc e prettier limpos.
2026-08-13 14:12:53 -03:00
..
Activity.ts fix(C115): revisão /simplify — relógio com baseline de espelho, reopen sem re-cancelamento, hardening do webhook 2026-08-11 22:42:05 -03:00
AllocationDecision.ts B134 — allow empty rationale on movimento allocation decisions 2026-08-02 23:08:52 +00:00
CalendarFeed.ts fix(C92): calendar feed creation stripped by admin-only system fields 2026-08-08 23:13:30 -03:00
CampaignDemand.ts feat(C111): telefone não único — duas pessoas podem compartilhar o mesmo celular 2026-08-10 23:03:05 -03:00
CampaignInvite.ts Engineering Pass 3: consolidate patterns and lock them with guards. 2026-07-29 06:11:29 -03:00
CampaignUser.ts feat(C112): múltiplos telefones por pessoa — Contact.phones array (ordem = prioridade) 2026-08-11 10:47:02 -03:00
CampaignVoteSummarySnapshot.ts B57 — delta 7 dias do total estimado no Início 2026-08-01 06:33:39 +00:00
CampaignWebAuthnCredential.ts Deliver B40: biometric login for /campanha. 2026-07-28 10:59:23 -03:00
Consent.ts Lock down CMS/PII collection access and leader routes 2026-07-23 22:25:18 -03:00
Contact.ts feat(C139): schemas e actions de contato — criação staff e edição por célula 2026-08-13 14:12:53 -03:00
ElectionCandidate.ts Add TSE 2022 election results model and local seed import. 2026-07-18 18:25:19 -03:00
ElectionCandidateVote.ts Add TSE 2022 election results model and local seed import. 2026-07-18 18:25:19 -03:00
ElectionTally.ts Add TSE 2022 election results model and local seed import. 2026-07-18 18:25:19 -03:00
GoogleCalendarSync.ts fix(C115): revisão /simplify — relógio com baseline de espelho, reopen sem re-cancelamento, hardening do webhook 2026-08-11 22:42:05 -03:00
Leadership.ts feat(C119): status de apoio 'Lembrança' em lideranças — enum, badge e exclusão de pendências 2026-08-11 14:52:49 -03:00
Media.ts Add users.roles so Payload /admin can separate editors from admins. 2026-07-27 01:54:29 -03:00
Municipality.ts feat(C99): toda conta campaignUser aponta para uma ficha Contact; lideranças ganham assessores responsáveis 2026-08-09 19:12:35 -03:00
MunicipalityUpdate.ts feat(campaign): C87 — atualização unificada (texto + polaridade + urgente) 2026-08-07 05:04:41 -03:00
Notification.ts D2 — Push + sino in-app para /campanha 2026-07-31 01:51:41 +00:00
Organization.ts Engineering Pass 3: consolidate patterns and lock them with guards. 2026-07-29 06:11:29 -03:00
Petition.ts Lock down CMS/PII collection access and leader routes 2026-07-23 22:25:18 -03:00
Post.ts Add users.roles so Payload /admin can separate editors from admins. 2026-07-27 01:54:29 -03:00
PushSubscription.ts D2 — Push + sino in-app para /campanha 2026-07-31 01:51:41 +00:00
Signature.ts Lock down CMS/PII collection access and leader routes 2026-07-23 22:25:18 -03:00
StateDeputy.ts feat(C129): nome de legenda da dobradinha — campo ballotName + display discreto sob o nome (Closes #696) 2026-08-12 12:52:35 -03:00
Subscription.ts Lock down CMS/PII collection access and leader routes 2026-07-23 22:25:18 -03:00
Supporter.ts feat(C139): schemas e actions de contato — criação staff e edição por célula 2026-08-13 14:12:53 -03:00
SupporterImportBatch.ts Simplify C6 supporter paths and register C8 scale/DRY follow-ups. 2026-07-18 22:34:55 -03:00
Tag.ts Add users.roles so Payload /admin can separate editors from admins. 2026-07-27 01:54:29 -03:00
Users.ts Add users.roles so Payload /admin can separate editors from admins. 2026-07-27 01:54:29 -03:00
VotePledge.ts Engineering Pass 3: consolidate patterns and lock them with guards. 2026-07-29 06:11:29 -03:00