teqo-backup/src/collections
Francisco Solla 162a518416 feat(C111): telefone não único — duas pessoas podem compartilhar o mesmo celular
Contact.phone deixa de ser único em enforcement (nunca houve constraint DB):
- remove o hook enforceUniqueContactPhone e os asserts assertContactPhone*
  (conflicts/ambiguity) — os 5 fluxos de escrita de pessoa salvam com número
  compartilhado; rename contactPhoneInvariant.ts -> contactPhoneLocks.ts
  (locks passam a significar serialização, não unicidade)
- findOrCreateContactByPhone: 0 fichas cria, 1 reusa (dedupe C6/C99),
  2+ cria ficha nova (a identidade da pessoa em criação é a ficha nova)
- convite autofill/login: ficha ancorada pode compartilhar o phone; o lado
  conta permanece fail-closed (username DB-unique; check de 2+ contas)
- import CSV: preview sinaliza telefone_compartilhado (resolução manual);
  confirm/bulk abortam fail-closed se um phone ganhar 2+ fichas (race)
- fix de achado de execução: supporter_import_batch.actor_id NOT NULL com
  FK ON DELETE set null derrubava o delete de campaignUser com batch
  órfão (23502) — CampaignUser.beforeDelete limpa batches + fixture
  cleanup descobre/deleta batches dos accounts owned
2026-08-10 23:03:05 -03:00
..
Activity.ts feat(C104): compromisso 'Todo o dia' na criação rápida da agenda (só datas, multi-dia) 2026-08-10 01:13:12 -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(C111): telefone não único — duas pessoas podem compartilhar o mesmo celular 2026-08-10 23:03:05 -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(C111): telefone não único — duas pessoas podem compartilhar o mesmo celular 2026-08-10 23:03:05 -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
Leadership.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
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(C99): toda conta campaignUser aponta para uma ficha Contact; lideranças ganham assessores responsáveis 2026-08-09 19:12:35 -03:00
Subscription.ts Lock down CMS/PII collection access and leader routes 2026-07-23 22:25:18 -03:00
Supporter.ts D2 — Push + sino in-app para /campanha 2026-07-31 01:51:41 +00: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