mirror of
https://github.com/koloideal/Quizzi.git
synced 2026-06-10 02:15:29 +03:00
update
This commit is contained in:
@@ -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`
|
|
||||||
|
|||||||
Reference in New Issue
Block a user