TGViewer
CodeShadow CodeShadow @codeshadowcources · 76 subscribers
Post #780 7

Forwarded from Григорий IT://home (Grigoriy Chepel)

🎮 Как мы внедрили геймификацию в работу преподавателей

Геймификация давно вышла за пределы игрового пространства

- В Duolingo тебя мотивируют серии дней, XP и лиги
- В Яндекс Плюсе - задания, баллы и уровни
- В фитнес-приложении Strava - челленджи, прогресс и достижения

По сути, обычные действия превращаются в понятную систему целей, наград и наблюдения за своим прогрессом

Мы решили попробовать похожий подход внутри INNOPROG - только применить его к работе преподавателей и сделали систему внутренних баллов - иннопрожек (IP)

Преподаватель работает как обычно, а система сама смотрит на его показатели - проведённые занятия, сданные отчёты, отправленные записи занятий, взаимодействие с учеником вне занятий в чате и т.д.

На основе этих показателей считается эффективность работы за день и автоматически начисляются IP

То есть это не просто "провёл урок - получил баллы" - у каждого показателя есть свой вес


А дальше самое приятное - накопленные IP можно тратить во внутреннем магазине

Сейчас в качестве награды пока что используются промокоды, однако сама механика позволяет спокойно расширять каталог чем угодно

———

⚙️ Немного про разработку

По итогу нашей работы получился отдельный сервис внутри онлайн-платформы INNOPROG, который:

- собирает данные о работе преподавателей из внутреннего API INNOPROG

- каждый день автоматически формирует статистику

- начисляет внутреннюю валюту

- ведёт полную историю операций

- считает "ранги" преподавателей метрики эффективности

- следит за лимитами промокодов

- позволяет покупать награды за накопленные IP


Причём, механика работы такова, что статистику нельзя просто один раз посчитать и забыть - например, отчёт или запись занятия могут появиться не сразу, а спустя несколько дней

Поэтому система периодически пересчитывает и при необходимости корректирует начисления

Плюс важно было сделать так, чтобы случайный повторный запуск расчётов ничего не ломал и не начислял IP по много раз - это кстати называется идемпотентностью

Идемпотентность - это когда повторный запуск одной и той же операции не приводит к дополнительным изменениям состояния

В нашем случае это значит, что повторный пересчёт не должен второй раз начислить те же IP


Под капотом у всего этого дела:

- фронтенд на React👩‍💻 + TypeScript 👩‍💻
- серверная часть на FastAPI👩‍💻
- БД PostgreSQL👩‍💻
- APScheduler для ежедневных автоматических расчётов 🕓
- Docker для контейнеризации 👩‍💻
- GitHub Actions для автоматического запуска тестов при изменениях в бэкенде⚙️

До окончательного релиза на онлайн-платформе INNOPROG, деплоил бэк сервис через Railway - удобная штука для запуска небольших проектов в облаке

Деплой - процесс развёртывания проекта в облаке, чтобы он постоянно работал онлайн и стал доступен пользователям


К посту как раз прикрепил демонстрацию того, как всё это в итоге выглядит со стороны преподавателя 👆
Ну и заодно хвалюсь своими показателями за неделю, о гордыня-гордыня😁

Я взял на себя разработку бэкенд-части сервиса, но работали мы в команде вместе с Артемием (@MifmanRu) и Вадимом (@VadimKokorev)

Вадим, как фронтендер проекта, сделал удобный и наглядный интерфейс - как раз на видео можете его оценить

Артемий взял на себя руководство разработкой и взаимодействие с INNOPROG по административной и бизнес-части проекта

У Артемия, кстати, тоже есть свой канал - https://t.me/codeshadowcources, можете заглянуть 👀


Мне вообще нравится такой тип задач, когда с нуля строишь систему с достаточно большой внутренней логикой - экономикой, аналитикой, автоматическими расчётами и многим другим

Проект получился интересный, запустили его недавно, сейчас активно тестим и ждём фидбэк от наших пользователей - преподавателей👨‍🏫

#project #backend #python #fastapi #database
  • ⚡ 2
More from @codeshadowcources
  1. Oct 8, 2026Наш внутренний проект для преподавателей. Думаю, получилось отлично)
  2. Oct 6, 2026😎
  3. Oct 3, 2026😐
  4. Sep 27, 2026Пусть Codex или Claude сами напишут MCP Теперь кейс посерьёзнее. Допустим, приходит клиент…
  5. Sep 25, 2026Что вообще продавать клиенту? Представим обычный бизнес. ✏️ Есть CRM. 🐹 Есть база клиенто…
  6. Sep 23, 2026Пишем свой MCP на Python 💻 В прошлом посте разобрались, что MCP позволяет дать нейросети…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →