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
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.
Qual é a dívida?
computeCfdemlib/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.tsxchama isso a cada request SSR, semrevalidate, 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-clickbusna 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
computeCfdcontra um board de referência maior (1000+ itens, 1+ ano de histórico) antes de decidir a abordagemrevalidatebaseado nolast_synced_atdo board (o dado só muda uma vez por dia via cron, não a cada request)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.