{"id":50112802,"url":"https://github.com/core-euler/fitter_bot","last_synced_at":"2026-05-23T13:06:55.773Z","repository":{"id":327894050,"uuid":"1108614424","full_name":"core-euler/fitter_bot","owner":"core-euler","description":"Fitting bot for marketplaces","archived":false,"fork":false,"pushed_at":"2026-02-02T13:29:21.000Z","size":18211,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-28T18:54:06.256Z","etag":null,"topics":["ai","bot","nanobanana","python","telegram"],"latest_commit_sha":null,"homepage":"https://t.me/luqi_slavallokbrand_bot","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/core-euler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-02T17:24:24.000Z","updated_at":"2026-02-02T13:30:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/core-euler/fitter_bot","commit_stats":null,"previous_names":["okoloboga/fitter_bot","core-euler/fitter_bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/core-euler/fitter_bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/core-euler%2Ffitter_bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/core-euler%2Ffitter_bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/core-euler%2Ffitter_bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/core-euler%2Ffitter_bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/core-euler","download_url":"https://codeload.github.com/core-euler/fitter_bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/core-euler%2Ffitter_bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33396688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","bot","nanobanana","python","telegram"],"created_at":"2026-05-23T13:06:54.697Z","updated_at":"2026-05-23T13:06:55.757Z","avatar_url":"https://github.com/core-euler.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fitting Bot - Этап 0 (Шаблон интерфейса)\n\nTelegram-бот для женского бренда одежды с каталогом товаров, подбором размеров и AI-примеркой.\n\n## Этап 0: Что реализовано\n\nВизуальный и навигационный прототип бота без реальной интеграции с БД и внешними API:\n\n- ✅ Команда /start и главное меню\n- ✅ Каталог товаров (9 категорий, 15+ товаров)\n- ✅ Пагинация товаров\n- ✅ Карточки товаров с фото\n- ✅ Избранное (сохранение в памяти)\n- ✅ Ввод параметров тела с FSM\n- ✅ Редактирование параметров\n- ✅ Заглушка рекомендации размера\n- ✅ Админ-панель /admin_stats\n- ✅ Заглушка для AI-примерки\n\n## Технологии\n\n- **Python 3.11**\n- **Aiogram 3.15** - асинхронная библиотека для Telegram Bot API\n- **Redis** - хранилище FSM состояний\n- **PostgreSQL** - (пока не используется, будет на этапе 1)\n- **Docker \u0026 Docker Compose** - контейнеризация\n\n## Структура проекта\n\n```\nfitting_bot/\n├── bot/\n│   ├── handlers/          # Обработчики команд\n│   │   ├── start.py       # /start и главное меню\n│   │   ├── catalog.py     # Каталог и пагинация\n│   │   ├── favorites.py   # Избранное\n│   │   ├── measurements.py # Параметры (FSM)\n│   │   └── admin.py       # Админ-панель\n│   ├── keyboards/         # Клавиатуры\n│   ├── states/            # FSM состояния\n│   ├── mock_data/         # Моковые данные\n│   │   ├── categories.py  # Категории товаров\n│   │   └── products.py    # Товары\n│   └── utils/             # Утилиты\n│       └── storage.py     # Хранение в памяти\n├── docker-compose.yml     # Docker Compose конфигурация\n├── Dockerfile            # Dockerfile для бота\n├── requirements.txt      # Python зависимости\n├── .env.example          # Пример переменных окружения\n└── main.py              # Точка входа\n```\n\n## Быстрый старт\n\n### 1. Клонирование и настройка\n\n```bash\n# Перейти в директорию проекта\ncd fitting_bot\n\n# Скопировать .env.example в .env\ncp .env.example .env\n```\n\n### 2. Настройка .env файла\n\nОтредактируйте `.env` и добавьте токен вашего бота:\n\n```env\nTELEGRAM_BOT_TOKEN=your_bot_token_here\nREDIS_HOST=redis\nREDIS_PORT=6379\nREDIS_DB=0\nADMIN_TG_IDS=123456789\n```\n\n### 3. Получение токена бота\n\n1. Найдите @BotFather в Telegram\n2. Отправьте команду `/newbot`\n3. Следуйте инструкциям и получите токен\n4. Вставьте токен в `.env` файл\n\n### 4. Запуск через Docker Compose\n\n```bash\n# Запуск всех сервисов (postgres, redis, bot)\ndocker-compose up -d\n\n# Просмотр логов\ndocker-compose logs -f bot\n\n# Остановка\ndocker-compose down\n```\n\n### 5. Запуск локально (без Docker)\n\n```bash\n# Установка зависимостей\npip install -r requirements.txt\n\n# Запуск Redis (должен быть установлен)\nredis-server\n\n# Запуск бота\npython main.py\n```\n\n## Использование бота\n\n### Основные команды\n\n- `/start` - Запуск бота и показ главного меню\n- `/admin_stats` - Просмотр статистики (доступна всем на этапе 0)\n\n### Главное меню\n\n- **🛍 Каталог** - Просмотр товаров по категориям\n- **⭐️ Избранное** - Сохраненные товары\n- **📐 Мои параметры** - Ввод параметров тела\n- **ℹ️ О боте** - Информация о возможностях\n\n### Категории товаров\n\n- 🧥 Куртки оверсайз\n- 🧥 Пальто\n- 🧥 Пуховики\n- 🧥 Плащи\n- 🧥 Бомберы\n- 🧥 Жилеты\n- 🧥 Ветровки\n- 🧥 Парки\n- 👖 Штаны\n\n## Особенности этапа 0\n\n### Данные в памяти\n\nВсе данные (избранное, параметры) хранятся в памяти Python и сбрасываются при перезапуске бота. Это нормально для прототипа.\n\n### Моковые данные\n\nВсе товары и категории жестко закодированы в файлах:\n- `bot/mock_data/categories.py`\n- `bot/mock_data/products.py`\n\nИзображения товаров - это заглушки через placeholder.\n\n### Фиксированная рекомендация размера\n\nНа этапе 0 для всех товаров показывается размер **M** после ввода параметров. Реальный алгоритм подбора будет реализован на этапе 1.\n\n## Что будет на следующих этапах\n\n### Этап 1: Каталог и подбор размеров\n- Интеграция с Google Sheets\n- База данных PostgreSQL\n- Реальный алгоритм подбора размеров\n- FastAPI backend\n- Сохранение данных между перезапусками\n\n### Этап 2: AI-примерка\n- Загрузка фото пользователя\n- Валидация фото через AI\n- Интеграция с Gemini API\n- Генерация примерок\n- История примерок\n\n## Разработка\n\n### Добавление новых товаров\n\nОтредактируйте `bot/mock_data/products.py`:\n\n```python\n{\n    \"product_id\": \"new_product_001\",\n    \"category\": \"jackets_oversize\",\n    \"name\": \"Название товара\",\n    \"description\": \"Описание товара\",\n    \"wb_link\": \"https://www.wildberries.ru/\",\n    \"available_sizes\": \"XS,S,M,L,XL\",\n    \"collage_url\": \"https://url_to_image\",\n    \"photo_1_url\": \"https://url_to_photo1\",\n    ...\n}\n```\n\n### Добавление новых категорий\n\nОтредактируйте `bot/mock_data/categories.py`.\n\n## Troubleshooting\n\n### Бот не отвечает\n\n1. Проверьте, что токен бота правильный в `.env`\n2. Проверьте логи: `docker-compose logs -f bot`\n3. Убедитесь, что Redis запущен\n\n### Redis connection error\n\n```bash\n# Проверить статус Redis\ndocker-compose ps redis\n\n# Перезапустить Redis\ndocker-compose restart redis\n```\n\n### Изображения не загружаются\n\nНа этапе 0 используются placeholder изображения. Если они не загружаются, это не критично - структура и навигация бота работают.\n\n## Docker команды\n\n```bash\n# Пересобрать образ бота\ndocker-compose build bot\n\n# Перезапустить только бота\ndocker-compose restart bot\n\n# Посмотреть логи Redis\ndocker-compose logs -f redis\n\n# Очистить все данные\ndocker-compose down -v\n```\n\n## Контакты\n\nДля вопросов по проекту обращайтесь к документации:\n\n### Общая документация:\n- `docs/SPEC.md` - Краткая спецификация проекта\n- `docs/MAIN.md` - Полное ТЗ проекта\n- `docs/S0/S0.md` - Техническое задание этапа 0\n- `docs/S1/S1.md` - Техническое задание этапа 1\n\n### Документация Google Sheets:\n- `docs/GOOGLE_SHEETS_CHEATSHEET.md` - 📋 **Шпаргалка** (начните отсюда!)\n- `docs/GOOGLE_SHEETS_COLUMNS.md` - 📚 Подробное описание всех столбцов\n- `docs/GOOGLE_SHEETS_SETUP.md` - 🔧 Настройка подключения к Google Sheets\n- `docs/GOOGLE_SHEETS_MIGRATION.md` - 🔄 Инструкция по переходу на русские названия\n\n## Лицензия\n\nПроект разрабатывается для конкретного заказчика.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcore-euler%2Ffitter_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcore-euler%2Ffitter_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcore-euler%2Ffitter_bot/lists"}