Skip to content

AI-driven task planning agent for Telegram built with FastAPI, LangChain, MongoDB, and Terraform

Notifications You must be signed in to change notification settings

kosyachniy/aiagent

Repository files navigation

AI Planner

Лёгкий 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

🚀 Быстрый старт

Локально

  1. Установить 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
  2. Клонировать репозиторий:

    git clone git@github.com:kosyachniy/aiagent.git && cd aiagent
  3. Создать виртуальное окружение и установить зависимости:

    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
  4. Запустить Redis:

    docker run -d --name redis -p 6379:6379 redis:7-alpine redis-server --requirepass <redis pass>
  5. Создать .env.development по примеру и заполнить переменные.

  6. Запустить API и worker:

    uvicorn app.main:app --reload
    python worker.py
  7. Прокинуть вебхук через ngrok (опционально):

    ngrok http 8000
    curl -F "url=<ngrok link>/webhook/<bot token>" \
      https://api.telegram.org/bot<bot token>/setWebhook

Docker & docker-compose

  1. Создать .env.production или использовать dev-файл.
  2. Поднять сервисы:
    docker-compose up -d --build

Terraform (dev/prod)

  1. Перейти в infra/, инициализировать Terraform backend:
    cd infra
    terraform init
  2. Применить для нужного окружения:
    terraform apply -var-file=envs/development/terraform.tfvars
  3. После создания VPS и DNS, SSH и запустить Docker Host модуль:
    terraform apply -var-file=envs/development/terraform.tfvars

⚙️ CI/CD

  • 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

🤝 Вклад

  1. Форкните репозиторий.
  2. Создайте ветку.
  3. Сделайте изменения и отправьте PR.

Happy coding!

About

AI-driven task planning agent for Telegram built with FastAPI, LangChain, MongoDB, and Terraform

Topics

Resources

Stars

Watchers

Forks