Skip to content

Log de auditoria

Público

Este artigo é para operadores da plataforma GCM. Administradores de igreja veem uma fatia por organização dos mesmos dados em Configurações -> Atividade em seu espaço de trabalho — esta página é o superconjunto entre tenants, restrito à equipe.

O Log de auditoria (/platform/audit) é o registro canônico de cada ação de equipe e de cada evento relevante para segurança no GCM. Organização criada, plano alterado, reembolso emitido, personificação iniciada, personificação encerrada, falha de login, redefinição de senha disparada, função atribuída — tudo aterrissa em platform_audit_log com o ator, o alvo, o timestamp e um blob de metadados JSONB. Esta aba é como você pergunta "quem fez o quê, quando, para quem".

Visualizador do log de auditoria com filtros

A faixa de KPI

Três contagens no topo, todas ao vivo:

  • Total de eventos — cada linha em platform_audit_log, desde sempre. Útil sobretudo como verificação de sanidade de que o gravador ainda está gravando.
  • Eventos hoje — linhas desde a meia-noite no fuso horário da plataforma. Um dia normal são alguns milhares; um fim de semana tranquilo, algumas centenas. Um zero repentino geralmente significa que o gravador de auditoria quebrou.
  • Personificações (7 dias) — linhas onde action ilike '%impersonat%' na semana passada. Essa é a métrica para observar — cada início, fim e falha de personificação conta. Picos aqui merecem uma leitura rápida.

O visualizador

Abaixo da faixa fica o componente unificado AuditLogViewer, também usado pela página de Atividade com escopo de organização. Ele suporta:

  • Intervalo de datas — de / até com granularidade diária. Padrão dos últimos 30 dias.
  • Ação — dropdown de valores distintos em platform_audit_log.action. A lista é preenchida automaticamente a partir do DB para se manter atual conforme novas ações são adicionadas.
  • Ator — correspondência parcial de e-mail. Use para restringir a um usuário da equipe.
  • Organização — por id da organização. Pesquisa o caminho jsonb metadata->>target_org_id para pegar cada evento que menciona uma organização, mesmo quando o próprio organization_id da linha é nulo.

Os filtros se compõem; limpar um mantém os outros ativos.

Lendo uma linha

Cada linha na tabela mostra:

  • Quando — timestamp exato.
  • Ação — o verbo. O conjunto completo é documentado na migração que adiciona a restrição da coluna; as comuns incluem org_created, plan_updated, refund_processed, subscription_overridden, impersonation_started, impersonation_failed, email_template_updated, auth_login_failed.
  • Ator — e-mail do usuário da equipe que disparou a linha. Linhas de função edge e cron mostram system@geniuschurchmanager.com.
  • Alvo — o nome da organização afetada (resolvido a partir dos metadados) ou "platform" para linhas em toda a plataforma.
  • Metadados — preview JSONB truncado.

Clique em qualquer linha para expandir os metadados. Reembolsos, por exemplo, armazenam o valor original, o valor do reembolso, o método manual (se fora da plataforma) e o texto do motivo. Sobreposições de assinatura armazenam os valores antes / depois de cada campo alterado.

Investigações comuns

"Quem reembolsou aquele pagamento de US$ 79 da First Church na terça?" Filtre action = refund_processed, defina o intervalo para terça, filtre organization = First Church. A coluna do ator é sua resposta.

"Alguém da nossa equipe entrou no espaço de trabalho da Second Baptist este mês?" Filtre action = impersonation_started, defina o intervalo para "o mês", filtre organization = Second Baptist. Cada linha carrega o motivo nos metadados — leia-os a seguir.

"O plano do cliente realmente mudou na semana passada ou ele está imaginando?" Filtre action = plan_updated, filtre organization = <a org dele>. Se existir uma linha, os metadados mostram o id do plano antes/depois e quem fez. Se não existir linha, o cliente está se enganando — mas verifique também subscription_overridden caso a mudança tenha passado pelo diálogo de edição de operações de faturamento.

"Quantos logins falharam nas últimas 24 horas?" Ação auth_login_failed, intervalo "ontem até hoje". Cruze o ator com a aba Usuários para ver se uma conta está sendo alvo.

Referência de ações (as importantes)

AçãoQuando disparaMetadados-chave
org_createdNova organização provisionadaorg_name, org_slug, plan_id, created_by_admin
org_deletedExclusão definitivaorg_name, org_slug, member_count, reason
plan_updatedMudança de plano em linha na aba Organizaçõestarget_org_id, previous_plan, new_plan
subscription_overriddenDiálogo Editar assinaturatarget_org_id, before, after, reason, email_sent
renewal_triggeredRenovação manual (modo cobrança)target_org_id, mode, reason, result
refund_processedModal de reembolsopayment_history_id, amount, refund_type, reason
impersonation_startedAbrir conta a partir da ficha da organizaçãotarget_org_id, org_name, reason
impersonation_endedRetorno à plataformatarget_org_id
impersonation_failedRPC rejeitou o iníciotarget_org_id, reason, error
email_template_updatedSalvar na aba Modelos de e-mailslug, before, after
landing_content_updatedSalvar na aba Landingsection, content_key, locale, before, after
branding_settings_savedSalvar na aba Marcakeys
auth_login_failedSenha errada ou e-mail desconhecidoemail, ip, user_agent

A lista não é exaustiva — novas ações são adicionadas com cada recurso.

Retenção

platform_audit_log não é expurgado automaticamente. As linhas vivem para sempre até que alguém as exclua, e deliberadamente não expomos uma UI para fazer isso — a trilha de auditoria é a trilha de auditoria. Se você precisa reduzir o tamanho da tabela para uma migração, escreva uma migração que arquive para uma tabela de armazenamento frio e documente em docs/runbooks/.

O que você não pode fazer aqui

O visualizador é somente leitura. Não há "editar", não há "anotar", não há "marcar como importante". Se precisa anexar contexto a uma linha, escreva uma nova linha realizando a ação que ela descreve (por exemplo, adicione um comentário Slack no ticket que a linha de auditoria referencia, ou abra o issue Sentry vinculado). Trate o log de auditoria como uma caixa-preta de aeronave: somente leitura, escrita única, nunca o lugar que você visita para limpar um problema.