Skip to content

[DEBT] computeCfd recalculado a cada request SSR em /flow, sem cache #255

Description

@clickmatos

Qual é a dívida?

computeCfd em lib/queries/board-flow.ts:543 é O(semanas × itens × visitas) — para cada ponto semanal do CFD, itera todos os itens do board e resolve o status de cada um naquele instante. src/app/[tenant]/flow/page.tsx chama isso a cada request SSR, sem revalidate, ISR, ou qualquer outro cache.

Por que é dívida?

Em um board com histórico longo (muitas semanas) e muitos itens, o custo cresce nas duas dimensões e é recalculado do zero em toda visita à página — inclusive em navegações repetidas do mesmo usuário sem nenhum dado novo (o sync só roda uma vez por dia via cron).

Achado por gabriel-gomes-clickbus na revisão do PR #170.

Como chegou aqui?

A prioridade da PR foi a corretude do coletor e dos portões de qualidade contra um board real; performance de leitura ficou para depois — razoável para uma primeira versão validada contra um board de ~200 itens, mas não teve orçamento de tempo dedicado ainda.

Plano de migração

  • Medir o tempo real de computeCfd contra um board de referência maior (1000+ itens, 1+ ano de histórico) antes de decidir a abordagem
  • Considerar revalidate baseado no last_synced_at do board (o dado só muda uma vez por dia via cron, não a cada request)
  • Considerar mover o cálculo do CFD para o momento do sync (persistido), em vez de recalculado a cada leitura
  • Confirmar que a estratégia de cache não esconde uma reconexão/reconfiguração de board (cache stale após reconectar)

Deadline / gatilho pra pagar

Antes de qualquer board com histórico de vários meses ou milhares de itens entrar em produção — nesse ponto o custo por request deixa de ser desprezível.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: tech-debtCódigo sub-ótimo conhecido, workaround, ou cleanup pendente

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions