feat(schedule): automatically remove auto-generated absences when rescheduling past lessons
This commit is contained in:
parent
bd972deda3
commit
2f2dec63d5
|
|
@ -50,6 +50,7 @@
|
||||||
- [x] **Parser Global de NUMERIC (Postgres):** Configurado o driver `pg` nos servidores do Manager e do Portal para converter automaticamente `NUMERIC`/`DECIMAL` (OID 1700) para `Number`, cumprindo as regras 19 e 32 do `GEMINI.md`.
|
- [x] **Parser Global de NUMERIC (Postgres):** Configurado o driver `pg` nos servidores do Manager e do Portal para converter automaticamente `NUMERIC`/`DECIMAL` (OID 1700) para `Number`, cumprindo as regras 19 e 32 do `GEMINI.md`.
|
||||||
- [x] **Resolução de Condição de Corrida:** Implementado `await` no update duplo de cobranças do SQL na edição de cobranças do Manager (`Finance.tsx`), assegurando consistência na re-busca de dados.
|
- [x] **Resolução de Condição de Corrida:** Implementado `await` no update duplo de cobranças do SQL na edição de cobranças do Manager (`Finance.tsx`), assegurando consistência na re-busca de dados.
|
||||||
- [x] **Ordem de Exclusão e Notificação (Regra 34):** Removida a exclusão local imediata no endpoint `/api/excluir_cobranca`. A remoção local é delegada ao webhook do Asaas, permitindo que a mensagem de WhatsApp acesse os dados necessários antes da deleção.
|
- [x] **Ordem de Exclusão e Notificação (Regra 34):** Removida a exclusão local imediata no endpoint `/api/excluir_cobranca`. A remoção local é delegada ao webhook do Asaas, permitindo que a mensagem de WhatsApp acesse os dados necessários antes da deleção.
|
||||||
|
- [x] **Limpeza de Faltas no Reagendamento:** Ajustada a função `handleRescheduleLesson` no `LessonSchedule.tsx` para filtrar e deletar automaticamente do banco de dados/estado todas as faltas geradas de forma automática para uma aula que estava no passado e foi reagendada para o futuro.
|
||||||
- [x] **Validação de Build e Git Push:** Confirmada compilação bem-sucedida do frontend/backend e efetuado o push para a branch remota `main` sob autorização do usuário.
|
- [x] **Validação de Build e Git Push:** Confirmada compilação bem-sucedida do frontend/backend e efetuado o push para a branch remota `main` sob autorização do usuário.
|
||||||
|
|
||||||
## 📋 Próximos Passos
|
## 📋 Próximos Passos
|
||||||
|
|
|
||||||
|
|
@ -321,6 +321,11 @@ const LessonSchedule: React.FC<LessonScheduleProps> = ({ classObj, data, updateD
|
||||||
l.id === lesson.id ? { ...l, date: replacementDate, startTime: replacementStartTime, endTime: replacementEndTime, status: 'rescheduled', type: l.type, cancelReason: undefined } : l
|
l.id === lesson.id ? { ...l, date: replacementDate, startTime: replacementStartTime, endTime: replacementEndTime, status: 'rescheduled', type: l.type, cancelReason: undefined } : l
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Remove qualquer registro de falta (absence) gerado automaticamente para esta aula (Regra 21)
|
||||||
|
const updatedAttendance = (data.attendance || []).filter(
|
||||||
|
a => !(a.lessonId === lesson.id && a.type === 'absence')
|
||||||
|
);
|
||||||
|
|
||||||
const oldDateStr = new Date(lesson.date + 'T12:00:00Z').toLocaleDateString('pt-BR');
|
const oldDateStr = new Date(lesson.date + 'T12:00:00Z').toLocaleDateString('pt-BR');
|
||||||
const newDateStr = new Date(replacementDate + 'T12:00:00Z').toLocaleDateString('pt-BR');
|
const newDateStr = new Date(replacementDate + 'T12:00:00Z').toLocaleDateString('pt-BR');
|
||||||
|
|
||||||
|
|
@ -330,8 +335,8 @@ const LessonSchedule: React.FC<LessonScheduleProps> = ({ classObj, data, updateD
|
||||||
const newNotifs = notifyLessonAction('Aula Reagendada', notifMsg, waMsg);
|
const newNotifs = notifyLessonAction('Aula Reagendada', notifMsg, waMsg);
|
||||||
const updatedNotifications = [...(data.notifications || []), ...newNotifs];
|
const updatedNotifications = [...(data.notifications || []), ...newNotifs];
|
||||||
|
|
||||||
updateData({ lessons: updatedLessons, notifications: updatedNotifications });
|
updateData({ lessons: updatedLessons, notifications: updatedNotifications, attendance: updatedAttendance });
|
||||||
await dbService.saveData({ ...data, lessons: updatedLessons, notifications: updatedNotifications });
|
await dbService.saveData({ ...data, lessons: updatedLessons, notifications: updatedNotifications, attendance: updatedAttendance });
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setShowLessonDetail(null);
|
setShowLessonDetail(null);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue