Fix: synchronize Dashboard frequency calculation with Frequency page
This commit is contained in:
parent
f1f1c0e84a
commit
4c72a9e20d
|
|
@ -81,7 +81,9 @@ export default function Dashboard() {
|
|||
|
||||
deduplicatedLessons.forEach(lesson => {
|
||||
if (lesson.status === 'cancelled') return;
|
||||
validLessonsCount++;
|
||||
|
||||
// Mesma lógica de status da página de Frequência
|
||||
const { isCompleted } = getLessonTimeStatus(lesson, now);
|
||||
|
||||
// Construir janela de tempo EXATAMENTE como o Manager faz
|
||||
const lessonStart = new Date(lesson.date + 'T' + (lesson.startTime || '00:00') + ':00');
|
||||
|
|
@ -96,11 +98,15 @@ export default function Dashboard() {
|
|||
return recordTime >= presenceStartWindow && recordTime <= lessonEnd;
|
||||
});
|
||||
|
||||
const isPresent = att && (att.type === 'presence' || (!att.type && !(att as any).isVirtual) || att.verified === true);
|
||||
// Só entra no cálculo se estiver concluída OU tiver um registro (biometria/falta/justificativa)
|
||||
if (att || isCompleted) {
|
||||
validLessonsCount++;
|
||||
// Mesma lógica de presença da página de Frequência (exclui type: 'absence')
|
||||
const isPresent = att && (att.type === 'presence' || (att.verified === true && att.type !== 'absence'));
|
||||
if (isPresent) presencesCount++;
|
||||
}
|
||||
});
|
||||
}
|
||||
const totalAttendance = data?.attendance?.length || 0;
|
||||
const frequencyPercent = validLessonsCount > 0 ? Math.round((presencesCount / validLessonsCount) * 100) : 0;
|
||||
|
||||
const nextDue = pendingPayments
|
||||
|
|
|
|||
Loading…
Reference in New Issue