Skip to content

Автоматизированная система на Streamlit для сведения рейтинга студентов из разрозненных Excel/CSV таблиц (оценки, посещаемость, активности) с гибким расчетом баллов и экспортом итогового отчета

License

Notifications You must be signed in to change notification settings

Forman75/StudentRankingSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система оценки студентов

Это приложение на базе Streamlit, предназначенное для автоматизированного сбора, анализа и формирования единого рейтинга студентов. Система принимает на вход разрозненные Excel и CSV таблицы (ведомости посещаемости, списки оценок, данные об участии в мероприятиях), автоматически распознает их структуру и рассчитывает итоговые баллы.

Основные возможности

1) Авто-распознавание типа таблиц

Система пытается автоматически определить, что вы загрузили:

  • Посещаемость (колонки-датчики/даты, маркеры + / Н / У или 1/0, да/нет)
  • Успеваемость (оценки 2–5, "зачёт/незачёт", баллы 0–100 и т.п.)
  • Активности (длинный текст, ключевые слова: конференция/публикация/CTF/хакатон/олимпиада и т.д.)

При необходимости тип и колонки можно поправить вручную в блоке “Контроль распознавания”.

2) Активности считаются “по событиям”

Если в одной ячейке указано несколько мероприятий, система разделит их на отдельные события и начислит баллы каждому отдельно:

  • разделители: переносы строк, ;, маркеры списков
  • для каждого события определяется тип, роль, доказательство (URL)

3) Два режима активностей

  • Режим формы (строгий): если нет URL-доказательства — баллы не начисляются, а в отчёте качества появляются ошибки.
  • Доверенная таблица организаторов: можно загружать списки от преподавателей/организаторов (без ссылок и без строгого формата).

В интерфейсе для каждого листа можно включить галочку:

“Доверенная таблица организаторов (можно без ссылок и строгого формата)”

4) Отчёт о качестве данных и дубли

Система строит:

  • Quality report (ошибки/предупреждения по активностям): отсутствие доказательств, неправильный формат, нераспознанный тип и т.п.
  • Duplicates report: найденные дубли активностей (начисление пропущено/удалено второй раз)

5) Экспорт в Excel

Формируются:

  • Рейтинг
  • Свод начислений
  • Детализация начислений
  • Свод по группам
  • (опционально) вкладки Quality и Duplicates

Установка и запуск

Требования

  • Python 3.10+
  • Библиотеки из requirements.txt

Запуск приложения

Поместите все файлы в одну директорию (или настройте структуру пакетов, если используете папку core/) и выполните команду:

streamlit run app.py

Приложение откроется в браузере по адресу http://localhost:8501.

Как пользоваться

  1. Загрузите файлы (можно сразу несколько): .xlsx и/или .csv
  2. В разделе “Контроль распознавания” проверьте:
    • правильность типа таблицы (посещаемость/оценки/активности)
    • выбор колонок ФИО / Группа / Номер студенческого билета
    • список колонок активности/оценок/посещаемости
  3. Для таблиц активностей:
    • включите “Доверенная таблица организаторов” для таблиц преподавателей/организаторов
    • для Google Forms-таблиц оставляйте режим по умолчанию (строгий)
  4. Нажмите “Сформировать итоговый отчёт (рейтинг + начисления)”
  5. Скачайте Excel-отчёт

Как считаются баллы (простая логика)

Успеваемость

  1. Из таблицы извлекаются оценки (2–5) или баллы (0–100 → переводятся в 2–5 порогами).
  2. Считается средняя оценка по всем найденным дисциплинам.
  3. Перевод в коэффициент 0..1: (avg_grade - 2) / 3
  4. Баллы: coef * acad_max (настраивается в UI)

Посещаемость

  1. Считается: present / (present + absent)
  2. Если ниже порога threshold — баллы 0.
  3. Иначе: rate * att_max

Активности

Суммируются баллы событий по таблице баллов в интерфейсе: activity_points[kind][role]


Форматы входных данных

Forms (активности)

Выгрузка может содержать поля:

  • ФИО
  • Учебная группа
  • Номер студенческого билета
  • Длинный текст “Укажите мероприятия…” / “Укажите научную деятельность…”

Рекомендуемый формат событий (строгий режим формы):

  • Мероприятие - Статус - Доказательство(URL)
  • Активность - Статус - Доказательство(URL)

Можно указывать несколько строк (каждое событие с новой строки).

Таблицы организаторов/преподавателей

Могут быть форматы:

  • списки участников
  • таблицы докладов/секций/тем

Для таких таблиц включайте: “Доверенная таблица организаторов”
Тогда доказательства/строгий формат не обязательны.


Сохранённые профили распознавания

Система может сохранять профиль для структуры таблицы (по сигнатуре колонок), чтобы при повторной загрузке не настраивать заново.

Если таблица внезапно распознаётся неправильно:

  • откройте лист в “Контроль распознавания”
  • исправьте тип/колонки
  • нажмите “Сохранить профиль распознавания”

Сброс профилей

Если нужно полностью сбросить распознавание, удалите profiles.json (путь определяется в core/utils.py).


Ручные начисления

В интерфейсе есть блок “Ручные достижения / доп. начисления”. Можно добавить:

  • активность (пойдёт в активность)
  • доп. баллы (сразу в итог)

Структура проекта

  • app.py — Streamlit UI и orchestration
  • core/ingest.py — чтение Excel/CSV
  • core/header_detect.py — поиск блока заголовков
  • core/infer.py — распознавание схемы таблицы (тип, колонки)
  • core/extract.py — извлечение evidence (оценки/посещения/активности)
  • core/dedupe.py — дедупликация активностей
  • core/scoring.py — расчёт итогов
  • core/export.py — экспорт Excel
  • core/manual.py — ручные начисления
  • core/utils.py — утилиты/пути/нормализация

About

Автоматизированная система на Streamlit для сведения рейтинга студентов из разрозненных Excel/CSV таблиц (оценки, посещаемость, активности) с гибким расчетом баллов и экспортом итогового отчета

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages