Напиши один Python-файл, который каждое утро отправляет отчёт по вчерашней выручке в Telegram.
Данные: [ИСТОЧНИК: CSV-выгрузка кассовой программы кофейни, разделитель «;», кодировка windows-1251, колонки: дата_время, номер_чека, позиция, количество, сумма]. Получатель: [ТЕЛЕГРАМ: канал отдела, chat_id и токен бота берутся из переменных окружения]. Посчитать: выручку за вчера, число чеков, средний чек, самые ходовые позиции по сумме — не больше трёх — и сравнение с тем же днём неделю назад. Сообщение — Markdown, не длиннее пятнадцати строк, суммы с разделителем разрядов и знаком рубля. Приложи строку crontab на 09:00 и requirements.txt.
Отсечка. Модель напишет счастливый путь: файл на месте, вчера были продажи, Telegram ответил 200. Пропиши ветки: файла нет или он пустой; за вчера ни одной строки; API Telegram вернул не 200. В каждой скажи, что уходит адресату и что попадает в файл ошибок, — отчёт не должен молча пропасть. Отдельно: когда неделю назад продаж не было, не печатай «+0%» или бесконечность, а пиши, что сравнивать не с чем.
Перед выдачей посчитай на трёх строках-примерах, что даёт твой код. Средний чек — это выручка, делённая на число уникальных номеров чека, а не на количество позиций. «Вчера» отсчитывается по зоне [ЧАСОВОЙ ПОЯС: Europe/Moscow], иначе запуск в 09:00 захватит соседний день. Проверь, что символы _, * и [ в названиях позиций не ломают разметку при отправке. Разошлось — исправь код до выдачи.