mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-14 08:53:11 +00:00
* deploy: limpeza pós-deploy do build cache e tags locais antigas (INF3/F2) O deploy compila no homeserver e acumulava build cache + tags locais antigas no disco raiz (incidente 19/08: 45G de cache). Após o smoke: docker builder prune -f + remoção das tags locais teqo-1313 exceto o SHA em uso (best-effort, registry preserva o rollback). * feat(S9): captura de novidades da campanha na home pública (form + CTA do hero) Seção 'Receba as novidades da campanha' acima do rodapé: nome + WhatsApp obrigatórios, e-mail/estado/cidade/comentário opcionais, toggle pré-selecionado 'Quero fazer parte do time' gravado como subscription.campaignLevel (time|esporadico). CTA secundário do hero vira o atalho (#novidades, scroll suave). Contact + Subscription em withPayloadTransaction com consentimento novo fail-closed por chave estável 'campanha-novidades' — nada é gravado sem o texto aprovado no admin. Migration 20260819_192605 (state de contact nullable + coluna campaign_level). Impl plan, changelog, int + e2e. * plans(C141,C143,C142): permissões granulares por assessor + responsáveis de demanda + UI por perfil * plans(C141,C143,C142): permissões granulares por assessor + responsáveis de demanda + UI por perfil * feat(S8): seção 'Nossa história' na home — vídeo da trajetória embutido do YouTube (Closes #91) * docs(S8): resolução do conflito com S9 (história → newsletter) + nota do guard e2e dev-only * feat(S10): pixel do Meta na página pública de campanha (campo admin em SiteSettings + PageView na home + Lead no sucesso da captura) Campo tracking.facebookPixelId no global SiteSettings (mesma validação/normalização do precedente Petition, regra centralizada em facebookPixel.ts); home (grupo (home)) injeta o base code + PageView quando o ID está configurado (fail-closed) e o CampaignNewsletterForm dispara exatamente um Lead no sucesso do S9. Migration 20260819_213947_add_site_settings_facebook_pixel_id. Closes #94 * refactor(S10): simplify pass — Lead wiring unit-tested e raças de estado compartilhado do e2e resolvidas e2e: stub hermético de connect.facebook.net no guard compartilhado (specs paralelos renderizam a home com o pixel); advisory lock no Postgres serializando o login do usuário de teste (Payload perde sessão em login concorrente read-modify-write — classe documentada no webauthn); seedTestUser vira create-if-missing (sem janela de usuário ausente nem reset de senha); Lead do form protegido do catch de erro (tracking nunca falha uma captura commitada); descrição do campo compartilhada; unidade nova campaignNewsletterLead cobre exatamente um Lead no sucesso. * feat(C141): perfis de permissão por assessor — Visão × Edição configuráveis, enforcement fail-closed (Closes #105) * chore(C141): regenera changelog agregado após rebase com S10 * plans(C144): options write-scoped para formulários de escrita pós-C141 --------- Co-authored-by: Francisco Solla <admin@solla.dev> |
||
|---|---|---|
| .. | ||
| data | ||
| 20260715_163458_initial.json | ||
| 20260715_163458_initial.ts | ||
| 20260715_163500_consent_text_to_jsonb.ts | ||
| 20260715_181058_add_post_and_tag.json | ||
| 20260715_181058_add_post_and_tag.ts | ||
| 20260715_215834_rename_tag_visible_to_hidden.json | ||
| 20260715_215834_rename_tag_visible_to_hidden.ts | ||
| 20260716_010420_add_campaign_user.json | ||
| 20260716_010420_add_campaign_user.ts | ||
| 20260718_010733_consolidate_campaign_schema.json | ||
| 20260718_010733_consolidate_campaign_schema.ts | ||
| 20260718_190559_territorio_multi_municipio_bairro.json | ||
| 20260718_190559_territorio_multi_municipio_bairro.ts | ||
| 20260718_195854_add_election_results.json | ||
| 20260718_195854_add_election_results.ts | ||
| 20260718_222656_add_supporter.json | ||
| 20260718_222656_add_supporter.ts | ||
| 20260718_222832_add_action_plan.json | ||
| 20260718_222832_add_action_plan.ts | ||
| 20260719_011015_add_supporter_import_batch.json | ||
| 20260719_011015_add_supporter_import_batch.ts | ||
| 20260719_014906_action_plan_list_perf.json | ||
| 20260719_014906_action_plan_list_perf.ts | ||
| 20260719_020000_add_contact_trgm_index.ts | ||
| 20260719_054522_add_nucleus_goals_strategy.json | ||
| 20260719_054522_add_nucleus_goals_strategy.ts | ||
| 20260719_054706_add_privacy_policy_global.json | ||
| 20260719_054706_add_privacy_policy_global.ts | ||
| 20260719_054707_seed_onda0_consent_and_privacy.ts | ||
| 20260719_061302_add_campaign_user_avatar.json | ||
| 20260719_061302_add_campaign_user_avatar.ts | ||
| 20260721_020109_remodel_plazas.json | ||
| 20260721_020109_remodel_plazas.ts | ||
| 20260721_133444_add_plaza_expected_votes.json | ||
| 20260721_133444_add_plaza_expected_votes.ts | ||
| 20260721_133531_add_petition_facebook_pixel_id.json | ||
| 20260721_133531_add_petition_facebook_pixel_id.ts | ||
| 20260723_025513_add_import_export_plugin.json | ||
| 20260723_025513_add_import_export_plugin.ts | ||
| 20260723_124200_add_vote_estimate_scenarios.ts | ||
| 20260723_200000_remodel_municipalities.ts | ||
| 20260723_201000_add_state_deputy.ts | ||
| 20260723_202000_reconcile_municipality_remodel.ts | ||
| 20260724_133600_drop_municipality_vote_goals.ts | ||
| 20260724_175500_contact_phone_optional.ts | ||
| 20260724_180000_add_campaign_foundation_records.json | ||
| 20260724_180000_add_campaign_foundation_records.ts | ||
| 20260724_180000_add_campaign_goals_global.ts | ||
| 20260725_022155_add_municipality_budget_notes.json | ||
| 20260725_022155_add_municipality_budget_notes.ts | ||
| 20260725_170000_whatsapp_subscription_consent_key.ts | ||
| 20260725_213000_rename_action_plan_to_activity.json | ||
| 20260725_213000_rename_action_plan_to_activity.ts | ||
| 20260727_032523_add_users_roles.json | ||
| 20260727_032523_add_users_roles.ts | ||
| 20260727_161752_add_municipality_engagement_level.json | ||
| 20260727_161752_add_municipality_engagement_level.ts | ||
| 20260728_041547_add_allocation_decision_adiada_outcome.json | ||
| 20260728_041547_add_allocation_decision_adiada_outcome.ts | ||
| 20260728_041958_add_campaign_webauthn_credentials.json | ||
| 20260728_041958_add_campaign_webauthn_credentials.ts | ||
| 20260730_010601_simplify_municipality_signal_fields.json | ||
| 20260730_010601_simplify_municipality_signal_fields.ts | ||
| 20260730_043306_simplify_leadership_fields.json | ||
| 20260730_043306_simplify_leadership_fields.ts | ||
| 20260731_014319_add_campaign_notifications.json | ||
| 20260731_014319_add_campaign_notifications.ts | ||
| 20260801_062558_add_campaign_vote_summary_snapshot.json | ||
| 20260801_062558_add_campaign_vote_summary_snapshot.ts | ||
| 20260802_230000_strip_engagement_reversal_signals.ts | ||
| 20260804_061017_add_state_deputy_advisors.json | ||
| 20260804_061017_add_state_deputy_advisors.ts | ||
| 20260806_082110_add_state_deputy_contact.json | ||
| 20260806_082110_add_state_deputy_contact.ts | ||
| 20260806_120000_c14_remodel_activity_agenda.ts | ||
| 20260807_030000_unify_municipality_update.json | ||
| 20260807_030000_unify_municipality_update.ts | ||
| 20260808_134911_add_calendar_feed.json | ||
| 20260808_134911_add_calendar_feed.ts | ||
| 20260808_184113_remodel_activity_responsible.json | ||
| 20260808_184113_remodel_activity_responsible.ts | ||
| 20260809_204728_add_campaign_user_contact_and_leadership_advisors.json | ||
| 20260809_204728_add_campaign_user_contact_and_leadership_advisors.ts | ||
| 20260810_010844_add_activity_all_day.json | ||
| 20260810_010844_add_activity_all_day.ts | ||
| 20260811_111828_add_contact_phones_array.json | ||
| 20260811_111828_add_contact_phones_array.ts | ||
| 20260811_133332_add_google_calendar_sync.ts | ||
| 20260811_155116_add_lembranca_support_status.json | ||
| 20260811_155116_add_lembranca_support_status.ts | ||
| 20260811_183016_drop_activity_task_due.json | ||
| 20260811_183016_drop_activity_task_due.ts | ||
| 20260811_205157_add_google_calendar_push_channel.ts | ||
| 20260811_213648_add_activity_last_mirrored_change_at.ts | ||
| 20260811_234822_add_state_deputy_ballot_name.json | ||
| 20260811_234822_add_state_deputy_ballot_name.ts | ||
| 20260818_111748_add_social_feed_settings.json | ||
| 20260818_111748_add_social_feed_settings.ts | ||
| 20260818_192948_add_instagram_social_feed_fields.json | ||
| 20260818_192948_add_instagram_social_feed_fields.ts | ||
| 20260819_192605_add_campaign_newsletter_capture.json | ||
| 20260819_192605_add_campaign_newsletter_capture.ts | ||
| 20260819_213947_add_site_settings_facebook_pixel_id.json | ||
| 20260819_213947_add_site_settings_facebook_pixel_id.ts | ||
| 20260819_214755_add_campaign_user_advisor_permission_profile.json | ||
| 20260819_214755_add_campaign_user_advisor_permission_profile.ts | ||
| 20260819_233503_add_campaign_demand_responsibles.json | ||
| 20260819_233503_add_campaign_demand_responsibles.ts | ||
| 20260820_003426_add_instagram_sync_status.json | ||
| 20260820_003426_add_instagram_sync_status.ts | ||
| index.ts | ||