Зачем он нужен
Одна фраза: бот — это дежурный, который ничего не забывает и вовремя дёргает нужного человека.
Сейчас работа держится на памяти и переписке. Задачу поставили в чате — она уехала вверх и потерялась. Подрядчику написали три недели назад — и никто не помнит, ответил он или нет. Руководитель узнаёт о просрочке, когда уже поздно что-то делать.
Бот берёт на себя ровно эту часть: помнить и напоминать. Он не управляет людьми и не заменяет обсуждение — он следит за тем, чтобы ничего не провалилось молча.
Всё, что бот делает, сводится к трём вещам: сообщить нужному человеку, дождаться от него подтверждения и позвать руководителя, если подтверждения нет. Остальное — детали этих трёх шагов.
Три роли
У каждого человека одна роль. Она определяет, что он видит и что может нажать.
Исполнитель
- Получает задачи, назначенные лично ему
- Подтверждает получение — кнопка «Взял»
- Отмечает, что работа сдана
- Сообщает, что застрял, и пишет причину
- Отмечает получение КП от подрядчика
- Видит свои ближайшие сроки
- Сдаёт регулярные отчёты
Ведёт команду и всю повседневную работу
- Заводит и отключает сотрудников
- Назначает роли
- Создаёт проекты и тендеры
- Подключает под них таблицы и папки
- Создаёт задачи и назначает исполнителей
- Переносит сроки
- Принимает работу — «Выполнено» ставит он
- Видит задачи всей команды и кто не отреагировал
- Получает утреннюю сводку
Отвечает за саму систему
- Подключает Google-таблицы и Диск
- Меняет правила напоминаний
- Смотрит системный журнал
- Чинит, если что-то сломалось
Состав команды и новые тендеры меняются каждую неделю. Если для каждого нового сотрудника нужно идти к тому, кто занят кодом, система умирает на второй неделе — люди просто возвращаются в чат.
Поэтому всё, что происходит регулярно — люди, роли, проекты, таблицы — делает руководитель через приложение. За администратором остаётся только то, что настраивают один раз.
Роль администратора не отменяет обычную работу. Ты остаёшься рядовым исполнителем: получаешь свои задачи, жмёшь «Взял», сдаёшь отчёты. Права администратора просто добавляют доступ к настройкам — отдельного аккаунта для этого не нужно.
Исполнитель может нажать «Сдал» — это значит «я закончил, проверьте». Закрыть задачу может только тот, кто её поставил. Иначе статус «выполнено» перестаёт что-либо значить: каждый закрывает сам себя, и картина в системе расходится с реальностью.
Если команде это окажется неудобно — правило меняется одной строкой.
Как попасть внутрь
Просто найти бота и написать ему недостаточно — человека должен завести администратор. Посторонний внутрь не попадёт.
Администратор заводит карточку
Имя, фамилия, должность, роль, проект. Telegram ID знать не нужно —
достаточно юзернейма вида @anna_iv.
Человек открывает бота и жмёт «Начать»
Бот узнаёт его по юзернейму и навсегда привязывает к карточке настоящий Telegram ID — дальше опознание идёт по нему.
Бот показывает профиль и просит подтвердить
Это защита от опечатки в данных — чтобы человек не получил чужие задачи.
Вы подключены к рабочему боту команды.
Ваш профиль:
Анна Иванова
Менеджер · просчёт, креатив, персонал
Всё верно?
[ ✅ Да ] [ ❌ Это не я ]
Доступ открыт, появляется меню
Мои задачи · Сегодня · Дедлайны · Отчётность · Уведомления · Помощь. Руководителю добавляются Команда и Статус проектов.
Карточка не удаляется и доступ не открывается — она помечается как требующая внимания администратора. Данные могли просто перепутать при заведении, и потерять их было бы хуже, чем подождать.
Жизнь задачи
Семь состояний. Каждое означает что-то конкретное, и переход между ними — это чьё-то действие, а не автоматика.
Плюс два состояния в стороне: Заблокирована — застрял и написал причину, Отменена — задача больше не нужна.
| Состояние | Что оно значит на самом деле | Кто ставит |
|---|---|---|
| Новая | Задачу создали и назначили, но человек ещё не подтвердил, что увидел её. Пока задача здесь, бот считает, что реакции не было. | Постановщик |
| Принята | Сотрудник нажал «Взял». Это главный сигнал во всей системе: человек в курсе, руководителю можно перестать уточнять. | Исполнитель |
| В работе | Начал делать. Если по задаче трое суток ничего не происходит, бот напомнит. | Исполнитель |
| Заблокирована | Что-то мешает. Причину написать обязательно — она сразу видна руководителю в сводке. Это не жалоба, а самый быстрый способ разблокироваться. | Исполнитель |
| На проверке | Сотрудник нажал «Сдал». Работа закончена с его стороны, ждёт приёмки. | Исполнитель |
| Выполнена | Постановщик принял работу. Только с этого момента задача перестаёт считаться и напоминания по ней прекращаются. | Постановщик |
| Отменена | Задача отпала. История сохраняется — видно, что она была и почему закрылась. | Постановщик |
Что видно в истории задачи
По каждой задаче хранится лента: кто создал, кто принял и когда, кто переносил срок и с какой даты на какую, когда уходили напоминания. Не нужно поднимать переписку, чтобы понять, почему задача висит третью неделю.
Шесть проверок
Это и есть вся автоматика. Бот постоянно смотрит на шесть вещей и вмешивается, когда что-то из них идёт не так.
Никто не отреагировал
- Через 2 часа — напоминание сотруднику
- Через 8 часов — сообщение уходит и руководителю
- Такие задачи собраны в отдельном списке «Без реакции»
Дедлайн приближается
- За сутки — спокойное напоминание
- За 3 часа — «срок сегодня»
- Только исполнителю, руководителя не дёргаем
Срок прошёл
- В момент дедлайна — сотруднику
- Через 2 часа — вместе с руководителем
- Дальше раз в сутки, максимум 5 раз
Задача застыла
- Напоминание сотруднику обновить статус
- Повторяется до трёх раз
- Ловит задачи, которые формально в работе, а фактически брошены
Статус-таблица не заполнена
- Через 30 минут после срока — напоминание
- Потом ещё дважды с интервалом в 2 часа
- Без заполненной таблицы сводка по проекту неполная
Отчёт не сдан
- За 2 часа до срока — напоминание
- Через час после — сотруднику и руководителю
- Бот сам знает, чей отчёт и за какой период
Утренняя сводка руководителю
Отдельно от всего этого в 9:00 по будням руководителю приходит одно сообщение — картина по всем его проектам:
Сводка не приходит, когда нет ни просрочек, ни задач без реакции. Ежедневное «всё хорошо» приучает не читать сообщения, и однажды вместе с ним пропустят настоящее.
Когда пишет бот
Полное расписание. Все цифры настраиваются администратором без участия программиста — это просто данные, а не код.
| Повод | Когда | Кому | Повтор |
|---|---|---|---|
| Назначили задачу | сразу | исполнителю | — |
| Нет реакции | +2 часа | исполнителю | — |
| Нет реакции | +8 часов | обоим | — |
| Скоро дедлайн | за 24 часа | исполнителю | — |
| Дедлайн сегодня | за 3 часа | исполнителю | — |
| Срок прошёл | в момент | исполнителю | — |
| Срок прошёл | +2 часа | обоим | раз в сутки, до 5 |
| Нет движения | 3 суток | исполнителю | каждые 3 суток, до 3 |
| КП не подтверждено | +24 часа | ответственному | раз в сутки, до 3 |
| Пора сдать отчёт | за 2 часа | исполнителю | — |
| Отчёт не сдан | +1 час | обоим | каждые 4 часа, до 2 |
| Сводка | 9:00 пн–пт | руководителю | ежедневно |
Молчащий бот бесполезен, но бот, которого замьютили за назойливость, вреден — вместе с шумом человек перестанет получать и важное. Поэтому до срока он напоминает мягко и только исполнителю, а руководителя подключает лишь когда сроки уже нарушены.
Тихие часы
С 22:00 до 8:00 бот копит сообщения и отдаёт их утром. Кроме тех, что ждать не могут.
Рутина
- Напоминание за сутки до срока
- «Нет движения по задаче»
- Отчётность и статус-таблица
- Утренняя сводка
Срочное
- Новая задача — человек должен знать сразу
- Срок прошёл прямо сейчас
Тишина считается по времени того, кому пишут, а не по времени сервера. Если сотрудник в другом часовом поясе, его ночь — это его ночь.
Сейчас сообщение о свежей просрочке проходит сквозь тишину. Через неделю работы станет видно, не слишком ли это шумно — и правило поменяется в настройках, без переделки бота.
Сбор КП
Вторая половина системы, и по вашей таблице — самая болезненная. 195 подрядчиков, из них 70 месяцами висят без ответа.
Запрос коммерческого предложения проходит те же стадии, что и задача, но со своими названиями — теми, которые команда уже пишет в таблице руками:
Дальше три исхода: В коротком списке · Не подходит · Отказ в сотрудничестве. И в конце — Выбран.
Что здесь делает бот
- Считает дни молчания. Сколько прошло с момента, как написали подрядчику. Список сортируется по этому числу — сверху те, кто молчит дольше всех.
- Напоминает ответственному через сутки после отправки запроса, потом ещё дважды, потом подключает руководителя.
- Ловит файлы с Диска. Когда КП кладут в папку категории, статус меняется сам, а ссылка на файл цепляется к строке подрядчика.
- Показывает срез по категориям: где собрано достаточно предложений, а где ещё пусто.
Сейчас у восьми площадок стоит «КП получено», а в колонке ВАЖНО — «НЕ ПОДХОДИТ ПО ВМЕСТИМОСТИ». Для человека разница очевидна, для подсчёта «сколько вариантов собрано» — нет: он насчитает варианты, которых на самом деле нет.
Поэтому «КП получено» и «Не подходит» разделены. Бот распознаёт это по вашим же заметкам автоматически, переписывать таблицу не нужно.
Справочник подрядчиков
Подрядчики хранятся отдельно от тендеров. Площадка, у которой запрашивали смету в этом году, участвует и в следующем — и тогда сразу видно всю историю: сколько просили, чем закончилось, кто вёл переговоры. Через три тендера у вас будет база проверенных контактов с ценами.
Google-таблица
Таблица остаётся. Никто не заставляет команду переучиваться — бот работает с той же таблицей, что и люди.
Телеграм Таблица
бот и приложение живёт как жила
│ │
│ правки людей ───────┤
▼ │
┌─────────────────┐ │
│ Система ОСТРО │ ◄───────────┘
│ помнит всё │
└────────┬────────┘
│ свои изменения пишет обратно
└──────────────────────► в ту же таблицу
- Правку в таблице бот видит за секунды. Перенесли срок в строке — напоминания пересчитались.
- Изменение из бота попадает в таблицу. Нажали «Взял» — в строке появился статус.
- Своя таблица на каждый тендер. Заводите новый проект — бот создаёт новую таблицу и папку на Диске с подпапками по категориям.
- Бот понимает, как вы пишете. «в работе», «Взял», «сделано», «Ожидаю кп» — все варианты разбираются, переучиваться не нужно.
Google-таблица не рассчитана на то, чтобы служить базой: она не умеет надёжно обрабатывать одновременные правки, ограничивает количество обращений и заставляет перечитывать весь лист при каждой проверке сроков. Бот на такой основе тормозит и однажды молча замолкает.
Поэтому данные живут в настоящей базе, а таблица синхронизируется с ней в обе стороны. Для команды снаружи ничего не меняется — меняется только надёжность.
Каких данных нет
Система построена, но пустая. Вот всё, что нужно собрать, чтобы она начала приносить пользу — по убыванию важности.
Всё остальное можно донести по ходу. Без служебного аккаунта Google бот остаётся просто списком задач: не видит 195 подрядчиков, не считает дни молчания, не подхватывает файлы КП. Это ровно та половина, ради которой всё затевалось.
Как провести тест
Цель теста — не проверить, что кнопки нажимаются. Это уже проверено. Цель — понять, приживётся ли бот в реальной работе команды.
Выбрать трёх-четырёх человек
Лучше тех, у кого больше всего задач и подрядчиков — на них польза видна быстрее всего. Обязательно один руководитель: без него не проверить сводки и приёмку работы.
Прислать их список
Имя, должность, @username, роль. Заведу вручную — экран для этого ещё делается.
Каждый открывает бота и жмёт «Начать»
Занимает полминуты. Бот покажет профиль, человек подтверждает — и сразу видит своё меню.
Руководитель ставит настоящие задачи
Не выдуманные, а те, что реально стоят на этой неделе: пять-десять штук с честными сроками. На выдуманных задачах тест ничего не покажет — их никто не будет делать всерьёз.
Неделя обычной работы
Ничего специально делать не нужно. Люди работают как обычно, бот напоминает, руководитель получает сводки.
Разобрать итоги
Я выгружу цифры, вы скажете ощущения.
Что смотреть по итогам недели
- Жмут ли «Взял». Если задачи неделю висят непринятыми — дело не в боте, а в том, что задачи ставят не так. Это ценнее любой другой находки.
- Не слишком ли часто пишет. Замьютил ли кто-нибудь бота. Если да — какое именно сообщение стало последней каплей.
- Ловит ли просрочки раньше людей. Узнал ли руководитель о срыве из сводки, а не постфактум.
- Что раздражает. Самое полезное, что можно вынести из теста — список претензий. Их дешевле исправить сейчас, чем после запуска на всю команду.
Тест задач и напоминаний работает без Google. Если доступ появится раньше — включим синхронизацию прямо во время теста и проверим заодно и её.
Полный запуск
После теста и правок — вывод на всю команду. Порядок важен: каждый следующий шаг опирается на предыдущий.
Подключить Google
Служебный аккаунт, доступ к таблице, скрипт для мгновенной реакции на правки. После этого включается синхронизация.
Перенести действующий тендер
195 подрядчиков, статусы, ответственные, суммы — всё заезжает из таблицы автоматически. Строки, которые бот не разберёт, попадут в отдельный список: их разберём руками, их будет немного.
Завести всю команду
Уже через приложение, руками руководителя. К этому моменту экран управления людьми будет готов.
Настроить отчётность
Какие отчёты, от кого, к какому времени. Настраивается в приложении, без участия программиста.
Переехать на боевой сервер
Нормальный домен вместо временного адреса, резервное копирование базы по расписанию. Данные переносятся без потерь — это одна команда.
Показать команде — полчаса
Учить почти нечему: пришла задача — нажми «Взял», закончил — «Сдал», застрял — напиши почему. Остальное человек находит сам.
Первые две недели под наблюдением
Смотрим журналы, ловим шероховатости, подкручиваем частоту напоминаний под живую команду.
Запускать на всю команду сразу, минуя тест. Бот, который в первую неделю написал лишнего, получает мьют — и обратно доверие возвращается тяжело. Лучше поймать это на трёх людях.
Какой нужен сервер
Расчёт от измеренного, а не от общих слов: сколько система ест сейчас и сколько будет есть в бою.
Сколько занимает сейчас
Замеры на работающем стенде. Заодно видно, что ОСТРО — приложение лёгкое: основную память съедает база, а не боты.
| Что | Память | Комментарий |
|---|---|---|
| Бот и API | 40 МБ | Отвечает на нажатия, принимает вебхуки |
| Напоминания и синхронизация | 100 МБ | Фоновые задания, тяжелее из-за библиотек Google |
| База данных | ~180 МБ | PostgreSQL, растёт вместе с данными |
| Веб-сервер | ~25 МБ | Сертификаты и раздача страниц |
| Операционная система | ~150 МБ | Ubuntu в покое |
| Всего сейчас | ~500 МБ | Вместе с соседним ботом на той же машине |
В бою добавится синхронизация с Google (библиотеки тяжёлые, плюс 150 МБ на пиках), рост базы и кэш. Реалистичный расход ОСТРО при двадцати сотрудниках — около 1 ГБ.
Сколько закладывать на другие проекты
Каждый похожий проект — это бот плюс своя база: от 300 до 600 МБ.
Ваш нынешний contenttracker занимает всего 12 МБ, потому что
написан на другом языке и без базы — но это скорее исключение.
| Конфигурация | Что потянет | Цена в месяц |
|---|---|---|
| 2 ядра · 4 ГБ · 50 ГБ | ОСТРО и ещё два-три небольших проекта. Работать будет, но без запаса на пики и сборки. | 700–1000 ₽ |
| 4 ядра · 8 ГБ · 80 ГБ рекомендую |
ОСТРО плюс пять-семь проектов с базами. Хватает на резкие пики, параллельные сборки и снапшоты. При этом не переплата. | 1300–2000 ₽ |
| 8 ядер · 16 ГБ · 160 ГБ | Десять и больше проектов, тяжёлые базы, обработка файлов и видео. Имеет смысл, если такие планы уже есть. | 2600–4200 ₽ |
Порядок цен на осень 2026 у российских хостингов (Timeweb, Selectel, Aeza, Beget, RuVDS). У зарубежных вроде Hetzner та же машина обходится примерно вдвое дешевле, но оплата российской картой не проходит.
Про диск
- Система и служебное — около 8 ГБ
- ОСТРО целиком — меньше 1 ГБ, база растёт примерно на 500 МБ в год при вашем объёме
- Каждый следующий проект — 1–3 ГБ
- Резервные копии на самом сервере — заложить 10 ГБ
80 ГБ хватит на годы вперёд. Брать больше стоит, только если планируется хранить файлы, видео или большие выгрузки.
Диск NVMe, а не обычный SSD — база данных чувствительна к скорости диска сильнее, чем к количеству ядер.
Снапшоты у хостера — обычно 10–20% к цене. Это возможность откатить весь сервер целиком за минуту, если что-то пойдёт не так. Стоит своих денег.
Свежая Ubuntu — 24.04. На нынешнем сервере стоит 20.04, и из-за этого пришлось поднимать базу окольным путём: свежие версии для неё уже не выпускают.
Всё приложение — это два файла и база. Переезд на новый сервер занимает около часа: развернуть, перенести дамп базы, перевести домен. Так что нынешний сервер можно спокойно использовать для теста и не спешить с покупкой.
Что уже работает
Честный срез: что можно потрогать прямо сейчас, а что ещё делается.
Что нужно от тебя, чтобы двигаться дальше
- Технический аккаунт Google — чтобы бот получил доступ к таблице. Это единственное, что сейчас блокирует половину функционала.
- Решить про отчёты — какие, от кого и к какому времени.
- Список команды — кого заводить, с какими ролями и по каким проектам.