Skip to content

fix(verified-reviews): read an empty ratings answer as "no ratings" - #17

Merged
marcoferreiradev merged 1 commit into
main-altfrom
fix/verified-reviews-empty-ratings
Sep 29, 2026
Merged

marcoferreiradev merged 1 commit into
main-altfrom
fix/verified-reviews-empty-ratings

Conversation

@marcoferreiradev

Copy link
Copy Markdown
Collaborator

Some o maior grupo de erro de produção (Error on call ratings of Verified Review - SyntaxError: Unexpected end of JSON input, ~1.400 linhas a cada 6h), que não indicava falha nenhuma.

Causa

A API do Verified Reviews tem duas formas de dizer "sem nota" na query: "average":

pedido resposta
1 produto sem avaliação (["3951"]) {}
vários produtos, nenhum com avaliação (["3951","3950","4024"]) 200 com corpo vazio
vários produtos, pelo menos um com avaliação JSON com as notas

A PDP da Oficina pede a nota do produto junto com todas as cores (aggregateSimilarProducts: true). Todo produto cujo grupo de cores ainda não tem avaliação — todo lançamento — caía no corpo vazio, e fetchAPI estourava no response.json(). Os traces amostrados em produção eram exatamente tênis novos (0103086905, 0103080713).

Correção

rating e ratings leem o corpo como texto e tratam vazio como "sem notas", igual ao {}. JSON inválido ou erro HTTP continuam falhando e logando como antes. Contrato dos apps intacto (resultado tratado, sem throw).

Verificado contra a API real

main-alt (controle)  grupo sem nota → 2x "Unexpected end of JSON input" (o erro de produção)
esta branch          grupo sem nota → nenhum log; aggregateRating undefined
                     1 produto sem nota, com nota, grupo misto → saídas idênticas ao controle

Depois do merge: re-pinar deco-sites/oficina-reserva no SHA do main-alt.

🤖 Generated with Claude Code

The ratings query answers `{}` for a single unrated product, but an empty
200 when none of several products has a rating. The PDP always asks for a
product together with its colors, so every product whose whole color group
is still unrated (every launch) logged "Unexpected end of JSON input" as an
error: ~1,400 lines per 6h, the largest group in production, with nothing
wrong for the shopper. Read the body as text and treat empty as no ratings;
a malformed body or an HTTP error still fails and logs as before.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JkCbBdPTvcEiJmvG3U7MfL
@marcoferreiradev
marcoferreiradev merged commit 6544680 into main-alt Sep 29, 2026
4 checks passed
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