Задание: Разработка Чат-ботов. Добавить трекинг веса + еженедельный отчёт в Telegram-бот на Python aiogram 3 + PostgreSQL (Дистанционная работа)
Есть живой Telegram-бот для трекинга питания HealthMaster (@AIHealthMasterBot). Стек: Python 3.11, aiogram 3, PostgreSQL 15, Redis, Docker, бот работает в продакшне. README с архитектурой и onboarding-документацией есть в репозитории — передаю сразу после отклика.
---
**Задача**
Добавить модуль веса пользователя и еженедельный отчёт о прогрессе. Это ключевая фича для удержания пользователей и основа для монетизации.
---
**Что нужно сделать**
**Блок 1 — Вес и цель:**
- Ввод веса из трёх источников: онбординг, настройки, понедельничный пуш
- Один вес в день (UniqueConstraint). Повторный ввод → UPDATE, не INSERT
- Целевой вес в таблице users (goal_weight numeric(5,1))
- Тип цели бот определяет сам: цель < текущего → похудение, > → набор, = → поддержание
- Диапазон: 30–250 кг. Автоокругление: 84,09 → 84.1
**Блок 2 — Планировщик:**
- Пн 8:00 по локальному времени — пуш про вес совмещённый с напоминанием о завтраке
- Вс 20:30 по локальному времени — еженедельный отчёт
- Все пуши уважают User.timezone
**Блок 3 — Weekly report:**
- 4 сценария с уникальными текстами (вес+еда / еда без веса / мало еды / нет еды)
- 7 метрик: ккал, дни с едой, дни в цели (±10%), статус белка, вес Δ неделя, Δ с начала, до цели X кг
- Если нет веса — весовые строки скрыть
- Только текст, без графиков
**Блок 4 — Технические детали:**
- Миграции только через Alembic (2 миграции: новая таблица user_weights + поле в users)
- Логирование 7 событий с details: WEIGHT_ADDED, WEIGHT_UPDATED, WEIGHT_WEEKLY_PROMPT_SENT, WEIGHT_SKIPPED, WEEKLY_REPORT_SENT, GOAL_WEIGHT_SET, GOAL_WEIGHT_UPDATED
- Код только в существующих папках: models/, handlers/, core/
- Не трогать: платежи, админку, графики
---
**Definition of Done**
1. Онбординг → ввод веса → WEIGHT_ADDED в логах
2. Повторный ввод веса в тот же день → UPDATE, не дубль
3. Пн 8:00 — приходит пуш по локальному времени
4. Вс 20:30 — weekly report с 7 метриками
5. Без веса — весовые строки скрыты
6. Миграция накатывается и откатывается без ошибок
7. Вес 29 кг → ошибка. 84,09 → принят как 84.1
8. Код в ветке feature/weight-tracking + PR с описанием изменений
---
**Что получишь сразу**
- Доступ к репозиторию GitHub
- .env.dev и доступ к dev-серверу
- Dev-бот для тестирования: @HealthMasterAIbot
- README с архитектурой проекта
- Trello-карточка с задачей
- Полное ТЗ (25 страниц) с чеклистом крайних случаев
---
**Требования к исполнителю**
- Python 3.11+, aiogram 3.x — уверенное владение
- PostgreSQL + Alembic — опыт миграций
- APScheduler или аналог с поддержкой таймзон
- Git — работа в ветках, PR с описанием
- Опыт работы в чужом проекте без переписывания архитектуры
---
**Условия**
Бюджет: 11 000 ₽ фикс
Срок: 5 рабочих дней
Тестирование: только на dev-боте, не на продакшне
Это первая задача из серии. Если сработаемся — есть ещё 4–5 задач в бэклоге (геймификация, интеграции гаджетов, монетизация). Ищу разработчика на долгосрок с гибкими условиями.
вопросник для отклика обязательный:
Покажи пример бота на aiogram 3.x
Работал с APScheduler и таймзонами пользователя?
Сколько времени закладываешь на вход в чужой проект?