feat(frontend): evento Compra aprovada no manifesto de eventos (CRM-316) - #369
Conversation
…oria própria (CRM-316) purchase.approved fica selecionável como gatilho de jornada (com filtros de produto e valor) e como condição de segmento, no grupo "Eventos de Compra" (6 idiomas). Espelho do contrato do evo-flow e do CRM. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JxYjUwr2vV69kYddiXJHRo
…de CI (CRM-316) Espelha a descrição do amount (unidade maior da moeda, nunca centavos) e lista o spec do manifesto de eventos na lane Vitest, que é lista fechada. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JxYjUwr2vV69kYddiXJHRo
|
🧙 Sourcery has finished reviewing your pull request! Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've found 1 issue
Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments
### Comment 1
<location path="src/components/segments/SegmentConditionEditor.tsx" line_range="59" />
<code_context>
conversation: 'Eventos de Conversa',
message: 'Eventos de Mensagem',
campaign: 'Eventos de Campanha',
+ purchase: 'Eventos de Compra',
custom: 'Personalizado',
};
</code_context>
<issue_to_address>
**issue:** The segment event picker renders the new purchase category with the hardcoded Portuguese string `Eventos de Compra`, so English, Spanish, French, and Italian users see a Portuguese category heading even though `categories.purchase` was added to all locale files.
**Triggers:** When a non-Portuguese user opens the Performed or LastPerformed event selector.
**Suggested fix:** Use the events i18n namespace and render `t('categories.purchase')` (and the existing category labels) instead of hardcoded Portuguese strings.
</issue_to_address>Sourcery assessment
Approval pending. 1 finding to address first.
Blocking findings: src/components/segments/SegmentConditionEditor.tsx:59
| conversation: 'Eventos de Conversa', | ||
| message: 'Eventos de Mensagem', | ||
| campaign: 'Eventos de Campanha', | ||
| purchase: 'Eventos de Compra', |
There was a problem hiding this comment.
issue: The segment event picker renders the new purchase category with the hardcoded Portuguese string Eventos de Compra, so English, Spanish, French, and Italian users see a Portuguese category heading even though categories.purchase was added to all locale files.
Triggers: When a non-Portuguese user opens the Performed or LastPerformed event selector.
Suggested fix: Use the events i18n namespace and render t('categories.purchase') (and the existing category labels) instead of hardcoded Portuguese strings.
…ackend (CRM-316) O teste se chamava "mirrors the backend count exactly (23)" com o backend em 24. A conta passa a ser BACKEND_COUNT menos a lista do que é deliberadamente ausente, então o próximo evento no backend bumpa um número que ainda significa alguma coisa.
…ados e acabamento do review (CRM-519) Rodada 2 do review. A branch foi rebaseada no develop, que trouxe o purchase.approved (PR #369) depois de a rodada 1 nascer: - events.purchase_approved.description nos 6 locales e `options` em `outcome` (created | already_in_pipeline) com rótulos, para a guarda de contrato ficar verde com o catálogo atual. - Specs cobrindo purchase.approved: ids da compra e do card fora do picker, product em texto livre e amount numérico, outcome como select. - Lookups pedem o mesmo tamanho de página que os filtros do CRM já usam (etiquetas e canais 200, agentes 100, templates -1); o index de canais pagina, então InboxesService.list ganha o parâmetro opcional. - Comentários que o diff anterior tornou falsos corrigidos (diálogo de troca de evento e campos obrigatórios não existem mais); justificativa verdadeira no eslint-disable; fragmento vazio removido; ajuda do tipo de canal e rótulo de "Atribuído por" condizentes com selects. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JxYjUwr2vV69kYddiXJHRo
…ados e acabamento do review (CRM-519) Rodada 2 do review. A branch foi rebaseada no develop, que trouxe o purchase.approved (PR #369) depois de a rodada 1 nascer: - events.purchase_approved.description nos 6 locales e `options` em `outcome` (created | already_in_pipeline) com rótulos, para a guarda de contrato ficar verde com o catálogo atual. - Specs cobrindo purchase.approved: ids da compra e do card fora do picker, product em texto livre e amount numérico, outcome como select. - Lookups pedem o mesmo tamanho de página que os filtros do CRM já usam (etiquetas e canais 200, agentes 100, templates -1); o index de canais pagina, então InboxesService.list ganha o parâmetro opcional. - Comentários que o diff anterior tornou falsos corrigidos (diálogo de troca de evento e campos obrigatórios não existem mais); justificativa verdadeira no eslint-disable; fragmento vazio removido; ajuda do tipo de canal e rótulo de "Atribuído por" condizentes com selects. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JxYjUwr2vV69kYddiXJHRo
Summary
purchase.approvedna categoria novapurchase("Compra aprovada" / "Purchase approved"), com o mesmo schema do backend.categories.purchasenos 6 locales.catalog.spec.tsentra na lane Vitest (lista fechada).Security
Test plan
npx vitest run src/lib/events-manifest/catalog.spec.ts src/i18n/locales/i18n-parity.spec.tsnpx tsc --noEmitNota
pipeline.stage_changed(23 eventos contra 24 do backend). Drift pré-existente, fora do escopo.requireddo catálogo como inputs obrigatórios (ids de compra/card). Defeito anterior a esta PR, tratado em card próprio.Changed Files
src/lib/events-manifest/event-names.tssrc/lib/events-manifest/types.tssrc/lib/events-manifest/catalog.tssrc/lib/events-manifest/catalog.spec.tssrc/components/journey/shared/EventSelector/EventSelector.tsxsrc/components/segments/SegmentConditionEditor.tsxsrc/i18n/locales/{pt,pt-BR,en,es,fr,it}/events.json.github/workflows/test.ymlRelated PRs
Linked Issue
🤖 Generated with Claude Code
https://claude.ai/code/session_01JxYjUwr2vV69kYddiXJHRo
Summary by Sourcery
Add support for approved purchase events across the frontend event manifest, journey triggers, and segment conditions.
New Features:
purchase.approvedevent to the frontend event manifest under a new Purchase category, including its localized labels and schema.Enhancements:
CI:
Tests:
purchase.approvedevent.