An open API service indexing awesome lists of open source software.

https://github.com/core-euler/fitter_bot

Fitting bot for marketplaces
https://github.com/core-euler/fitter_bot

ai bot nanobanana python telegram

Last synced: 28 days ago
JSON representation

Fitting bot for marketplaces

Awesome Lists containing this project

README

          

# Fitting Bot - Этап 0 (Шаблон интерфейса)

Telegram-бот для женского бренда одежды с каталогом товаров, подбором размеров и AI-примеркой.

## Этап 0: Что реализовано

Визуальный и навигационный прототип бота без реальной интеграции с БД и внешними API:

- ✅ Команда /start и главное меню
- ✅ Каталог товаров (9 категорий, 15+ товаров)
- ✅ Пагинация товаров
- ✅ Карточки товаров с фото
- ✅ Избранное (сохранение в памяти)
- ✅ Ввод параметров тела с FSM
- ✅ Редактирование параметров
- ✅ Заглушка рекомендации размера
- ✅ Админ-панель /admin_stats
- ✅ Заглушка для AI-примерки

## Технологии

- **Python 3.11**
- **Aiogram 3.15** - асинхронная библиотека для Telegram Bot API
- **Redis** - хранилище FSM состояний
- **PostgreSQL** - (пока не используется, будет на этапе 1)
- **Docker & Docker Compose** - контейнеризация

## Структура проекта

```
fitting_bot/
├── bot/
│ ├── handlers/ # Обработчики команд
│ │ ├── start.py # /start и главное меню
│ │ ├── catalog.py # Каталог и пагинация
│ │ ├── favorites.py # Избранное
│ │ ├── measurements.py # Параметры (FSM)
│ │ └── admin.py # Админ-панель
│ ├── keyboards/ # Клавиатуры
│ ├── states/ # FSM состояния
│ ├── mock_data/ # Моковые данные
│ │ ├── categories.py # Категории товаров
│ │ └── products.py # Товары
│ └── utils/ # Утилиты
│ └── storage.py # Хранение в памяти
├── docker-compose.yml # Docker Compose конфигурация
├── Dockerfile # Dockerfile для бота
├── requirements.txt # Python зависимости
├── .env.example # Пример переменных окружения
└── main.py # Точка входа
```

## Быстрый старт

### 1. Клонирование и настройка

```bash
# Перейти в директорию проекта
cd fitting_bot

# Скопировать .env.example в .env
cp .env.example .env
```

### 2. Настройка .env файла

Отредактируйте `.env` и добавьте токен вашего бота:

```env
TELEGRAM_BOT_TOKEN=your_bot_token_here
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=0
ADMIN_TG_IDS=123456789
```

### 3. Получение токена бота

1. Найдите @BotFather в Telegram
2. Отправьте команду `/newbot`
3. Следуйте инструкциям и получите токен
4. Вставьте токен в `.env` файл

### 4. Запуск через Docker Compose

```bash
# Запуск всех сервисов (postgres, redis, bot)
docker-compose up -d

# Просмотр логов
docker-compose logs -f bot

# Остановка
docker-compose down
```

### 5. Запуск локально (без Docker)

```bash
# Установка зависимостей
pip install -r requirements.txt

# Запуск Redis (должен быть установлен)
redis-server

# Запуск бота
python main.py
```

## Использование бота

### Основные команды

- `/start` - Запуск бота и показ главного меню
- `/admin_stats` - Просмотр статистики (доступна всем на этапе 0)

### Главное меню

- **🛍 Каталог** - Просмотр товаров по категориям
- **⭐️ Избранное** - Сохраненные товары
- **📐 Мои параметры** - Ввод параметров тела
- **ℹ️ О боте** - Информация о возможностях

### Категории товаров

- 🧥 Куртки оверсайз
- 🧥 Пальто
- 🧥 Пуховики
- 🧥 Плащи
- 🧥 Бомберы
- 🧥 Жилеты
- 🧥 Ветровки
- 🧥 Парки
- 👖 Штаны

## Особенности этапа 0

### Данные в памяти

Все данные (избранное, параметры) хранятся в памяти Python и сбрасываются при перезапуске бота. Это нормально для прототипа.

### Моковые данные

Все товары и категории жестко закодированы в файлах:
- `bot/mock_data/categories.py`
- `bot/mock_data/products.py`

Изображения товаров - это заглушки через placeholder.

### Фиксированная рекомендация размера

На этапе 0 для всех товаров показывается размер **M** после ввода параметров. Реальный алгоритм подбора будет реализован на этапе 1.

## Что будет на следующих этапах

### Этап 1: Каталог и подбор размеров
- Интеграция с Google Sheets
- База данных PostgreSQL
- Реальный алгоритм подбора размеров
- FastAPI backend
- Сохранение данных между перезапусками

### Этап 2: AI-примерка
- Загрузка фото пользователя
- Валидация фото через AI
- Интеграция с Gemini API
- Генерация примерок
- История примерок

## Разработка

### Добавление новых товаров

Отредактируйте `bot/mock_data/products.py`:

```python
{
"product_id": "new_product_001",
"category": "jackets_oversize",
"name": "Название товара",
"description": "Описание товара",
"wb_link": "https://www.wildberries.ru/",
"available_sizes": "XS,S,M,L,XL",
"collage_url": "https://url_to_image",
"photo_1_url": "https://url_to_photo1",
...
}
```

### Добавление новых категорий

Отредактируйте `bot/mock_data/categories.py`.

## Troubleshooting

### Бот не отвечает

1. Проверьте, что токен бота правильный в `.env`
2. Проверьте логи: `docker-compose logs -f bot`
3. Убедитесь, что Redis запущен

### Redis connection error

```bash
# Проверить статус Redis
docker-compose ps redis

# Перезапустить Redis
docker-compose restart redis
```

### Изображения не загружаются

На этапе 0 используются placeholder изображения. Если они не загружаются, это не критично - структура и навигация бота работают.

## Docker команды

```bash
# Пересобрать образ бота
docker-compose build bot

# Перезапустить только бота
docker-compose restart bot

# Посмотреть логи Redis
docker-compose logs -f redis

# Очистить все данные
docker-compose down -v
```

## Контакты

Для вопросов по проекту обращайтесь к документации:

### Общая документация:
- `docs/SPEC.md` - Краткая спецификация проекта
- `docs/MAIN.md` - Полное ТЗ проекта
- `docs/S0/S0.md` - Техническое задание этапа 0
- `docs/S1/S1.md` - Техническое задание этапа 1

### Документация Google Sheets:
- `docs/GOOGLE_SHEETS_CHEATSHEET.md` - 📋 **Шпаргалка** (начните отсюда!)
- `docs/GOOGLE_SHEETS_COLUMNS.md` - 📚 Подробное описание всех столбцов
- `docs/GOOGLE_SHEETS_SETUP.md` - 🔧 Настройка подключения к Google Sheets
- `docs/GOOGLE_SHEETS_MIGRATION.md` - 🔄 Инструкция по переходу на русские названия

## Лицензия

Проект разрабатывается для конкретного заказчика.