> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Eventos do Reporter

> Consulte os eventos de domínio que o Lerian Reporter emite — ciclo de vida de templates, relatórios e prazos — com payloads completos, tópicos e semântica de entrega.

O Reporter emite eventos de domínio como mensagens **CloudEvents 1.0** em modo de conteúdo binário. Diferente do Midaz e dos demais produtores Kafka, o Reporter publica sobre **RabbitMQ**: cada evento é roteado ao exchange nomeado por `RABBITMQ_REPORT_EVENTS_EXCHANGE` com a chave do evento como routing key AMQP (`report.finished` roteia como `report.finished`). O envelope é idêntico ao do resto da plataforma — consulte o [envelope compartilhado](/pt/reference/events/overview) — e o valor `topic` no manifesto é um identificador lógico derivado da fonte, não um destino no broker.

Todo evento carrega `ce-schemaversion` `1.0.0`. As chaves do payload são `snake_case`. Campos marcados com `?` são opcionais ou anuláveis. A emissão é pós-commit e nunca falha o trabalho subjacente. Eventos **Critical** são respaldados por outbox — gravados em um outbox durável e retransmitidos durante quedas do broker; eventos **Important** publicam direto, com fallback para o outbox quando o circuito do broker abre. Para os conceitos, a operação de manifesto e a orientação ao consumidor, leia o [guia de eventos do Reporter](/pt/reporter/reporter-events); o catálogo legível por máquina é servido em [`GET /v1/streaming/events`](/pt/reference/reporter/get-streaming-events).

## Eventos de template

Todos Important.

| Evento (`ce-type`)               | Dispara quando                                         | Payload principal                                                                                                         |
| -------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.template.created` | Um template é enviado e persistido.                    | `template_id`, `output_format`, `description`, `file_name`, `mapped_datasource_keys`, `mapped_fields_count`, `created_at` |
| `studio.lerian.template.updated` | O arquivo ou os metadados de um template mudam.        | `template_id`, `output_format`, `description`, `updated_fields`, `file_replaced`, `updated_at`                            |
| `studio.lerian.template.deleted` | Um template é excluído, com cascata sobre seus prazos. | `template_id`, `hard_delete`, `cascaded_deadlines_deleted`, `deleted_at`                                                  |

## Eventos de relatório

`report.requested` é Important; os três eventos terminais são Critical.

| Evento (`ce-type`)               | Dispara quando                                                                                                                                                                                                                                | Payload principal                                                                                                                                                                                 |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.report.requested` | Uma requisição de relatório é aceita e enfileirada de forma durável (status `Processing`), antes de o worker assumi-la.                                                                                                                       | `report_id`, `template_id`, `output_format`, `status`, `request_id`, `filter_datasource_count`, `template_description`                                                                            |
| `studio.lerian.report.finished`  | Todas as seções de dados tiveram sucesso e o artefato está armazenado.                                                                                                                                                                        | `report_id`, `template_id`, `output_format`, `status`, `artifact_object_key`, `artifact_content_type`, `artifact_ttl`?, `completed_at`, `duration_ms`, `section_count`                            |
| `studio.lerian.report.partial`   | Pelo menos uma seção falhou, mas existe um artefato. `section_failures` carrega apenas códigos de erro canônicos.                                                                                                                             | `report_id`, `template_id`, `output_format`, `status`, `artifact_object_key`, `artifact_content_type`, `section_failures`, `completed_at`, `duration_ms`, `section_count`, `failed_section_count` |
| `studio.lerian.report.errored`   | O relatório termina em erro — o despacho ao worker falhou ou a geração falhou. `error_code` é um vocabulário fixo (`report_generation_failed`, `report_generation_timeout`, `report_generation_canceled`); texto bruto de erro nunca trafega. | `report_id`, `template_id`?, `output_format`?, `status`, `error_code`, `error_summary`, `completed_at`, `duration_ms`?                                                                            |

`report.errored` pode se originar do manager (falha de despacho) ou do worker (falha de geração). Ambos compartilham o `ce-id` determinístico `reporter.report.error.<report_id>`, então duplicatas colapsam no consumidor.

## Eventos de prazo

`deadline.delivered` e `deadline.delivery_reverted` são Critical; os demais são Important.

| Evento (`ce-type`)                         | Dispara quando                                                                   | Payload principal                                                                                                                                                                   |
| ------------------------------------------ | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `studio.lerian.deadline.created`           | Um prazo regulatório é criado.                                                   | `deadline_id`, `name`, `type`, `template_id`?, `template_name`, `due_date`, `frequency`, `months_of_year`, `active`, `notify_days_before`, `color`, `status_snapshot`, `created_at` |
| `studio.lerian.deadline.updated`           | Um prazo muda.                                                                   | `deadline_id`, `updated_fields`, `template_id`?, `template_name`, `due_date`, `frequency`, `months_of_year`, `active`, `status_snapshot`, `updated_at`                              |
| `studio.lerian.deadline.deleted`           | Um prazo é excluído (soft delete).                                               | `deadline_id`, `soft_delete`, `deleted_at`                                                                                                                                          |
| `studio.lerian.deadline.delivered`         | Um prazo é marcado como entregue. `next_occurrence` é `null` para prazos únicos. | `deadline_id`, `template_id`?, `template_name`, `type`, `due_date`, `delivered_at`?, `status_snapshot`, `frequency`, `next_occurrence`?, `updated_at`                               |
| `studio.lerian.deadline.delivery_reverted` | Uma marca de entrega é desfeita.                                                 | `deadline_id`, `template_id`?, `template_name`, `type`, `due_date`, `reverted_at`, `previous_delivered_at`?, `status_snapshot`, `frequency`, `updated_at`                           |

## Eventos consumidos

O Reporter não consome eventos da plataforma — este canal é somente de publicação. O tráfego de geração de relatórios entre manager e worker roda em uma fila de trabalho RabbitMQ interna que não faz parte do contrato público de eventos.
