feat(community): retrospectiva persistida com snapshot ao publicar (Fase 2)#444
Open
Clintonrocha98 wants to merge 2 commits into
Open
feat(community): retrospectiva persistida com snapshot ao publicar (Fase 2)#444Clintonrocha98 wants to merge 2 commits into
Clintonrocha98 wants to merge 2 commits into
Conversation
…ase 2)
Torna a retrospectiva uma peça editorial persistida: o operador cura e
publica, o visitante só assiste ao resultado congelado.
Domínio (community):
- Entidade Retrospective (tabela community_retrospectives, sem tenant_id) +
enum RetrospectiveStatus (draft|publishing|published, contratos Filament).
- VOs DeckConfig e RetrospectiveSnapshot com casts tipados (AsDeckConfig,
AsRetrospectiveSnapshot), nunca array solto.
- FrozenSlide: reidrata o snapshot honrando o contrato Slide sem o domínio
importar as classes de slide de integration (Domain -> Integration proibido).
- Actions CompileSnapshot (coleta+congela) e ComposeDeck (aplica curadoria sobre
o snapshot), PublishRetrospective + job CompileRetrospectiveSnapshot (congela
na fila).
- label() novo no contrato RetrospectiveSource (identidade estática das fontes).
Portal:
- RetrospectiveDeck removido; a orquestracao migrou para o dominio.
- Pagina publica le a edicao publicada mais recente (sem filtros do visitante);
rota de preview /comunidade/retrospectiva/{retrospective}/preview (guard 403
no mount, o portal nao tem rota de login web).
panel-admin:
- RetrospectiveResource: CRUD completo em capacidade (ordem/on-off de fonte via
repeater, exclusions, textos, publicar). Preview e pagina publica compartilham
o mesmo render path (ComposeDeck).
Docs: spec e ADR-0002 atualizados com os refinamentos (FrozenSlide, label(),
exclusions recompilam o snapshot).
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 2 — Persistir e publicar
Segunda fatia da retrospectiva multi-fonte. A Fase 1 tornou a retrospectiva plugável por fonte, mas ao vivo. Esta fase a transforma numa peça editorial persistida: o operador cura e publica; ao publicar, o dado é congelado num snapshot; a página pública lê o congelado, sem tocar as fontes.
Aponta para a branch de integração
feature/retrospective-multi-source.O que entra
community(domínio) — a entidade e o cicloRetrospective(community_retrospectives, semtenant_id) + enumRetrospectiveStatus(draft|publishing|published, contratos Filament).DeckConfig(curadoria: ordem, on/off, exclusions) eRetrospectiveSnapshot(SourceResult[]congelados) via casts tipados (AsDeckConfig,AsRetrospectiveSnapshot) — nuncaarraysolto.FrozenSlide: reidrata o snapshot honrando o contratoSlidesem o domínio importar as classes de slide deintegration-github(Domain → Integration é proibido).CompileSnapshot(coleta + congela) eComposeDeck(aplica a curadoria sobre o snapshot),PublishRetrospective+ jobCompileRetrospectiveSnapshot(congela na fila).portal— leitura do congeladoRetrospectiveDeckremovido; a orquestração migrou para o domínio./comunidade/retrospectiva/{retrospective}/previewpara o operador (rascunho coletado ao vivo), com guard403nomount.panel-admin— o CRUD editorialRetrospectiveResource: completo em capacidade (ordem/on-off de fonte por repeater, exclusions, textos de capa/fecho, publicar). Feio de propósito — o Deck Builder visual é a Fase 3.ComposeDeck), então "ver preview" bate com o publicado.Refinamentos registrados nos docs (spec + ADR-0002)
label()novo no contratoRetrospectiveSource(identidade estática das fontes, para o CRUD listar sem coletar).FrozenSlideno lugar de um registrokind → classe(forçado pela regra Domain → Integration).Fora de escopo (Fase 3)
Notas
community_retrospectives(colunastimestamptz, jsonb paradeck_config/snapshot).CompileSnapshot/ComposeDeck, publish+job, página pública lê snapshot, preview autenticado, CRUD Filament). Bateria completa: 920/923 verdes — as 3 falhas são oBackfillRepositoryTest(timezone+00:00vs-03:00), pré-existentes/ambientais, sem relação com esta mudança.