feat(community): retrospectiva multi-fonte — contrato + GitHub/Discord (Fase 1)#438
Open
Clintonrocha98 wants to merge 1 commit into
Open
feat(community): retrospectiva multi-fonte — contrato + GitHub/Discord (Fase 1)#438Clintonrocha98 wants to merge 1 commit into
Clintonrocha98 wants to merge 1 commit into
Conversation
… (phase 1) Fase 1 da retrospectiva multi-fonte: transforma a retrô (antes só GitHub, read model ao vivo no portal) numa peça plugável por fonte. - community: contrato RetrospectiveSource (key + collect(Period, SourceFilters): SourceResult) e DTOs tipados (Period, SourceFilters, Metric, HeadlineMetrics, SourceResult) + interface Slide. Módulo de domínio, dono do contrato. - integration-github: GithubSource refatora o antigo CommunityRetrospective preservando o cálculo 1:1 (bots, PRs merged/unmerged, repos com PR, destaques), empacotado em slides tipados. - activity: DiscordSource (dono do dado) com 5 slides — voz, mensagens, novos membros, reações e mensagem mais reagida. Agrega tudo em SQL escopado por sent_at/occurred_at, hideBots via source_kind, nome via metadata do Discord. - portal: RetrospectiveDeck resolve as fontes por tagged service (retrospective.source), ordena e descarta vazias; página compõe cover (chips por fonte) + blocos por fonte (kind -> Blade por convenção) + closing. Filtros ricos do visitante aposentados (viram config editorial na Fase 2); restam recorte de período e ocultar bots. Sem tabelas novas nesta fase. Testes: GithubSource (golden 1:1), DiscordSource (agregações), RetrospectiveDeck (ordem/descartes) e página multi-fonte.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fase 1 — Juntar as fontes
Primeira fatia da retrospectiva multi-fonte. Transforma a retrospectiva (hoje só GitHub, read model ao vivo no
portal) numa peça plugável por fonte: adicionar uma plataforma passa a ser 1 classe + 1 tag no módulo dono do dado, sem tocar oportal.Aponta para a branch de integração
feature/retrospective-multi-source.O que entra
community(domínio) — o contratoRetrospectiveSource:key()+collect(Period, SourceFilters): SourceResult.Period,SourceFilters(hideBots + exclusions),Metric,HeadlineMetrics,SourceResult, e a interfaceSlide(kind()+toArray()).integration-github—GithubSourceCommunityRetrospectivedo portal preservando o cálculo 1:1 (bots, PRs merged/unmerged, repos só com PR no recorte, destaques por linhas).github.panorama,github.repos,github.highlights,github.core,github.community).activity—DiscordSource(mora aqui porque o dado —Voice,Message,Reaction,MembershipEvent— é doactivity)discord.voice_board,discord.messages,discord.new_members,discord.reactions,discord.top_message.messages~2GB). Filtra porsent_at/occurred_at(tempo do evento), nuncacreated_at.hideBotsviasource_kind. Nome de exibição resolvido só para o topo de cada ranking.portal— orquestraçãoRetrospectiveDeckresolve as fontes por tagged service (retrospective.source), ordena (github → discord) e descarta as sem dado.kind→ componente Blade por convenção) → closing.Fora de escopo (fica pra depois)
Notas
GithubSource(golden 1:1, herdado do read model antigo),DiscordSource(agregações + escopo temporal + hideBots),RetrospectiveDeck(ordem/descarte) e página multi-fonte.BackfillRepositoryTest(timezone,+00:00vs-03:00) e alguns erros deout of shared memorynoDROPsob paralelismo. Ambos são pré-existentes/ambientais (confirmado: o backfill falha igual na base, e os testes deactivitypassam isolados) — não têm relação com esta mudança.