← усі кейси
Інтернет-магазин з відділом продажів E-commerce / Управлінська звітність ·

Звітність, якої ніхто не робить руками: власнику о 7:00, менеджерам об 11:00

Два повідомлення на день замінили ручні вивантаження й наради: власник бачить учорашні продажі по кожному менеджеру, менеджери - готовий список, кому дзвонити сьогодні.

  • Щоденний зріз по кожному менеджеру о 7:00 без жодної ручної дії
  • Один ранковий дайджест замінює три окремі списки задач для відділу
  • Аналіз покриття робочого дня виявив, що майже третина вхідних дзвінків лишалась без відповіді
  • Повторний запуск того самого дня не дублює звіт, а збій джерела даних видно одразу
Python 3.12FastAPIAPSchedulerhttpxDocker Compose

Власник дізнається про вчорашній день трьома способами. З вивантаження, яке хтось має зробити. На нараді, де числа вже переказані своїми словами. Або ніколи.

Менеджер тим часом починає день із питання «за кого сьогодні братися» і відповідає на нього по памʼяті. Памʼять у всіх різна, і замовлення, про яке ніхто не згадав, просто не існує.

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

07:00
зріз учорашнього дня без ручних дій
3 в 1
списки для відділу в одному повідомленні
31%
вхідних дзвінків лишались без відповіді - це показав аналіз покриття

Проблема: одна звітність на дві різні голови

Найпоширеніша помилка тут - зробити один хороший звіт для всіх. Він виходить повним, докладним і нікому не потрібним, бо власник і менеджер шукають у ньому різні речі.

Власнику потрібен зріз і порівняння: хто скільки зробив і як це виглядає на тлі команди. Менеджеру потрібен список дій на сьогодні. Це два різні жанри, і склеєні разом вони перестають працювати обидва.

Дві аудиторії, які не можна обслужити одним документом

👔 Власник

  • Питання: що вчора сталося з бізнесом
  • Потрібен зріз по людях і підсумок по команді
  • Читає один раз, зранку, і хоче бачити відхилення, а не всі дані
  • Список дій йому непотрібен - діяти буде не він

✅ Менеджер

  • Питання: за що братися просто зараз
  • Потрібен перелік конкретних замовлень і клієнтів
  • Читає на початку робочого дня, а не о сьомій ранку
  • Загальні числа по відділу тут тільки заважають

Звіт, у якому є все, не читає ніхто. Причому помирає він не одразу, а на другому тижні, коли новизна закінчилась, а користі так і не знайшлося.

Як автоматизація це вирішує

Два незалежні розклади, два різні повідомлення, жодної ручної дії. Перше формується вночі за вчорашній день і йде власнику о сьомій. Друге збирається зранку за поточним станом замовлень і йде відділу об одинадцятій.

Два повідомлення на день
Дані CRM за вчора надмножина і фільтр у себе зріз по менеджерах власнику о 7:00
Стан замовлень зараз три сценарії, що потребують дії відділу об 11:00

Що всередині ранкового зрізу

По кожному менеджеру за вчора: кількість виконаних продажів, обсяг, скільки з них із допродажем і яка частка допродажу в його роботі. Внизу - підсумок по команді, щоб було з чим порівнювати.

Виконаним вважається строго закрите замовлення, без проміжних станів. День визначається за моментом закриття, а не за датою створення - інакше в учорашній день потрапляють замовлення, оформлені тиждень тому.

Дайджест як план дня

Об одинадцятій відділ отримує одне повідомлення з трьома списками: не оплатили після нагадування, не забрали посилку, не відповіли на повідомлення. Це не звіт, а готовий перелік того, з чим треба щось зробити сьогодні.

Раніше кожен із цих трьох списків або збирався руками, або не збирався взагалі. Найчастіше другий варіант: зібрати такий список коштує часу, а те, що він мав би врятувати, ніде не видно як втрата.

Три списки живуть в одному повідомленні свідомо. Три окремі розсилки перетворюються на фон, який гортають не читаючи, а одне повідомлення о фіксованій годині стає частиною ранкового ритуалу.

Що це дало бізнесу

Власник має щоденну картину без жодної ручної дії з чийогось боку. Ніхто не готує вивантаження, ніхто не переказує числа на нараді, і питання «а скільки вчора зробив кожен» більше не потребує окремої людини.

Відділ починає день з готового переліку замість спроб пригадати. Найважливіше тут не швидкість, а повнота: у список потрапляє те, про що ніхто б не згадав.

Побічний результат: карта навантаження за два місяці
Вхідні дзвінки, на які хтось відповів69%
Лишились без відповіді31%

Погодинний розріз показав, що діри в покритті системні: раннє ранок, пізній вечір і вихідний день.

Цю цифру ніхто не шукав спеціально - вона випала з даних, які система й так збирає щодня. І тут проходить чесна межа: сама автоматизація не може її виправити. Змінити графік роботи відділу - керівниче рішення, і воно лишається за людиною. Автоматизація зробила тільки те, що вміє: показала масштаб проблеми, про яку доти не було цифри.

Як це влаштовано всередині

Далі - інженерна частина

Наступний розділ пояснює, як система влаштована. Якщо вас цікавить лише результат, його можна пропустити - нижче є розділ про те, кому це підходить.

Найцікавіше в цьому кейсі - не розклад і не формат повідомлення, а те, чому наївна реалізація дала б неправильні числа.

Технічна дрібниця, що вирішує все

Звіт має рахувати замовлення за днем закриття. В API джерела фільтра за датою закриття немає взагалі - є фільтр за іншим полем.

Наївний запит дав би один із двох поганих результатів: або неповні дані, або вивантаження половини бази щоночі. Рішення - взяти свідомо ширшу вибірку за доступним полем і відсікти зайве вже в себе.

Це типова ситуація в роботі з чужими системами: потрібного фільтра немає і не буде. Завдання не в тому, щоб здатися, а в тому, щоб знайти надмножину, яку можна звузити самому, і переконатися, що вона справді накриває всі потрібні записи.

Два запобіжники, без яких щоденний звіт не можна вмикати
Без дублівПовторний запуск того самого дня нічого не дублює: позначка вже надісланої дати переживає перезапуск сервісу. Інакше після будь-якого рестарту власник отримує другий однаковий звіт і перестає їм довіряти
Видимий збійЯкщо джерело даних недоступне, у той самий чат іде повідомлення про це. Звіт, який мовчки не прийшов, гірший за звіт з помилкою: тиша читається як «учора нічого не сталося»

Кому це підходить

Будь-якому відділу продажів, де працює більш ніж два менеджери, і будь-якому власнику, який зараз дізнається про вчорашній день із чужого переказу.

Ознака, за якою легко перевірити, чи це про вас: якщо у вас є людина, чия ранкова робота - зробити вивантаження і когось про нього запитати, - так, це про вас.

Звіт має закінчуватись не цифрою, а дією. Інакше його перестають відкривати на другому тижні.

Потрібне схоже рішення?

Опишіть задачу - підберу архітектуру під ваш бюджет і дані.