Skip to content

fix(quotes): autosave resiliente a versão histórica corrompida#503

Merged
adm01-debug merged 1 commit into
mainfrom
claude/audit-hooks-correctness
May 29, 2026
Merged

fix(quotes): autosave resiliente a versão histórica corrompida#503
adm01-debug merged 1 commit into
mainfrom
claude/audit-hooks-correctness

Conversation

@adm01-debug
Copy link
Copy Markdown
Owner

@adm01-debug adm01-debug commented May 29, 2026

Contexto

Primeiro lote de uma auditoria técnica por camadas. Foco deste PR: resiliência de estado client-side no fluxo crítico de cotações.

Problema (real, confirmado por leitura)

src/components/quotes/QuoteAutoSave.tsx — ao salvar, o autosave varre todas as versões históricas do localStorage e fazia JSON.parse de cada uma sem guarda, dentro do try/catch principal do save.

  • Causa: uma única versão histórica corrompida (storage truncado por quota, adulteração manual, ou drift de schema entre deploys) lança exceção no JSON.parse.
  • Impacto: a exceção sobe ao catch do save → status 'error' e o autosave para de persistir a cotação silenciosamente, mesmo a versão nova sendo válida. Risco de perda de dados num fluxo crítico.

Correção

Parse defensivo por entrada: versões inválidas são ignoradas e a chave corrompida é removida do localStorage, sem afetar o save da versão nova. Mudança mínima, sem alterar comportamento do caminho feliz nem UX.

Verificação

  • npm run typecheck — sem regressão
  • npm run lint:baseline — 90 erros vs baseline 107 (sem regressão)

Nota sobre a auditoria

A varredura ampla confirmou que a base está saudável e bem governada (gates de TS/ESLint verdes, 597 arquivos de teste, checkers de segurança/RLS/Radix, realtime com cleanup balanceado, auth sólida). Não há um acúmulo de bugs críticos; os próximos lotes seguirão por camada, corrigindo apenas problemas reais e confirmados.

https://claude.ai/code/session_01B2ghtor8Q4zfS5yQWCNDYW


Generated by Claude Code


Summary by cubic

Autosave de cotações agora é resiliente a versões históricas corrompidas no localStorage. Fazemos parse defensivo por entrada e removemos chaves inválidas, evitando que uma versão ruim aborte o save ou interrompa o autosave.

Written for commit 3750a0f. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

Notas de Lançamento

  • Bug Fixes
    • Melhorada a robustez do salvamento automático para lidar com dados corrompidos ou inválidos, evitando interrupções no fluxo de salvamento.

Review Change Stack

O autosave de cotações lia todas as versões históricas do localStorage e
fazia JSON.parse de cada uma SEM guarda, dentro do try/catch principal do
save. Uma única versão corrompida (storage truncado por quota, adulteração
ou drift de schema) lançava exceção e abortava o save inteiro → status
'error' e a cotação parava de persistir silenciosamente, com risco de perda
de dados num fluxo crítico.

Fix: parse defensivo por entrada — versões inválidas são ignoradas e a chave
corrompida é removida do localStorage, sem afetar o save da versão nova.

Gates: typecheck ✅ · lint:baseline ✅ (90 err vs baseline 107).

https://claude.ai/code/session_01B2ghtor8Q4zfS5yQWCNDYW
@vercel
Copy link
Copy Markdown

vercel Bot commented May 29, 2026

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

Project Deployment Actions Updated (UTC)
we-dream-big Ready Ready Preview, Comment May 29, 2026 11:18am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 29, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 07e7bb43-ad88-4848-a5a3-3c2fb14aea83

📥 Commits

Reviewing files that changed from the base of the PR and between 2b90970 and 3750a0f.

📒 Files selected for processing (1)
  • src/components/quotes/QuoteAutoSave.tsx

Walkthrough

O componente QuoteAutoSave.tsx agora carrega versões históricas do localStorage de forma defensiva: ao fazer parsing JSON de chaves de versão, captura erros e remove entradas corrompidas em vez de interromper o auto-save.

Changes

Resiliência de auto-save contra dados corrompidos

Layer / File(s) Resumo
Tratamento de JSON corrompido no localStorage
src/components/quotes/QuoteAutoSave.tsx
Ao carregar existingDrafts do localStorage, cada chave de versão histórica (*_v*) agora sofre JSON.parse dentro de try/catch; se o JSON for inválido, a chave é removida e o carregamento continua sem falha.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • adm01-debug/promo-gifts-v4#433: Testes de useAutoSaveQuote e clearAutoSave que cobrem comportamentos relacionados ao tratamento defensivo do auto-save.
✨ 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 claude/audit-hooks-correctness

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

@supabase
Copy link
Copy Markdown

supabase Bot commented May 29, 2026

This pull request has been ignored for the connected project doufsxqlfjyuvxuezpln because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@adm01-debug adm01-debug marked this pull request as ready for review May 29, 2026 13:29
Copilot AI review requested due to automatic review settings May 29, 2026 13:29
@adm01-debug adm01-debug merged commit 17f9927 into main May 29, 2026
66 of 76 checks passed
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@adm01-debug adm01-debug deleted the claude/audit-hooks-correctness branch May 29, 2026 13:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Este PR melhora a resiliência do autosave de cotações ao lidar com versões históricas corrompidas no localStorage, evitando que um JSON.parse inválido interrompa o fluxo de salvamento.

Changes:

  • Adiciona parse defensivo por entrada ao varrer versões históricas no localStorage.
  • Remove automaticamente chaves históricas inválidas/corrompidas para não abortar o autosave.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 121 to 131
const existingDrafts: QuoteDraft[] = [];
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
if (key?.startsWith(storageKey + '_v')) {
const draft = JSON.parse(localStorage.getItem(key) || '');
existingDrafts.push(draft);
try {
existingDrafts.push(JSON.parse(localStorage.getItem(key) || '') as QuoteDraft);
} catch {
localStorage.removeItem(key);
}
}
}
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.

3 participants