Skip to content

Feat/schema corroboracoes feedback - #723

Merged
karinaperes merged 2 commits into
developfrom
feat/schema-corroboracoes-feedback
Aug 23, 2026
Merged

karinaperes merged 2 commits into
developfrom
feat/schema-corroboracoes-feedback

Conversation

@karinaperes

@karinaperes karinaperes commented Aug 23, 2026 •

Copy link
Copy Markdown
Contributor

Pull Request

📋 Descrição

Implementa a estrutura de dados do sistema de corroborações e remove das
superfícies públicas os elementos que a v2 do documento de produto revogou.

É a etapa 3 da ordem de execução do feedback — a parte de dados. As rotas e as
telas vêm em seguida.


🔗 Issue relacionada

Related to #507


✅ Alterações realizadas

  • Backend
  • Front-end
  • Banco de Dados
  • Testes
  • Documentação

Schema e migrations

FeedbackAttribute — tabela relacional com @@unique([feedbackId, attribute]),
conforme decidido na spike.
A restrição é o motivo da escolha: só ela impede, no banco, que o mesmo eixo seja
contado duas vezes na mesma avaliação. Como o valor público da corroboração é a
contagem, dado duplicado corromperia exatamente o que a funcionalidade entrega.

Feedback ganhou os campos da camada B e de moderação:

Campo Para quê
publicationAllowed o avaliador permite publicar o texto
publishedByReceiver o avaliado decide publicar — as duas condições valem
hiddenByAdmin / hiddenReason moderação
@@unique([projectId, fromUserId, toUserId]) uma avaliação por par, por projeto
@@index([toUserId, hiddenByAdmin]) suporta a agregação do portfólio

rating passou a Int? e anonymous ganhou default true — ambos legados,
mantidos como sinal interno. Ver seção 14 do documento de produto.

Eixos definidos

Sete, todos redigidos como comportamento observável:

🗣️ Avisa antes de travar 📦 Entrega o que assume
⏱️ Entrega no prazo 🤝 Puxa a equipe junto
🧭 Pergunta antes de decidir 🔄 Recebe revisão sem travar o time
🛠️ Se ajusta quando o plano muda

O documento passou a registrar também as oito propostas descartadas e o
motivo de cada uma — criatividade, disciplina, domínio da stack, aprende rápido,
entre outras. O critério: adjetivo é opinião, comportamento é testemunho.

Despublicação do rating

Tornar rating opcional quebrou o build, e o compilador apontou exatamente os
dois lugares que a seção 14 mandava despublicar:

  • Estrelas no portfólio — antipadrão explícito da seção 5.4. A seção passou a
    exibir o texto como citação, sem escala e sem autoria.
  • Média pública em listPortfolioSummary — revogada na v2 por ser ranking
    disfarçado: "duas médias lado a lado são um ranking, independentemente de
    como sejam rotuladas"
    .

Não foi escopo escolhido: era impossível fazer a migration sem resolver, e as
duas superfícies contradiziam o desenho aprovado.


🧪 Como testar

  1. npx prisma migrate deploy — aplica as duas migrations.
  2. Conferir no banco que FeedbackAttribute existe e que o enum tem 7 valores.
  3. npm test e npx tsc --noEmit.
  4. Abrir um portfólio público: não deve haver estrelas nem nota.
  5. Abrir /portfolios: a listagem não deve mais trazer média de feedback.

📷 Evidências

              antes    depois

erros de tipo 110 110 (sem regressão)
testes 160 + 3s 160 + 3s
Feedback (banco) 0 registros — migration sem risco de conflito


⚠️ Observações

  • ⚠️ Se você já aplicou a primeira migration e cadastrou feedback de teste, a
    segunda vai falhar.
    Ela recria o enum com DROP TYPE, e valores antigos
    (RECEBE_REVISAO_BEM, AUTONOMIA_NA_STACK) não existem na lista nova. Como a
    tabela estava vazia, foi seguro no banco compartilhado — mas em base local com
    dados, limpe FeedbackAttribute antes.

  • Duas migrations de propósito. A primeira cria a estrutura; a segunda
    registra o ajuste dos eixos, que veio de discussão de produto posterior.
    Poderiam ser consolidadas, mas separadas preservam a história da decisão.

  • A funcionalidade ainda não funciona ponta a ponta. O banco comporta o
    modelo, mas POST /api/feedback continua exigindo rating obrigatório e não
    grava atributo nenhum. Esse descompasso é resolvido no próximo PR, que traz as
    rotas. Não quebra nada hoje porque a tabela está vazia e nenhuma tela chama a
    rota.

  • O portfólio exibe menos que antes, temporariamente. As estrelas saíram e o
    bloco de corroborações ainda não existe — etapa 5. Sem impacto prático:
    não há feedback cadastrado.


✔️ Checklist

Summary by CodeRabbit

  • New Features

    • Added support for categorizing feedback using behavioral attributes.
    • Added publication consent and moderation information for feedback.
    • Feedback can now be linked optionally to projects and include development comments.
  • Updates

    • Portfolio feedback now highlights written comments with project names instead of ratings.
    • Anonymous feedback is enabled by default.
    • Updated corroboration categories and their descriptions.
  • Bug Fixes

    • Empty feedback sections are no longer displayed when no comments are available.

@karinaperes karinaperes self-assigned this Aug 23, 2026
@vercel

vercel Bot commented Aug 23, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
trycatch Ready Ready Preview Aug 23, 2026 8:28pm
trycatch-prod Ready Ready Preview Aug 23, 2026 8:28pm

@coderabbitai

coderabbitai Bot commented Aug 23, 2026 •

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9d76d35d-e9f9-4013-a2c7-d19bf4d40160

📥 Commits

Reviewing files that changed from the base of the PR and between 1013f96 and 528bdb5.

📒 Files selected for processing (7)
  • docs/02 - produto/feedback/feedback-reputacao.md
  • prisma/migrations/20260823193828_add_feedback_corroboracoes/migration.sql
  • prisma/migrations/20260823202155_ajusta_eixos_de_corroboracao/migration.sql
  • prisma/schema.prisma
  • src/components/Portfolio/sections/PortfolioFeedbackSection.tsx
  • src/lib/portfolio.service.ts
  • src/types/portfolio.types.ts

📝 Walkthrough

Walkthrough

O modelo de feedback passou a incluir eixos comportamentais e metadados de publicação. O portfólio público deixou de exibir avaliações numéricas e passou a mostrar somente comentários associados aos projetos.

Changes

Feedback e portfólio

Layer / File(s) Summary
Modelo e persistência de feedback
prisma/schema.prisma, prisma/migrations/..., docs/02 - produto/feedback/feedback-reputacao.md
O modelo adiciona atributos comportamentais, campos de publicação e moderação, restrições de unicidade e novos eixos de corroboração. As migrações criam e ajustam o enum e a tabela relacionados.
Contrato e consulta do portfólio
src/types/portfolio.types.ts, src/lib/portfolio.service.ts
As respostas públicas deixam de expor avaliações numéricas e médias de feedback.
Renderização dos comentários
src/components/Portfolio/sections/PortfolioFeedbackSection.tsx
A seção filtra feedbacks sem comentários e exibe os comentários com ícone de citação e nome do projeto.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: dev-mauricioab

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/schema-corroboracoes-feedback

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@karinaperes
karinaperes merged commit 5c9788c into develop Aug 23, 2026
7 of 8 checks passed
@sonarqubecloud

Copy link
Copy Markdown

This branch was successfully deployed

2 active deployments
Preview – trycatch-prod — 528bdb59 Deployed Aug 23, 2026 by vercel[bot]
Preview – trycatch — 528bdb59 Deployed Aug 23, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant