← Verbal Voyager · разборы

Доход, которого не было

Кабинет преподавателя показывал доход на 42 % больше реального.

Симптом

Карточки «Доход за месяц» в кабинете преподавателя не сходились с графиками, а детальная разбивка месяца не открывалась вовсе.

Как искал

Аудит на живой базе только запросами на чтение, без единого изменения в проде. Сверил карточки и графики по каждому преподавателю за полный месяц и разобрал расхождения до отдельных уроков.

Причина

  • Доход суммировался по всем урокам с тарифом, включая отменённые и ещё не проведённые. За один месяц: 78 450 ₽ вместо 55 250 ₽.
  • Детальная статистика падала с ошибкой 500 на любом запросе: запрос обращался к полю, которого у модели нет.
  • Латентный риск: пустое значение дохода в тарифе уронило бы все графики разом.
  • Часть расхождений была не в коде, а в данных: проекты с чужим тарифом, неверной длительностью, без тарифа вообще.

Решение

Доход считается только по проведённым и пропущенным урокам, запрос статистики исправлен, границы месяца учитывают часовой пояс, добавлена защита от пустых значений. Ошибки данных не прикрыты кодом, а выгружены списком на ручную правку.

Проверка

Тест на каждое исправление. На копии прода разница между старой и новой логикой в точности равна числу отменённых уроков с тарифом.

Следующий разборВремя, которое держалось на совпадении