sk-top3/sutki35
Создайте полнофункционального Telegram-бота для агентства недвижимости, который позволяет сдавать квартиры посуточно. Бот должен иметь каталог квартир, систему бронирования, интеграцию платежей и админ-панель для управления контентом. Технические требования 1. Архитектура и технологии · Фреймворк: Aiogram 3.x (асинхронный) · База данных: SQLite с SQLAlchemy 2.0 ORM · Оплата: Интеграция с ЮKassa/Telegram Payments · Состояния: FSM (Finite State Machine) для многошаговых сценариев · Конфигурация: python-dotenv для управления переменными окружения 2. Основные функции · Пользовательская часть: · Просмотр каталога квартир с фотографиями, описанием, ценами · Фильтрация по параметрам (цена, количество комнат, район) · Пошаговое бронирование с выбором дат · Оплата через Telegram Payments или ЮKassa · История бронирований пользователя · Система уведомлений о статусе брони · Административная часть: · Добавление/редактирование/удаление квартир · Загрузка фотографий (до 5 фото на квартиру) · Управление бронированиями (подтверждение, отмена) · Просмотр статистики (занятость, доходы) · Команда для рассылки уведомлений всем пользователям 3. Структура базы данных ```sql - Пользователи (user_id, username, full_name, phone, registration_date) - Квартиры (id, title, description, address, price_per_day, rooms, area, amenities, photos, is_available) - Бронирования (id, user_id, apartment_id, check_in, check_out, total_price, payment_status, booking_date, status) - Платежи (id, booking_id, transaction_id, amount, currency, status, payment_date) ``` 4. Интерфейс бота · Интуитивное меню с кнопками · Inline-кнопки для навигации по каталогу · Галерея фотографий квартир (использовать InputMediaPhoto для альбомов) · Календарь для выбора дат (можно использовать инлайн-клавиатуру) · Подтверждение брони с деталями перед оплатой · Чек после успешной оплаты Детальные инструкции для генерации кода 1. Структура проекта Создайте следующую структуру файлов: ``` real_estate_bot/ ├── data/ (директория для БД) ├── bot/ │ ├── __init__.py │ ├── config.py (настройки, загрузка .env) │ ├── database.py (модели SQLAlchemy, инициализация) │ ├── keyboards.py (все клавиатуры и inline-кнопки) │ ├── filters.py (кастомные фильтры, например, для админов) │ ├── states.py (состояния FSM для бронирования) │ ├── middlewares.py (при необходимости) │ ├── handlers/ │ │ ├── __init__.py │ │ ├── user_handlers.py (команды для пользователей) │ │ ├── admin_handlers.py (команды для админов) │ │ └── payment_handlers.py (обработка платежей) │ └── utils/ │ ├── __init__.py │ ├── payment.py (логика работы с платежами) │ └── notifications.py (отправка уведомлений) ├── .env.example (шаблон для .env файла) ├── requirements.txt ├── main.py (точка входа) └── README.md (инструкция по запуску) ``` 2. Требования к коду · Полностью асинхронная реализация · Обработка ошибок с try-except блоками · Валидация вводимых данных (дат, контактной информации) · Логирование ключевых событий · Комментарии на английском или русском языке для сложных участков кода 3. Ключевые сценарии для реализации Сценарий 1: Бронирование квартиры 1. Пользователь выбирает квартиру из каталога 2. Бот запрашивает дату заезда и выезда через FSM 3. Система проверяет доступность дат 4. Рассчитывается итоговая стоимость 5. Показывается подтверждение с деталями 6. Генерация платежного счета 7. Обработка успешной/неуспешной оплаты 8. Уведомление пользователя и администратора Сценарий 2: Добавление новой квартиры (админ) 1. Админ отправляет команду /add_apartment 2. Бот пошагово запрашивает: название, описание, адрес, цену, количество комнат, удобства 3. Запрос загрузки фотографий (поддержка нескольких фото) 4. Сохранение в БД и подтверждение 4. Интеграция платежей · Использование provider_token для Telegram Payments · Реализация PreCheckoutQuery и SuccessfulPaymentHandler · Альтернативная интеграция с ЮKassa API для карточных платежей · Обновление статуса брони после успешной оплаты 5. Тестовые данные Для проверки работоспособности создайте: · 5 тестовых квартир с разными параметрами · 2 тестовых пользователя (обычный и администратор) · Систему сброса данных для тестирования (команда /test_reset для админа) Инструкция для проверки После генерации кода, пожалуйста, протестируйте следующее: 1. Запуск бота: Убедитесь, что бот запускается без ошибок 2. Команда /start: Проверьте ответ бота и создание записи в БД 3. Каталог квартир: Проверьте отображение всех квартир, фотографий, кнопок 4. Процесс бронирования: Пройдите полный цикл бронирования (без реальной оплаты, используя тестовый режим) 5. Админ-функции: Добавьте новую квартиру, проверьте загрузку фото 6. Платежи: Протестируйте успешную и отмененную оплату Требования к документации 1. Подробный README.md с инструкцией по установке и настройке 2. .env.example с объяснением всех переменных окружения 3. Комментарии в коде для сложных функций 4. Примеры запросов к API платежной системы (если используется внешняя) Критерии успешной реализации · Бот запускается и отвечает на команды · Каталог квартир отображается корректно · Процесс бронирования работает от начала до конца · Оплата в тестовом режиме проходит успешно · Админ-панель позволяет управлять квартирами · Все данные сохраняются в БД и корректно извлекаются · Обработка ошибок (некорректные даты, недоступность квартиры и т.д.) · Многоязычные сообщения об ошибках и успешных операциях Сгенерируйте полный код проекта, готовый к запуску после установки зависимостей и настройки переменных окружения. Код должен быть производственного качества с учетом лучших практик Python и Aiogram.
sourcecraft.dev/sk-top3/sutki35Обновлено 14 дней назадОценка по открытым данным
- Данные
- 4 категории из 6Security, CI/CD: видны только участникам. 24 из 24 метрик с данными
- Место в рейтинге
- 2 697–3 242 из 21 903
Есть серьёзные проблемы. Что тянет вниз: проект не обновлялся 256 дней, нет лицензии.
Категории
| Категория | Вес | Оценка | Вывод |
|---|---|---|---|
| Security | 25% | — | нет данных |
| CI/CD | 20% | — | нет данных |
| Активность | 15% | 10 | 10/100: Последний коммит 2026-02-09, за 256 дн. до анализа |
| Документация | 15% | 40 | 40/100: Нет файла лицензии в корне |
| Issues | 15% | 50 | 50/100 |
| Code health | 10% | 90 |
Сильные стороны
- Code health · TODO/FIXME на 1000 строк: 0,0 (0 на 524 строк)
- Code health · TODO/FIXME нет
Что стоит улучшить
- Активность · последний коммит 2026-02-09, за 256 дн. до анализа
- Активность · недель с коммитами за 90 дней: 0 из 13, доля самой плотной недели 0%
- Документация · нет файла лицензии в корне
- Документация · не описана сборка
- Code health · тестовых файлов: 0 на 15 исходных