Implementa sugestões do parecer do Conselho do Mirante - #11
Open
DRoqueProgrammer wants to merge 2 commits into
Open
Implementa sugestões do parecer do Conselho do Mirante#11DRoqueProgrammer wants to merge 2 commits into
DRoqueProgrammer wants to merge 2 commits into
Conversation
Responde ao parecer (sobre o commit 96aeda3) com as mudanças de código, dados e infraestrutura pedidas pelos conselheiros. Engenharia e observabilidade (§1) - CI: typecheck + lint + testes em cada push/PR (.github/workflows/ci.yml) e .eslintrc.json, que faltava (sem ele o `next lint` era interativo). - Health check GET /api/health com leitura barata no Supabase. - Rate limiting em memória (lib/rate-limit.ts) nas actions de escrita (candidatar, publicar, avaliar) — primeira barreira contra abuso. - Logging estruturado (lib/log.ts): uma linha JSON por evento, sem PII. - ADRs em docs/adr/: 5 decisões estruturais + 5 das mudanças deste parecer. Métricas e dados (§2) - nota_media ponderada por recência (EWMA, meia-vida 90 dias) via trigger (migration 0020). - Lembrete de avaliação 24h após a diária (migration 0021 + GET /api/cron/lembretes-avaliacao, protegido por CRON_SECRET). - Painel /admin/metricas: preenchimento, tempo até o match e cancelamento, no total e por cidade/categoria (funções puras testadas). Design e melhores práticas (§3, §5) - Contraste das estrelas: a nota passa a usar amarelo escuro (#B8860B, ~3,4:1); o #FFC107 fica só decorativo — passa AA. - Filtros de tipo de serviço, faixa de valor e data no mapa de vagas. - Valor mínimo de diária R$1 no schema (fim do fallback silencioso a R$0). - arredCoord() extraída para lib/format.ts (estava duplicada inline). Testes: 57 unitários verdes; typecheck e lint limpos. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014BA1FaD357grNvz6C9VzWW
Implementa o dark mode via `prefers-color-scheme`. Ao contrário do que o
parecer sugeriu ("só a media query"), os tokens eram hex fixos e cores de
tinta (text-brand, text-danger) sumiriam no escuro — então o tema virou
CSS variables com papéis de cor separados:
- TINTA sobre superfície (marca, erro, sucesso, estrela, tints de status)
VIRA no escuro para manter contraste; PREENCHIMENTO com texto branco
(botão da marca, badge, verde) fica FIXO nos dois temas.
- Só o lado menor (preenchimentos) foi renomeado (bg-brand-fill,
danger-fill); os ~100 usos de tinta seguem apontando para a variável que
vira, sem tocar no call site.
- Pastéis de status viram 5 tokens de tint (info/ok/warn/neutral/danger).
- Marcas de dado (barras de gráfico, ponto de não-lida) usam a tinta que
vira, não o preenchimento fixo, para não sumirem no escuro.
Claro fica idêntico ao anterior (mesmos hex no ramo claro). Contraste
conferido nos dois temas. Decisão em docs/adr/0011.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014BA1FaD357grNvz6C9VzWW
|
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.
Responde ao parecer do Conselho do Mirante (sobre o commit
96aeda3) implementando as sugestões de código dos conselheiros.Engenharia e observabilidade (§1)
.github/workflows/ci.yml): typecheck + lint + testes em cada push/PR. Inclui o.eslintrc.jsonque faltava (sem ele onext lintera interativo e travaria o CI).GET /api/health: liveness + readiness com leitura barata no Supabase (503 se o banco não responde).lib/rate-limit.ts) nas server actions de escrita (candidatar / publicar / avaliar).lib/log.ts): uma linha JSON por evento crítico, sem PII.docs/adr/): 11 decisões registradas (5 estruturais + 6 deste parecer).Métricas e dados (§2)
nota_media(migration0020, meia-vida 90 dias) — a recência pesa mais que a inércia, de forma determinística.0021+GET /api/cron/lembretes-avaliacao, protegido porCRON_SECRET, agendado emvercel.json)./admin/metricas: taxa de preenchimento, tempo até o match e cancelamento, no total e por cidade/categoria (funções puras, com teste unitário).Design e melhores práticas (§3, §5)
#FFC107fica só decorativo).arredCoord()extraída paralib/format.ts(estava duplicada inline).Banco de dados
Migrations
0020e0021já aplicadas ao projeto Supabase e verificadas: colunavagas.finalizada_em, trigger, funções, EWMA ativa e a função do cron restrita aservice_role. As notas existentes foram recalculadas para a base EWMA.Fora de escopo
As sugestões do conselheiro de Administração (§4) são de estratégia e monetização, não de código — ficam como decisão de produto.
Pendência de ambiente (não de código)
Definir
CRON_SECRETno ambiente de deploy para o cron do lembrete disparar (sem ele o endpoint recusa — falha segura).Verificação
npm run typecheck✓ ·npm run lint(exit 0) ✓ ·npm test→ 57 testes passando.🤖 Generated with Claude Code
Generated by Claude Code