MVP веб-приложения для изучения карточек с ролевой моделью (студент / преподаватель / учебный офис).
# 1. Установить зависимости
pip install -r requirements.txt
# 2. Запустить сервер
uvicorn main:app --reloadОткройте браузер: http://localhost:8000
При первом запуске автоматически создаются таблицы и тестовые данные.
| Роль | Пароль | |
|---|---|---|
| Учебный офис | office@example.com | office123 |
| Преподаватель | teacher@example.com | teacher123 |
| Студент | student@example.com | student123 |
| URL | Описание | Доступ |
|---|---|---|
/ |
Главная / дашборд | Все |
/login |
Вход | Все |
/register |
Регистрация | Все |
/study |
Упражнение с карточками | Все авторизованные |
/packs |
Управление паками и карточками | Все авторизованные |
/teacher-groups |
Управление паками в группах | Преподаватель, офис |
/admin |
Создание групп, преподавателей | Только офис |
/profile |
Профиль студента / выбор группы | Студент |
| Метод | Путь | Описание |
|---|---|---|
| POST | /auth/register | Регистрация студента |
| POST | /auth/login | Вход → JWT токен |
| GET | /auth/me | Текущий пользователь |
| GET | /packs | Мои паки |
| POST | /packs | Создать пак |
| POST | /packs/cards | Добавить карточку |
| PUT | /packs/cards/{id} | Редактировать карточку |
| GET | /packs/{id}/export | Экспорт пака в JSON |
| POST | /packs/import | Импорт пака из JSON |
| GET | /study/next | Следующая карточка для повторения |
| POST | /study/review/{id} | Ответить на карточку |
| GET | /study/stats | Статистика на сегодня |
| GET | /groups | Список групп |
| POST | /groups/{id}/packs | Добавить пак в группу |
| PATCH | /groups/{id}/packs/{pack_id}/hide | Скрыть/показать пак |
| POST | /admin/groups | Создать группу (офис) |
| POST | /admin/teachers | Создать преподавателя (офис) |
- Знаю: интервал увеличивается (1 → 3 → 7 → 14 → 30 → ... → макс 180 дней)
- Не знаю: интервал сбрасывается до 1 дня
- Акцент: интервал делится пополам (карточка появляется вдвое чаще)
- Карточки попадают в упражнение, когда
next_review_date <= сегодня
cards_lms/
├── main.py # точка входа FastAPI
├── database.py # SQLite engine, SessionLocal
├── models.py # SQLAlchemy модели
├── schemas.py # Pydantic схемы
├── auth.py # JWT утилиты, зависимости
├── seed.py # начальные данные
├── requirements.txt
├── routers/
│ ├── auth.py # регистрация, логин
│ ├── packs.py # CRUD паков и карточек, экспорт/импорт
│ ├── study.py # упражнение, SM-2
│ ├── groups.py # управление паками в группах
│ └── admin.py # панель учебного офиса
├── templates/ # Jinja2 + vanilla JS
└── static/ # CSS/JS (пустая, для расширения)