Remover schema_version do diagnóstico de ping

TLDR: Remove o campo schema_version de MeetingParticipantPing (coluna do banco e chave dentro do payload diagnostics), porque hoje ele não versiona nada de verdade e não há previsão de o payload de diagnóstico escalar a ponto de precisar disso.

Contexto

A feature de diagnóstico de ping (meeting_ping_diagnostics, PR #697, na época ainda aberta) introduziu uma coluna schema_version em meeting_participant_pings com a intenção de versionar o formato do JSON em diagnostics, permitindo evoluir o payload sem quebrar leituras históricas.

Na prática, essa versão nunca é realmente derivada do que o cliente envia: MeetingParticipants::CreatePing#call cria o registro sem passar schema_version, então a coluna sempre grava o default do banco ("1"), independente do conteúdo de diagnostics. Além disso, não existe nenhum lugar no código que leia diagnostics de volta e faça dispatch por versão — o serializer da resposta (MeetingParticipantPingSerializer) nem expõe diagnostics/schema_version ao front.

Ou seja: o campo existe, mas não versiona nada — é uma coluna sempre fixa em "1" sem leitor versionado. Como não há expectativa de que o payload de diagnóstico cresça a ponto de precisar de versionamento formal, a decisão é remover o campo em vez de mantê-lo como peso morto.

Como a feature ainda não tinha sido mergeada (branch feat/meeting-ping-diagnostics, PR #697 aberta), a remoção é feita com uma nova migration — e não editando a migration original, já que os commits já haviam sido enviados e a PR estava aberta para revisão de outra pessoa.

Objetivos

  • Remover a coluna schema_version de meeting_participant_pings via nova migration
  • Remover a validação de presença de schema_version do model MeetingParticipantPing
  • Remover a chave de exemplo schema_version de dentro do payload diagnostics na spec original, no factory e nos specs de request
  • Manter todo o resto da feature de diagnóstico (tabela, diagnostics jsonb, associação, use case) intacto

Fora de escopo

  • Remover o payload de diagnóstico em si (diagnostics jsonb) — só o conceito de versionamento sai
  • Reintroduzir versionamento de outra forma (coluna computada, enum). Se o payload crescer a ponto de precisar, é decisão futura com spec própria
  • Mexer na spec original além de tirar as referências a schema_version

Mudanças

Arquivo Ação
db/migrate/20260731120000_remove_schema_version_from_meeting_participant_pings.rb criado — remove_column :meeting_participant_pings, :schema_version
db/schema.rb atualizado via make db.migrate
app/models/meeting_participant_ping.rb remove validates :schema_version, presence: true
spec/models/meeting_participant_ping_spec.rb remove o teste de validate_presence_of(:schema_version) e o contexto “defaults”
spec/factories/meeting_participant_pings.rb remove schema_version { "1" } da factory base e a chave schema_version: do trait :with_diagnostics
spec/requests/api/v1/meetings/participant_pings_update_spec.rb remove a chave schema_version: do payload de teste
meeting_ping_diagnostics atualiza a tabela de colunas e o exemplo de payload removendo schema_version; remove o objetivo de versionamento

Como verificar

```bash make db.migrate make test test=spec/models/meeting_participant_ping_spec.rb make test test=spec/requests/api/v1/meetings/participant_pings_update_spec.rb

console

MeetingParticipantPing.column_names # não deve incluir “schema_version” ```

Documentação

Nenhuma doc nova — apenas a atualização da spec original citada acima, para refletir a remoção.