Some checks reported errors
continuous-integration/drone/push Build encountered an error
Основные изменения: ✨ Новые функции: - Система регистрации пользователей с множественными счетами - Автоматическое подтверждение выигрышей через inline-кнопки - Механизм переигровки для неподтвержденных выигрышей (24 часа) - Подтверждение на уровне счетов (каждый счет подтверждается отдельно) - Скрипт полной очистки базы данных 🔧 Технические улучшения: - Исправлена ошибка MissingGreenlet при lazy loading (добавлен joinedload/selectinload) - Добавлено поле claimed_at для отслеживания времени подтверждения - Пакетное добавление счетов с выбором розыгрыша - Проверка владения конкретным счетом при подтверждении 📚 Документация: - docs/AUTO_CONFIRM_SYSTEM.md - Полная документация системы подтверждения - docs/ACCOUNT_BASED_CONFIRMATION.md - Подтверждение на уровне счетов - docs/REGISTRATION_SYSTEM.md - Система регистрации - docs/ADMIN_COMMANDS.md - Команды администратора - docs/CLEAR_DATABASE.md - Очистка БД - docs/QUICK_GUIDE.md - Быстрое начало - docs/UPDATE_LOG.md - Журнал обновлений 🗄️ База данных: - Миграция 003: Таблицы accounts, winner_verifications - Миграция 004: Поле claimed_at в таблице winners - Скрипт scripts/clear_database.py для полной очистки 🎮 Новые команды: Админские: - /check_unclaimed <lottery_id> - Проверка неподтвержденных выигрышей - /redraw <lottery_id> - Повторный розыгрыш - /add_accounts - Пакетное добавление счетов - /list_accounts <telegram_id> - Список счетов пользователя Пользовательские: - /register - Регистрация с вводом данных - /my_account - Просмотр своих счетов - Callback confirm_win_{id} - Подтверждение выигрыша 🛠️ Makefile: - make clear-db - Очистка всех данных из БД (с подтверждением) 🔒 Безопасность: - Проверка владения счетом при подтверждении - Защита от подтверждения чужих счетов - Независимое подтверждение каждого выигрышного счета 📊 Логика работы: 1. Пользователь регистрируется и добавляет счета 2. Счета участвуют в розыгрыше 3. Победители получают уведомление с кнопкой подтверждения 4. Каждый счет подтверждается отдельно (24 часа на подтверждение) 5. Неподтвержденные выигрыши переигрываются через /redraw
136 lines
5.7 KiB
Makefile
136 lines
5.7 KiB
Makefile
# Makefile для телеграм-бота розыгрышей
|
||
|
||
.PHONY: help install setup setup-postgres init-db run test clean
|
||
|
||
# По умолчанию показываем справку
|
||
help:
|
||
@echo "🎲 Телеграм-бот для розыгрышей"
|
||
@echo "================================"
|
||
@echo ""
|
||
@echo "Доступные команды:"
|
||
@echo " make install - Установка зависимостей"
|
||
@echo " make setup-postgres- Настройка PostgreSQL БД"
|
||
@echo " make setup - Первоначальная настройка"
|
||
@echo " make init-db - Инициализация базы данных"
|
||
@echo " make run - Запуск бота"
|
||
@echo " make test - Запуск тестов и примеров"
|
||
@echo " make migration - Создание миграции"
|
||
@echo " make migrate - Применение миграций"
|
||
@echo " make sample - Создание тестового розыгрыша"
|
||
@echo " make stats - Показать статистику"
|
||
@echo " make demo-admin - Демонстрация админ-панели"
|
||
@echo " make test-admin - Тестирование улучшений админки"
|
||
@echo " make clear-db - ⚠️ УДАЛИТЬ ВСЕ ДАННЫЕ из БД"
|
||
@echo ""
|
||
@echo "Быстрый старт с PostgreSQL:"
|
||
@echo " 1. cp .env.example .env"
|
||
@echo " 2. Отредактируйте .env файл"
|
||
@echo " 3. make setup-postgres"
|
||
@echo " 4. make migrate"
|
||
@echo " 5. make setup"
|
||
@echo " 6. make run"
|
||
|
||
# Установка зависимостей
|
||
install:
|
||
@echo "📦 Установка зависимостей..."
|
||
python3 -m venv .venv
|
||
. .venv/bin/activate && pip install -r requirements.txt
|
||
|
||
# Настройка PostgreSQL базы данных
|
||
setup-postgres:
|
||
@echo "🐘 Настройка PostgreSQL базы данных..."
|
||
./scripts/setup_postgres.sh
|
||
|
||
# Первоначальная настройка
|
||
setup: install
|
||
@echo "🔧 Настройка проекта..."
|
||
@if [ ! -f .env ]; then \
|
||
echo "❌ Файл .env не найден! Скопируйте .env.example в .env"; \
|
||
exit 1; \
|
||
fi
|
||
. .venv/bin/activate && python -c "from src.utils.utils import setup_admin_users; import asyncio; asyncio.run(setup_admin_users())"
|
||
@echo "✅ Настройка завершена!"
|
||
|
||
# Инициализация базы данных
|
||
init-db:
|
||
@echo "🗄️ Инициализация базы данных..."
|
||
. .venv/bin/activate && python -c "from src.core.database import init_db; import asyncio; asyncio.run(init_db())"
|
||
@echo "✅ База данных инициализирована!"
|
||
|
||
# Проверка подключения к базе данных
|
||
check-db:
|
||
@echo "🔍 Проверка подключения к базе данных..."
|
||
. .venv/bin/activate && python -c "from src.core.database import async_session_maker; import asyncio; asyncio.run(async_session_maker().__aenter__())"
|
||
@echo "✅ Подключение к базе данных работает!"
|
||
|
||
# Запуск бота
|
||
run:
|
||
@echo "🚀 Запуск бота..."
|
||
. .venv/bin/activate && python main.py
|
||
|
||
# Создание миграции
|
||
migration:
|
||
@echo "📄 Создание новой миграции..."
|
||
. .venv/bin/activate && alembic revision --autogenerate -m "$(MSG)"
|
||
|
||
# Применение миграций
|
||
migrate:
|
||
@echo "⬆️ Применение миграций..."
|
||
. .venv/bin/activate && alembic upgrade head
|
||
|
||
# Тесты и примеры
|
||
test:
|
||
@echo "🧪 Запуск тестов..."
|
||
. .venv/bin/activate && python scripts/examples.py
|
||
|
||
# Создание тестового розыгрыша
|
||
sample:
|
||
@echo "🎲 Создание тестового розыгрыша..."
|
||
. .venv/bin/activate && python -c "from src.utils.utils import create_sample_lottery; import asyncio; asyncio.run(create_sample_lottery())"
|
||
|
||
# Статистика
|
||
stats:
|
||
@echo "📊 Статистика бота..."
|
||
. .venv/bin/activate && python -c "from src.utils.utils import show_stats; import asyncio; asyncio.run(show_stats())"
|
||
|
||
# Демонстрация админ-панели
|
||
demo-admin:
|
||
@echo "🎪 Демонстрация возможностей админ-панели..."
|
||
. .venv/bin/activate && python src/display/demo_admin.py
|
||
|
||
# Тестирование улучшений админки
|
||
test-admin:
|
||
@echo "🧪 Тестирование новых функций админ-панели..."
|
||
. .venv/bin/activate && python tests/test_admin_improvements.py
|
||
|
||
# ⚠️ ОПАСНО: Полная очистка базы данных
|
||
clear-db:
|
||
@echo "⚠️ ВНИМАНИЕ! Это удалит ВСЕ данные из базы данных!"
|
||
@echo " - Все пользователи"
|
||
@echo " - Все розыгрыши"
|
||
@echo " - Все счета"
|
||
@echo " - Все участия"
|
||
@echo " - Всех победителей"
|
||
@echo ""
|
||
@read -p "Вы уверены? Введите 'yes' для подтверждения: " confirm; \
|
||
if [ "$$confirm" = "yes" ]; then \
|
||
echo "🗑️ Очистка базы данных..."; \
|
||
. .venv/bin/activate && python scripts/clear_database.py; \
|
||
else \
|
||
echo "❌ Отменено"; \
|
||
fi
|
||
|
||
# Очистка
|
||
clean:
|
||
@echo "🧹 Очистка временных файлов..."
|
||
find . -type f -name "*.pyc" -delete
|
||
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
||
find . -type f -name "*.log" -delete
|
||
@echo "✅ Очистка завершена!"
|
||
|
||
# Полная переустановка
|
||
reset: clean
|
||
@echo "🔄 Полная переустановка..."
|
||
rm -f *.db *.sqlite *.sqlite3
|
||
rm -rf migrations/versions/*.py
|
||
make setup
|