diff --git a/src/components/dashboard-producao/GraficoMestre.tsx b/src/components/dashboard-producao/GraficoMestre.tsx index 487b7c2..750725a 100644 --- a/src/components/dashboard-producao/GraficoMestre.tsx +++ b/src/components/dashboard-producao/GraficoMestre.tsx @@ -177,6 +177,7 @@ export const GraficoMestre: React.FC = ({ }); const datasOrdenadas = Array.from(todasAsDatas).sort(); + const ultimosValoresKg: Record = {}; return datasOrdenadas.map(data => { const dataFormatada = format(parseISO(data), 'dd/MM', { locale: ptBR }); @@ -187,7 +188,15 @@ export const GraficoMestre: React.FC = ({ processosOrdenados.forEach(processo => { const pontoProcesso = processo.dadosGrafico.find(p => p.data === data); - const valorKg = pontoProcesso ? pontoProcesso.realizado : 0; + + let valorKg: number; + if (pontoProcesso && pontoProcesso.realizado > 0) { + valorKg = pontoProcesso.realizado; + ultimosValoresKg[processo.nome] = valorKg; + } else { + // Se não houver novo ponto ou for 0, mantém o acumulado anterior para a linha NUNCA cair + valorKg = ultimosValoresKg[processo.nome] || 0; + } if (modoExibicao === 'percent') { const pesoTotal = processo.pesoTotal > 0 ? processo.pesoTotal : 1; diff --git a/src/hooks/useDashboardProducaoOtimizado.tsx b/src/hooks/useDashboardProducaoOtimizado.tsx index e5d3f3c..2a3553d 100644 --- a/src/hooks/useDashboardProducaoOtimizado.tsx +++ b/src/hooks/useDashboardProducaoOtimizado.tsx @@ -429,9 +429,13 @@ export const useDashboardProducaoOtimizado = (ofNumber: string) => { } // Antes do início planejado, o planejado fica 0 - // Calcular progresso real até esta data - soma dos pesos apontados - const apontamentosAteData = apontamentosProcesso.filter(a => a.data_apontamento <= dataStr); - let realizado = 0; + // Calcular progresso real até esta data - soma dos pesos apontados + const apontamentosAteData = apontamentosProcesso.filter(a => { + if (!a.data_apontamento) return false; + const dataAptStr = typeof a.data_apontamento === 'string' ? a.data_apontamento.substring(0, 10) : ''; + return dataAptStr <= dataStr; + }); + let realizado = 0; apontamentosAteData.forEach(a => { let pesoUnitario = 0;