Skip to content

Bug/roast fixes#86

Merged
YnotMax merged 8 commits into
MatchDock:developfrom
dev-mauricioAB:bug/roast-fixes
Jun 19, 2026
Merged

Bug/roast fixes#86
YnotMax merged 8 commits into
MatchDock:developfrom
dev-mauricioAB:bug/roast-fixes

Conversation

@dev-mauricioAB

Copy link
Copy Markdown
Contributor

Descrição

Esta PR refatora o sistema de Roast para suportar streaming em tempo real via Server-Sent Events (SSE) e adiciona a funcionalidade de deleção de vereditos com modal de confirmação.


O que foi alterado

Backend

  • Streaming SSE: generateRoast foi substituído por generateRoastStream, um gerador assíncrono que transmite os chunks de texto do Gemini conforme são gerados, em vez de aguardar a resposta completa
  • Endpoint de streaming: O controller postRoast agora responde com Content-Type: text/event-stream e escreve os chunks no formato data: {...}\n\n, sinalizando o fim com data: [DONE]
  • Endpoint de deleção: Adicionado DELETE /api/roast/:memberId com suporte ao parâmetro persona (brutal/mild) para deletar um veredito específico via FieldValue.delete() no Firestore
  • Firebase Admin: Correção pontual na inicialização do cliente

Frontend — Serviços e Hooks

  • roast.service.ts: requestRoast agora consome a resposta SSE linha a linha, invocando o callback onChunk a cada fragmento recebido; adicionada função deleteRoast
  • useRoastProfile: Adicionados estado streamingText para acumulação dos chunks em tempo real, mutation deleteRoastMutation e função executeDeleteRoast
  • useFirestoreSubscription: Corrigido bug de re-subscribe infinito causado por nova referência de array ([]) a cada render — substituído por constante de módulo EMPTY_CONSTRAINTS

Frontend — Interface

  • RoastModal: Exibe o texto streamado progressivamente com cursor piscante (animação Framer Motion) durante a geração; botão de lixeira aparece quando há veredito gerado
  • DeleteRoastConfirmModal: Novo modal de confirmação antes de apagar um veredito, com aviso de ação irreversível e indicador de estado de carregamento
  • DiscoverPage: Integração do modal de confirmação de deleção e repasse do streamingText ao RoastModal

Testes

Adicionados testes unitários cobrindo:

  • roast.controller.ts — endpoints POST e DELETE
  • roast.service.ts (server) — lógica de streaming e persistência
  • roast.service.ts (client) — parsing de SSE e tratamento de erros
  • useRoastProfile — geração, streaming e deleção de veredito

Motivação

O modelo gemini-2.5-flash com thinkingBudget: 0 retorna o conteúdo por streaming. A implementação anterior aguardava a resposta completa, o que gerava uma espera silenciosa de vários segundos. Com SSE, o usuário vê o texto sendo escrito em tempo real, melhorando significativamente a percepção de desempenho.

A deleção de vereditos era ausente, impedindo que usuários regenerassem o roast após uma geração insatisfatória.


Como testar

  1. Acesse a página Discover e selecione um perfil
  2. Gere um veredito (brutal ou suave) — o texto deve aparecer progressivamente com cursor piscante
  3. Clique no ícone de lixeira para apagar o veredito — confirme no modal
  4. Verifique que o veredito foi removido e que é possível gerar novamente

@vercel

vercel Bot commented Jun 19, 2026

Copy link
Copy Markdown

@dev-mauricioAB is attempting to deploy a commit to the ynotmax's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d6723bbd-86bc-4653-ae70-6e5de02acc73

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@YnotMax YnotMax merged commit be6aab4 into MatchDock:develop Jun 19, 2026
2 of 3 checks passed
YnotMax added a commit that referenced this pull request Jun 20, 2026
* fix(server): update roast controller, repository, routes and service

* fix(firebase): update firebase-admin server initialization

* fix(services): update roast client service and firestore subscription hook

* fix(hooks): update useRoastProfile and useProfilesRealtime hooks

* fix(ui): add delete confirm modal and update roast and profile card components

* test: add unit tests for roast controller, service and client hooks

* chore: update package-lock.json

* fix: update import

Co-authored-by: Maurício Alexandre Barroso <62599099+dev-mauricioAB@users.noreply.github.com>
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.

2 participants