fix: corrige lint, segurança e erros silenciosos das trilhas#78
Draft
caimanoliveira wants to merge 1 commit into
Draft
fix: corrige lint, segurança e erros silenciosos das trilhas#78caimanoliveira wants to merge 1 commit into
caimanoliveira wants to merge 1 commit into
Conversation
- Substitui `next lint` (removido no v16) por `eslint .` com config flat; adiciona eslint + eslint-config-next como devDependencies e cria eslint.config.mjs com core-web-vitals + typescript - exportar-star/route.ts: adiciona filtro explícito por mentorado_id antes de consultar mentorado_trilhas (defesa em profundidade, independe de RLS); substitui cast `buf as unknown as BodyInit` por `new Uint8Array(buf)` - actions.ts: propaga erros de upsert em saveResposta e completeEtapa em vez de ignorá-los silenciosamente - content.ts: getTrilha lança erro explícito para slug inválido em vez de retornar undefined causando TypeError em runtime - BancoPerguntasWidget: migra auto-save para useEffect com debounce de 800ms (mesmo padrão dos outros widgets), eliminando rafaga de chamadas ao servidor a cada clique Co-Authored-By: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Resumo
Auditoria dos commits recentes (P3 — módulo de trilhas). Build e TypeScript passam limpos. Sem commits nas últimas 24h. Foram identificados e corrigidos 5 problemas, sendo 2 de severidade alta.
Mudanças
Segurança
exportar-star/route.ts: A rota consultavamentorado_trilhasfiltrando apenas portrilha_slug, sem verificar explicitamente que o registro pertence ao usuário autenticado — confiando 100% no RLS. Adicionado lookup explícito dementorado_idviauser.idantes da query principal (defesa em profundidade, espelha o padrão deexportar-pdf).exportar-star/route.ts: Substituído cast insegurobuf as unknown as BodyInitpornew Uint8Array(buf)(mesmo padrão deexportar-pdf).Erros silenciosos (alta severidade)
actions.ts(saveRespostaecompleteEtapa): Os dois upserts ignoravam o erro retornado pelo Supabase — falhas de banco passavam despercebidas e o cliente recebia sucesso falso. Agoraif (upsertError) throw new Error(...), consistente comsubmitPlanoAcao.content.ts(getTrilha): Retornavaundefinedpara slugs inválidos sem avisar, causandoTypeError: Cannot read properties of undefinedem runtime. Agora lançaError('trilha_not_found: <slug>')explicitamente.Linting (infra)
next lintremovido no Next.js 16: O script"lint": "next lint"falhava comnext: command not found. Instaladoseslinteeslint-config-nextcomo devDependencies; criadoeslint.config.mjscom flat config (core-web-vitals+typescript); script atualizado para"lint": "eslint .".Qualidade
BancoPerguntasWidget.tsx: O auto-save disparava uma server action a cada clique sem debounce, diferente dos outros widgets (ChecklistWidget: 800ms, StarBuilderWidget: 1500ms). Migrado parauseEffectcom debounce de 800ms para evitar rafaga de chamadas ao servidor.Outros riscos identificados (não corrigidos neste PR)
Os itens abaixo foram identificados na auditoria mas não alterados por envolverem decisões de design ou mudanças mais amplas:
queries.tsdescartamerrorsilenciosamenteexportar-pdf: uso de service role key após check manual (correto, mas frágil se a auth logic for refatorada)etapa.config as unknown as Configsem validação de schema em runtime/trilhas/[slug]/page.tsxnext.config.tsGenerated by Claude Code