Этот раздел для инвесторов, которые смотрят код, и для авторов каналов, которым важно, где хранятся их данные и что будет, если интернет отвалится.
| Язык | Python 3.12 |
| Telegram-бот | aiogram 3 |
| Веб-кабинет и админка | FastAPI + Jinja-шаблоны |
| База данных | SQLite (WAL) локально, PostgreSQL через DATABASE_URL в проде — слой доступа один и тот же |
| Фоновые задачи | APScheduler, 17 задач |
| Сбор просмотров | Telethon (MTProto-сессия пользователя: боты не видят статистику постов) |
| Дополнительный сервис | Go — вынесенный в отдельный процесс микросервис |
| Выгрузка отчётов | xlsxwriter |
| Покрытие | 21 автотест, запуск одной командой |
| Развёртывание | Docker, деплой по push в main |
Функции разделены по ответственности: каждый модуль можно тестировать и менять независимо.
| Модуль | Зачем он выделен |
|---|---|
| Мониторинг | Раньше состояние было видно только в логах хостинга. Теперь есть /healthz, /metrics и сводка в админке, а падение фоновой задачи даёт явный сигнал, а не тихий результат «0 обработано» |
| Сверка | Четыре инварианта: баланс против транзакций и выплат, покрытие ERID, налоговые статусы, счётчики. Расхождение уходит алертом, а не остаётся в логе |
| Комплаенс | Доход по периодам, чеки самозанятого, отчёт для налоговой и для ОРД. Раньше группировки по месяцам в проекте не существовало вообще |
| Подбор офферов | Соответствие оффера вертикали канала. Флаг автоподбора существовал в интерфейсе, но в логике публикации не читался ни разу — теперь читается |
| Вовлечение | Реакции на комментарии и работа с закреплением |
| Аналитика | Доход на 1 000 просмотров по вертикалям и размерам каналов. Отвечает на вопрос, где на самом деле зарабатываем |
Целевая архитектура описана ниже. Пока она не реализована полностью, поэтому у каждого слоя указан фактический статус.
Разделение на слои нужно именно для того, чтобы изменение требований площадки было правкой механизма, а не новой разработкой. Офферы, ссылки, учёт конверсий, расчёты с авторами и кабинеты не содержат площадочной логики — они переживают смену публикатора.
Именно поэтому при ужесточении правил доход каналов и работа расчётов не обнуляются: меняется способ размещения, продолжают работать учёт, офферы и выплаты.
Единственный источник данных о покупках — партнёрская сеть. Наш код не оценивает продажи сам, он принимает постбэки и ведёт их статусы.
| «В ожидании» | заказ проходит проверку у рекламодателя, 30–90 дней |
| «Доступно к выводу» | заказы со статусом approved по данным сети, минимум 3 000 ₽ |
| Оплата | по заявке в кабинете, перевод на карту |
| Чек | обязателен в течение 24 часов после перевода, иначе выплата не закрывается |
Список того, что мы знаем как слабое место. Обновляется по мере работы.
| Ограничение | Степень | Что делаем |
|---|---|---|
| Позиция ФАС по рекламе в Telegram. Ч. 10.7 ст. 5 № 38-ФЗ запрещает рекламу на ресурсах с ограниченным доступом; ФАС считает, что под это попадает и Telegram | высокая | Подробно — в разделе «Правовые вопросы». Техническая часть решения не готова: глобального выключателя площадки и модуля проверки допустимости в коде нет, это задачи этапа. Судебной практики по норме применительно к Telegram нет |
| Локализация персональных данных не решена. База на зарубежном хостинге | высокая | Блокер для массового подключения авторов. Согласуем схему с юристом и переносим базу в РФ, запись в бюджете транша. До решения работаем только с тестовыми данными |
| Одна партнёрская сеть. Admitad может поднять ставки, изменить условия или уйти | высокая | Вторая сеть — приоритет месяцев 5–9. Адаптер универсальный, подключение 2–3 недели. Спрос авторов не исчезает вместе с сетью — авторы идут туда, где есть офферы |
| Не подтвердилась экономика: конверсия ниже модельной или каналы отваливаются быстрее | высокая | Именно это покупает транш 1. Замер на 40 каналах — до найма и масштаба. Если модель не сходится, мы перестраиваем её, а не масштабируем |
| Снижение ставок: бюджеты в Telegram упали на 22 % за полугодие 2026 года | средняя | Пересчёт ставок в первый месяц. При подтверждённом снижении план по каналам пересчитывается вверх до масштабирования |
| Статус платформы как распространителя или рекламной системы | средняя | Вопрос вынесен юристу. Прорабатывается конструкция, где автор публикует сам, а платформа не получает процент с рекламы |
| Накрутки кликов в CPC | средняя | Антифрод и лимиты. Приоритет CPA в дорогих вертикалях |
| Ошибка в схеме отчётности ОРД | средняя | Юрист с первого дня, схема фиксируется письменно до масштабирования |
| База и бэкапы на зарубежном хостинге | средняя | Известное несоответствие требованию о локализации. Переезд на российский хостинг в первый месяц транша |
| Ключевой участник уходит | средняя | Удержание через долю в компании и долю от прибыли, а не только ставкой. Обещанием удержать нельзя — при уходе снимаем риск ранним наймом на замену |
| Отток каналов | средняя | Транш 2 не открывается, если не набраны каналы. Потрачено 2,4 млн за проверенную гипотезу, решение по факту |
Честный список. Инвестору, который проверит код, обнаружить это самостоятельно хуже.
При нулевом трекшене нанимать разработчика на полный день преждевременно: это оплата риска за чужой счёт. Часть задач выполняется подрядчиком по отдельному договору, без включения в постоянный зарплатный фонд. Отдельная штатная позиция появится только после подтверждения экономики.