Доход, которого не было
Кабинет преподавателя показывал доход на 42 % больше реального.
Симптом
Карточки «Доход за месяц» в кабинете преподавателя не сходились с графиками, а детальная разбивка месяца не открывалась вовсе.
Как искал
Аудит на живой базе только запросами на чтение, без единого изменения в проде. Сверил карточки и графики по каждому преподавателю за полный месяц и разобрал расхождения до отдельных уроков.
Причина
- Доход суммировался по всем урокам с тарифом, включая отменённые и ещё не проведённые. За один месяц: 78 450 ₽ вместо 55 250 ₽.
- Детальная статистика падала с ошибкой 500 на любом запросе: запрос обращался к полю, которого у модели нет.
- Латентный риск: пустое значение дохода в тарифе уронило бы все графики разом.
- Часть расхождений была не в коде, а в данных: проекты с чужим тарифом, неверной длительностью, без тарифа вообще.
Решение
Доход считается только по проведённым и пропущенным урокам, запрос статистики исправлен, границы месяца учитывают часовой пояс, добавлена защита от пустых значений. Ошибки данных не прикрыты кодом, а выгружены списком на ручную правку.
Проверка
Тест на каждое исправление. На копии прода разница между старой и новой логикой в точности равна числу отменённых уроков с тарифом.