This commit is contained in:
2026-01-07 22:47:09 +03:00
parent a75d017aa7
commit b4ebf9c4df
+28 -40
View File
@@ -1,51 +1,39 @@
# Trudex # 📚 Quizzi
Telegram платформа для тестирования по охране труда Telegram-бот для создания и прохождения тестов с удобным интерфейсом и полным контролем над процессом.
## Архитектура ## 🎯 Зачем это нужно
Проект построен на принципах Clean Architecture с разделением на три слоя: Если вам надоело собирать ответы в Google Forms, вручную считать баллы и рассылать результаты — Quizzi решает эти проблемы. Бот работает прямо в Telegram: студенты проходят тесты там, где им удобно, а преподаватели получают готовую статистику в Excel.
- **Application** - координация и UI логика (aiogram, aiogram-dialog) ## ✨ Что умеет бот
- **Domain** - бизнес-логика и доменные модели
- **Infrastructure** - технические детали (БД, API, планировщик)
## Технологический стек ### Для студентов
- aiogram 3.x - Telegram Bot API Переходите по ссылке или QR-коду — и сразу попадаете в тест. Никаких регистраций и лишних шагов. Отвечаете на вопросы кнопками, видите таймер с оставшимся временем, получаете результат мгновенно после завершения. Если разрешено — можете пересдать и улучшить балл.
- aiogram-dialog - state machine для диалогов
- dishka - Dependency Injection
- SQLAlchemy 2.x async - ORM для PostgreSQL
- Alembic - миграции БД
- APScheduler - фоновые задачи
- httpx - HTTP-клиент
- Pydantic - валидация конфигурации
## Структура проекта ### Для преподавателей
``` Создавайте тесты с разными типами вопросов: один правильный ответ, несколько или свободный ввод. Прикрепляйте изображения к вопросам. Настраивайте под себя:
src/trudex/
├── application/ # Слой приложения - ⏱️ Лимит времени на весь тест
│ └── bot/ - К*оличество попыток пересдачи
│ ├── middlewares/ # Промежуточные обработчики - 📅 Дату автоматической деактивации
│ ├── user_dialogs/ # Диалоги пользователей - Пароль для доступа
│ ├── admin_dialogs/# Диалоги администраторов - 🎓 Привязку к конкретной группе
│ └── handlers.py # Обработчики событий
├── domain/ # Доменный слой Делитесь тестом через ссылку или QR-код. Смотрите кто прошёл, с каким результатом, какие ответы давал. Выгружайте статистику по группе в Excel — с оценками, процентом сдачи и средним баллом.
│ └── schemas.py # Доменные модели
└── infrastructure/ # Инфраструктурный слой ## Установка
├── api/ # Внешние API
├── database/ # Работа с БД ```bash
│ ├── dao/ # Data Access Objects uv sync
│ ├── models.py # ORM модели cp config.example.toml config.toml
│ └── config.py # Конфигурация БД # отредактируйте config.toml
├── scheduling/ # Фоновые задачи alembic upgrade head
└── utils/ # Утилиты и конфигурация python -m quizzi.application
``` ```
## Запуск ## 📄 Лицензия
1. Установить зависимости: `uv sync` MIT
2. Настроить `config.toml`
3. Запустить миграции: `alembic upgrade head`
4. Запустить бота: `python -m trudex`