Лёгкий AI-агент для планирования задач через Telegram-бот на основе LangChain & LangGraph, FastAPI и MongoDB. Поддерживает вложенные инициативы → блоки → задачи, переприоритизацию с учётом бизнес-приоритетов, ресурсов и экспорт в Google Sheets.
repo-root/
├── infra/ Terraform-код инфраструктуры
│ ├── backend.tf
│ ├── provider.tf
│ ├── vpc.tf
│ ├── outputs.tf
│ ├── envs/ Настройки для dev/prod
│ └── modules/
│ ├── vps/
│ ├── docker_host/
│ ├── dns/
│ └── ssl/
├── app/ Основное приложение
│ ├── main.py FastAPI (+Loguru)
│ ├── api/ HTTP-эндпоинты (webhook, задачи)
│ ├── services/ TaskManager и AI Agent
│ ├── models/ Pydantic-схемы
│ ├── db/ MongoDB через Motor
│ ├── integrations/ Google Sheets и Yandex Tracker
│ ├── core/ Конфиг и логгер
│ └── langchain_graph/ Navigator & Reprioritizer
├── tasks/ Dramatiq-воркеры
├── worker.py Точка входа для worker
├── scripts/ Вспомогательные утилиты (миграция в Sheets)
├── tests/ Unit & Integration тесты
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── .env.development
├── .env.production
└── .github/workflows/ci-cd.yml
- Python 3.11
- FastAPI — HTTP-сервис
- Dramatiq + Redis — фоновые задачи
- MongoDB (Motor) — хранилище задач
- LangChain & LangGraph — AI-графы (o4-mini)
- pygsheets — экспорт в Google Sheets
- Loguru — логирование
- Docker + docker-compose
- Terraform — IaC (DigitalOcean VPC, VPS, DNS, SSL)
- GitHub Actions — CI/CD
-
Установить MongoDB & Redis
brew tap mongodb/brew brew install mongodb-community@6.0 brew install mongosh brew services start mongodb-community@6.0 brew tap ngrok/ngrok brew install ngrok
-
Клонировать репозиторий:
git clone git@github.com:kosyachniy/aiagent.git && cd aiagent
-
Создать виртуальное окружение и установить зависимости:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
-
Запустить Redis:
docker run -d --name redis -p 6379:6379 redis:7-alpine redis-server --requirepass <redis pass>
-
Создать
.env.development
по примеру и заполнить переменные. -
Запустить API и worker:
uvicorn app.main:app --reload python worker.py
-
Прокинуть вебхук через ngrok (опционально):
ngrok http 8000
curl -F "url=<ngrok link>/webhook/<bot token>" \ https://api.telegram.org/bot<bot token>/setWebhook
- Создать
.env.production
или использовать dev-файл. - Поднять сервисы:
docker-compose up -d --build
- Перейти в
infra/
, инициализировать Terraform backend:cd infra terraform init
- Применить для нужного окружения:
terraform apply -var-file=envs/development/terraform.tfvars
- После создания VPS и DNS, SSH и запустить Docker Host модуль:
terraform apply -var-file=envs/development/terraform.tfvars
- GitHub Actions запускает тесты, собирает и пушит Docker-образ.
- При мерже в
main
автоматически деплоит на прод-сервер через SSH. - Настройте Secrets:
DOCKERHUB_USER
,DOCKERHUB_TOKEN
,VPS_HOST
,VPS_USER
,VPS_SSH_KEY
.
pytest --maxfail=1 --disable-warnings -q
- Unit:
tests/unit
- Integration:
tests/integration
- Форкните репозиторий.
- Создайте ветку.
- Сделайте изменения и отправьте PR.
Happy coding!