mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 15:13:07 +00:00
- Contact.phone (text único) → phones (array field Payload, subcampo value): fonte única; principal = phones[0]; beforeValidate normaliza, filtra vazios, rejeita inválido e duplicado DENTRO da ficha (C111 entre fichas preservado) - migration add_contact_phones_array: backfill phone → phones[0] (gen_random_uuid) antes do drop da coluna + índice em value (hand-edit documentado; snapshot .json gerado mantém as colunas C99/C100 já existentes) - primaryPhoneOf / phoneValuesOf / reorderWithPrimaryPhone em src/lib/phone.ts (ordem = prioridade; inline edit = seta o principal preservando o resto) - findOrCreateContactByPhone aceita phones[] (dedupe pelo primário; reuse faz append dos faltantes; locks em todos os números digitados) - sync conta→ficha (CampaignUser): phone da conta faz APPEND quando a ficha não tem (nunca reordena nem remove); tombstone LGPD substitui TODOS os telefones - convite redemption: telefone digitado vira principal, demais preservados - import CSV: preview sinaliza compartilhado também por número secundário; bulk insere contact_phones (JOIN nas leituras, uuid no insert) - busca por telefone (apoiadores, pickers, combobox) casa qualquer número - UI: PhonesFieldEditor compartilhado (repetível mascarado, remover, ↑/↓, modo inline com Salvar) nas 5 superfícies — liderança (form/ficha/lista), apoiador (form/ficha), dobradinha (ficha), assessor (ficha), wizard - UI pública (petição/WhatsApp) intocada: zod e forms ficam com phone; as ações mapeiam phone → phones[0] - testes: spec novo campaignMultiPhones (aceite completo), specs C111/C99 atualizados, e2e wizard/apoiador ajustados |
||
|---|---|---|
| .. | ||
| consent-texts | ||
| lib | ||
| agent-claim.mjs | ||
| agent-file-miss.mjs | ||
| agent-pool.mjs | ||
| agent-prioritize.mjs | ||
| agent-promote-related-on-merge.mjs | ||
| agent-ready.mjs | ||
| agent-register.mjs | ||
| agent-status.mjs | ||
| assert-local-database.mjs | ||
| build-bahia-demographics.mjs | ||
| build-bahia-geometries.mjs | ||
| build-bahia-tse-city-codes.mjs | ||
| build-election-aggregates.mjs | ||
| build-municipality-zone-geometries.mjs | ||
| check-plans-only-pr-closes.mjs | ||
| check-push-chain.mjs | ||
| check-test-locations.mjs | ||
| ci-scope.mjs | ||
| configure-branch-protection.mjs | ||
| db-doctor.mjs | ||
| db-pull.mjs | ||
| db-start.mjs | ||
| e2e-affected.mjs | ||
| ensure-repo-deps.mjs | ||
| gate-ci.mjs | ||
| git-push.mjs | ||
| guard-dev-db.mjs | ||
| import-projecao.mjs | ||
| issue.mjs | ||
| regenerate-municipality-catalog-snapshot.mjs | ||
| run-e2e-affected.mjs | ||
| seed-consent.mjs | ||
| seed-loader.mjs | ||
| seed-minimal.mjs | ||
| seed-posts.mjs | ||
| seed-tse-results.mjs | ||
| test-affected.mjs | ||
| vercel-deploy-cooldown.mjs | ||
| vercel-ensure-production-alias.mjs | ||
| vercel-ignore-build.sh | ||
| worktree.mjs | ||